Werkstromen voor stroomdiagrammen
Een stroomdiagram is een bekend paradigma voor het ontwerpen van programma's. De activiteit Stroomdiagram wordt doorgaans gebruikt voor het implementeren van niet-sequentiële werkstromen, maar kan worden gebruikt voor sequentiële werkstromen als er geen FlowDecision
knooppunten worden gebruikt.
Werkstroomstructuur stroomdiagram
Een stroomdiagramactiviteit is een activiteit die een verzameling activiteiten bevat die moeten worden uitgevoerd. Stroomdiagrammen bevatten ook elementen voor stroombeheer, zoals FlowDecision en FlowSwitch<T> die directe uitvoering tussen ingesloten activiteiten op basis van de waarden van variabelen.
Typen stroomknooppunten
Verschillende typen elementen worden gebruikt, afhankelijk van het type stroombeheer dat is vereist wanneer het element wordt uitgevoerd. Typen stroomdiagramelementen zijn onder andere:
FlowStep
- Modellen één stap van de uitvoering in het stroomdiagram.FlowDecision
- Vertakkingen uitvoeren op basis van een Booleaanse voorwaarde, vergelijkbaar met If.FlowSwitch
– Vertakkingen uitvoeren op basis van een exclusieve switch, vergelijkbaar met Switch<T>.
Elke koppeling heeft een Action
eigenschap die een ActivityAction eigenschap definieert die kan worden gebruikt voor het uitvoeren van onderliggende activiteiten en een of meer Next
eigenschappen die bepalen welk element of welke elementen moeten worden uitgevoerd wanneer het huidige element is uitgevoerd.
Een basisactiviteitsreeks maken met een FlowStep-knooppunt
Het element wordt gebruikt om een basisvolgorde te modelleren waarin twee activiteiten worden FlowStep
uitgevoerd. In het volgende voorbeeld worden twee FlowStep
elementen gebruikt om twee activiteiten op volgorde uit te voeren.
<Flowchart>
<FlowStep>
<Assign DisplayName="Get Name">
<Assign.To>
<OutArgument x:TypeArguments="x:String">[result]</OutArgument>
</Assign.To>
<Assign.Value>
<InArgument x:TypeArguments="x:String">["User"]</InArgument>
</Assign.Value>
</Assign>
<FlowStep.Next>
<FlowStep>
<WriteLine Text="Hello, " & [result]/>
</FlowStep>
</FlowStep.Next>
</FlowStep>
</Flowchart>
Een voorwaardelijk stroomdiagram maken met een FlowDecision-knooppunt
Een knooppunt voor voorwaardelijke stroom modelleren in een stroomdiagramwerkstroom (dat wil gezegd, een koppeling maken die fungeert als het beslissingssymbool van een traditioneel stroomdiagram), wordt een FlowDecision knooppunt gebruikt. De Condition eigenschap van het knooppunt is ingesteld op een expressie die de voorwaarde definieert en de True eigenschappen False worden ingesteld op FlowNode exemplaren die moeten worden uitgevoerd als de expressie resulteert in true
of false
. In het volgende voorbeeld ziet u hoe u een werkstroom definieert die gebruikmaakt van een FlowDecision knooppunt.
<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>
Een exclusieve switch maken met een FlowSwitch-knooppunt
Als u een stroomdiagram wilt modelleren waarin één exclusief pad is geselecteerd op basis van een overeenkomende waarde, wordt het FlowSwitch<T> knooppunt gebruikt. De Expression eigenschap is ingesteld op een Activity<TResult> met een typeparameter waarmee Object de waarde wordt gedefinieerd die moet worden vergeleken met keuzes. De Cases eigenschap definieert een woordenlijst met sleutels en FlowNode objecten die overeenkomen met de voorwaardelijke expressie en een set FlowNode objecten die bepalen hoe de uitvoering moet stromen als de opgegeven case overeenkomt met de voorwaardelijke expressie. De FlowSwitch<T> eigenschap definieert ook een Default eigenschap die definieert hoe de uitvoering moet stromen als er geen gevallen overeenkomen met de voorwaardeexpressie. In het volgende voorbeeld ziet u hoe u een werkstroom definieert die gebruikmaakt van een FlowSwitch<T> element.
<Flowchart>
<FlowSwitch>
<FlowStep x:Key="Red">
<WriteRed/>
</FlowStep>
<FlowStep x:Key="Blue">
<WriteBlue/>
</FlowStep>
<FlowStep x:Key="Green">
<WriteGreen/>
</FlowStep>
</FlowSwitch>
</Flowchart>