Workflows d'organigramme
Cette rubrique s'applique à Windows Workflow Foundation 4.
Un organigramme est un paradigme connu pour la conception de programmes. L'activité Organigramme est généralement utilisée pour implémenter des workflows non séquentiels, mais elle peut être utilisée pour les workflows séquentiels en l'absence de nœud FlowDecision.
Structure du workflow d'organigramme
Une activité Organigramme est une activité qui contient une collection de nœuds de flux héritant de FlowNode. Les nœuds de flux peuvent contenir des activités enfants à exécuter, ainsi que diriger l'exécution vers d'autres nœuds de flux.
Types de nœuds de flux
Les types d'éléments utilisés varient en fonction du type de contrôle de flux requis lors de l'exécution d'un élément. Les types d'éléments d'organigramme sont les suivants :
FlowStep- modélise une seule étape d'exécution dans l'organigramme.
FlowDecision- lie l'exécution à une condition booléenne, semblable à If.
FlowSwitch – lie l'exécution à un commutateur exclusif, semblable à Switch.
Chaque lien a une propriété Action qui définit un ActivityAction à utiliser pour exécuter des activités enfants, et une ou plusieurs propriétés Next qui définissent l'élément ou les éléments à exécuter à la fin de l'exécution de l'élément.
Création d'une séquence d'activités de base avec un nœud FlowStep
Pour modéliser une séquence de base dans laquelle deux activités s'exécutent l'une après l'autre, l'élément FlowStep est utilisé. Dans l'exemple suivant, deux éléments FlowStep sont utilisés pour exécuter deux activités dans l'ordre indiqué.
<Flowchart>
<FlowStep>
<Read Result = "[result]"/>
<FlowStep.Next>
<FlowStep>
<Write Text="[Hello + result]"/>
</FlowStep>
</FlowStep.Next>
</FlowStep>
</Flowchart>
Création d'un organigramme conditionnel avec un nœud FlowDecision
Pour modéliser un nœud de flux conditionnel dans un workflow d'organigramme (autrement dit, créer un lien qui fonctionne comme le symbole de décision d'un organigramme classique), un nœud FlowDecision est utilisé. La propriété Condition du nœud est définie sur un élément WorkflowElement qui détermine la condition, et les propriétés True et False sont définies sur les instances FlowNode à exécuter si l'expression a la valeur true ou false. L'exemple suivant indique comment définir un workflow qui utilise un nœud FlowDecision.
<Flowchart>
<FlowStep>
<Read Result="[s]"/>
<FlowStep.Next>
<FlowDecision>
<IsEmpty Input="[s]" />
<FlowDecision.True>
<FlowStep>
<Write Text="Empty"/>
</FlowStep>
</FlowDecision.True>
<FlowDecision.False>
<FlowStep>
<Write Text="Non-Empty"/>
</FlowStep>
</FlowDecision.False>
</FlowDecision>
</FlowStep.Next>
</FlowStep>
</Flowchart>
Création d'un commutateur exclusif avec un nœud FlowSwitch
Pour modéliser un organigramme dans lequel un chemin d'accès exclusif est sélectionné selon une valeur correspondante, le nœud FlowSwitch est utilisé. La propriété Expression est définie sur un élément WorkflowElement’1 avec un paramètre de type Object qui détermine la valeur de correspondance, et la propriété Cases définit un dictionnaire de clés et d'objets FlowNode à mettre en correspondance avec l'expression conditionnelle, ainsi qu'un jeu d'objets FlowNode qui détermine le flux de l'exécution si une correspondance est établie avec l'expression conditionnelle. FlowSwitch définit également une propriété Default qui détermine le flux de l'exécution si aucune correspondance n'est établie avec l'expression conditionnelle. L'exemple suivant montre comment définir un workflow qui utilise un élément FlowSwitch.
<Flowchart>
<FlowSwitch>
<FlowSwitch.Expression>
<ReadColor/>
</FlowSwitch.Expression>
<FlowStep x:Key="Red">
<WriteRed/>
</FlowStep>
<FlowStep x:Key="Blue">
<WriteBlue/>
</FlowStep>
<FlowStep x:Key="Green">
<WriteGreen/>
</FlowStep>
</FlowSwitch.Cases>
</FlowSwitch>
</Flowchart>