流程圖是設計程式的已知範例。 流程圖活動通常用於實作非循序工作流程,但如果不使用FlowDecision節點,也可用於循序工作流程。
流程圖工作流程結構
流程圖活動是一種包含多個需執行活動的綜合活動。 流程圖還包含流程控制元素,例如 FlowDecision 和 FlowSwitch<T>,用於根據變數的值指導在包含的活動之間的執行。
流程節點的類型
根據專案執行時所需的流程控制類型,使用不同的項目類型。 流程圖元素的類型包括:
FlowStep- 在流程圖中建立執行一個步驟的模型。FlowDecision- 根據布林條件執行分支,類似於 If。FlowSwitch– 基於獨佔開關的分支執行,類似於 Switch<T>。
每個連結都有一個 Action 屬性,定義 ActivityAction 可用來執行子活動的,以及定義當目前專案完成執行時要執行的專案或元素的一或多個 Next 屬性。
使用 FlowStep 節點建立基本活動順序
使用 FlowStep 元素來建立兩個活動依序執行的基本序列模型。 在下列範例中,會使用兩 FlowStep 個元素依序執行兩個活動。
<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>
使用 FlowDecision 節點建立條件式流程圖
要在流程圖工作流程中建立條件式流程節點模型(即建立用於傳統流程圖決策符號的連結),可以使用 FlowDecision 節點。 節點的Condition屬性被設為一個定義條件的表達式,而當該表達式的評估結果為True或False時,FlowNode和true屬性會被設定為false的實例以執行。 下列範例示範如何定義使用節點的 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>
使用 FlowSwitch 節點建立獨佔交換器
若要建立流程圖模型,其中會根據相符值選取一個獨佔路徑,則使用 FlowSwitch<T> 節點。 屬性 Expression 會設定為 Activity<TResult> ,其型別參數 Object 會定義要比對選項的值。 屬性 Cases 會定義索引鍵和 FlowNode 物件的字典,以符合條件表達式,以及一組 FlowNode 對象,定義如果指定的案例符合條件表達式,執行應該如何流動。 FlowSwitch<T>也會定義 Default 屬性,這個屬性會定義如果沒有任何案例符合條件表達式,則執行應該如何流動。 下列範例示範如何定義使用 FlowSwitch<T> 元素的工作流程。
<Flowchart>
<FlowSwitch>
<FlowStep x:Key="Red">
<WriteRed/>
</FlowStep>
<FlowStep x:Key="Blue">
<WriteBlue/>
</FlowStep>
<FlowStep x:Key="Green">
<WriteGreen/>
</FlowStep>
</FlowSwitch>
</Flowchart>