Przepływy pracy schematów blokowych
Schemat blokowy to dobrze znany paradygmat projektowania programów. Działanie schematu blokowego jest zwykle używane do implementowania niesekwencyjnych przepływów pracy, ale może służyć do sekwencyjnych przepływów pracy, jeśli nie FlowDecision
są używane żadne węzły.
Struktura przepływu pracy schematu blokowego
Działanie schematu blokowego to działanie, które zawiera kolekcję działań do wykonania. Schematy blokowe zawierają również elementy sterowania przepływem, takie jak FlowDecision i FlowSwitch<T> bezpośrednie wykonywanie między zawartymi działaniami na podstawie wartości zmiennych.
Typy węzłów przepływu
Różne typy elementów są używane w zależności od typu sterowania przepływem wymaganego podczas wykonywania elementu. Typy elementów schematu blokowego obejmują:
FlowStep
— Modeluje jeden krok wykonywania w schemacie blokowym.FlowDecision
— Wykonywanie gałęzi na podstawie warunku logicznego, podobnego do If.FlowSwitch
— Wykonywanie gałęzi na podstawie przełącznika wyłącznego, podobnego do Switch<T>.
Każdy link ma właściwość definiującą Action
ActivityAction element , który może służyć do wykonywania działań podrzędnych, oraz co najmniej jedną Next
właściwość definiującą element lub elementy do wykonania po zakończeniu wykonywania bieżącego elementu.
Tworzenie podstawowej sekwencji działań za pomocą węzła FlowStep
Aby modelować podstawową sekwencję, w której wykonywane są z kolei dwa działania, FlowStep
używany jest element. W poniższym przykładzie dwa FlowStep
elementy są używane do wykonywania dwóch działań w sekwencji.
<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>
Tworzenie schematu blokowego warunkowego za pomocą węzła FlowDecision
Aby modelować węzeł przepływu warunkowego w przepływie pracy schematu blokowego (czyli w celu utworzenia łącza, który działa jako symbol decyzyjny tradycyjnego schematu blokowego), FlowDecision używany jest węzeł. Właściwość Condition węzła jest ustawiona na wyrażenie, które definiuje warunek, a True właściwości i False są ustawione na FlowNode wystąpienia do wykonania, jeśli wyrażenie zwróci wartość true
lub false
. W poniższym przykładzie pokazano, jak zdefiniować przepływ pracy korzystający z węzła 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>
Tworzenie przełącznika wyłącznego za pomocą węzła FlowSwitch
Aby modelować schemat blokowy, w którym wybrano jedną ścieżkę wyłączną na podstawie pasującej wartości, FlowSwitch<T> używany jest węzeł. Właściwość jest ustawiona Expression na Activity<TResult> parametr typu Object , który definiuje wartość, aby dopasować opcje do wyboru. Właściwość Cases definiuje słownik kluczy i FlowNode obiektów, które mają być zgodne z wyrażeniem warunkowym, oraz zestaw FlowNode obiektów definiujących sposób przepływu wykonywania, jeśli dany przypadek jest zgodny z wyrażeniem warunkowym. Definiuje FlowSwitch<T> również właściwość definiującą Default sposób przepływu wykonywania, jeśli żadne przypadki nie są zgodne z wyrażeniem warunku. W poniższym przykładzie pokazano, jak zdefiniować przepływ pracy, który używa FlowSwitch<T> elementu.
<Flowchart>
<FlowSwitch>
<FlowStep x:Key="Red">
<WriteRed/>
</FlowStep>
<FlowStep x:Key="Blue">
<WriteBlue/>
</FlowStep>
<FlowStep x:Key="Green">
<WriteGreen/>
</FlowStep>
</FlowSwitch>
</Flowchart>