次の方法で共有


フローチャート ワークフロー

フローチャートは、プログラムを設計するためのよく知られたパラダイムです。 フローチャート アクティビティは通常、非シーケンシャル ワークフローを実装するために使用されますが、 FlowDecision ノードが使用されていない場合は、シーケンシャル ワークフローに使用できます。

フローチャート ワークフロー構造

フローチャート活動は、実行される活動の集合を含む活動です。 フローチャートには、変数の値に基づいて含まれるアクティビティ間で直接実行する FlowDecisionFlowSwitch<T> などのフロー制御要素も含まれています。

フロー ノードの種類

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

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

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

  • FlowSwitchSwitch<T>と同様に、排他スイッチに基づいて実行を分岐します。

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

FlowStep ノードを使用した基本的なアクティビティ シーケンスの作成

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

<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 ノードを使用した排他スイッチの作成

一致する値に基づいて 1 つの排他的パスが選択されるフローチャートをモデル化するには、 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>