共用方式為


Flowchart 工作流程

本主題僅適用於 Windows Workflow Foundation 4。

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

Flowchart 工作流程結構

Flowchart 活動是一種活動,包含繼承自 FlowNode 之流程節點的集合。流程節點可包含要執行以及直接執行其他流程節點的子活動。

流程節點的型別

使用的項目型別,要視項目執行時所需的流程控制型別而定。流程圖項目的型別有:

  • FlowStep - 建立流程圖中一個步驟執行的模型。

  • FlowDecision - 根據 Boolean 條件執行的分支,與 If 相似。

  • FlowSwitch - 根據獨佔開關執行的分支,與 Switch 相似。

每個連結都有 Action 屬性,會定義可用於執行子活動的 ActivityAction,以及一個或多個 Next 屬性,以定義當項目完成執行時要執行哪個項目。

使用 FlowStep 節點建立基礎活動序列

若要建立讓兩個活動從中輪流執行的基礎序列,就要使用 FlowStep 項目。在下列範例中,會使用兩個 FlowStep 項目來依序執行兩個活動。

<Flowchart>
  <FlowStep>
    <Read Result = "[result]"/>
    <FlowStep.Next>
<FlowStep>
        <Write Text="[Hello + result]"/>
</FlowStep>
    </FlowStep.Next>
  </FlowStep>
</Flowchart>

使用 FlowDecision 節點建立條件式流程圖

若要在流程圖工作流程中建立條件式流程節點 (也就是,建立做為傳統流程圖決策符號的連結),就要使用 FlowDecision 節點。節點的 Condition 屬性已設定為定義條件的 WorkflowElement,且 TrueFalse 屬性已設定為當運算式評估為 truefalse 時,要執行的 FlowNode 執行個體。下列範例示範如何定義使用 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 節點。Expression 屬性已設定為 WorkflowElement’1,其中包含定義值以符合選項的 Object 的型別參數,以及定義索引鍵字典和 FlowNode 物件,以符合條件運算式的 Cases 屬性,以及一組FlowNode 物件,這組物件會定義如果指定案例符合條件運算式時,如何進行執行的流程。FlowSwitch 也會定義 Default 屬性,此屬性會定義如果沒有符合條件運算式的情況時,應該要如何進行執行的流程。下列範例示範如何定義使用 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>