Flowchart のワークフロー

このトピックの内容は、Windows Workflow Foundation 4 に該当します。

フローチャートは、プログラムを診断するための既知のパラダイムです。通常、Flowchart アクティビティはシーケンシャル以外のワークフローを実装するために使用されますが、FlowDecision ノードが使用されない場合は、シーケンシャル ワークフローにも使用できます。

Flowchart のワークフロー構造

Flowchart アクティビティは、FlowNode から継承したフロー ノードのコレクションを含むアクティビティです。フロー ノードには、実行する子アクティビティと、他のフロー ノードに対する直接実行を含むことができます。

フロー ノードの種類

要素の実行時に必要なフロー制御の種類に応じて、さまざまな種類の要素が使用されます。フローチャート要素には次のような種類があります。

  • FlowStep - フローチャートの実行の 1 ステップをモデル化します。

  • FlowDecision - If と同様に、ブール条件に基づいて実行を分岐します。

  • FlowSwitch - Switch と同様に、排他的スイッチに基づいて実行を分岐します。

各リンクには、子アクティビティの実行に使用できる ActivityAction を定義した Action プロパティと、要素の実行が完了したときに実行する 1 つ以上の要素を定義した 1 つ以上の Next プロパティがあります。

FlowStep ノードによる基本的な Activity Sequence の作成

2 つのアクティビティを連続して実行する基本的なシーケンスをモデル化するには、FlowStep 要素を使用します。次の例では、2 つの FlowStep 要素を使用して 2 つのアクティビティを連続して実行しています。

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

FlowDecision ノードによる条件付きフローの作成

フローチャート ワークフローの条件付きフロー ノードをモデル化するには (つまり、従来のフローチャートの決定シンボルとして機能するリンクを作成するには)、FlowDecision ノードを使用します。ノードの Condition プロパティは、条件を定義する WorkflowElement に設定されます。また、True プロパティと False プロパティは、式が true または false に評価された場合に実行される 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 ノードによる排他的スイッチの作成

一致する値に基づいて 1 つの排他的パスを選択するフローチャートをモデル化するには、FlowSwitch ノードを使用します。Expression プロパティは WorkflowElement’1 に設定されます。この型パラメーターは Object で、選択に一致する値を定義します。また、Cases プロパティは、条件式に対して一致するキーと FlowNode オブジェクトのディクショナリ、および特定のケースが条件式に一致する場合の実行フローを定義する 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>