共用方式為


流程圖工作流程

流程圖是設計程式的已知範例。 流程圖活動通常用於實作非循序工作流程,但如果不使用FlowDecision節點,也可用於循序工作流程。

流程圖工作流程結構

流程圖活動是一種包含多個需執行活動的綜合活動。 流程圖還包含流程控制元素,例如 FlowDecisionFlowSwitch<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屬性被設為一個定義條件的表達式,而當該表達式的評估結果為TrueFalse時,FlowNodetrue屬性會被設定為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>