フローチャートは、プログラムを設計するためのよく知られたパラダイムです。 フローチャート アクティビティは通常、非シーケンシャル ワークフローを実装するために使用されますが、 FlowDecision
ノードが使用されていない場合は、シーケンシャル ワークフローに使用できます。
フローチャート ワークフロー構造
フローチャート活動は、実行される活動の集合を含む活動です。 フローチャートには、変数の値に基づいて含まれるアクティビティ間で直接実行する FlowDecision や FlowSwitch<T> などのフロー制御要素も含まれています。
フロー ノードの種類
要素の実行時に必要なフロー制御の種類に応じて、さまざまな種類の要素が使用されます。 フローチャート要素の種類は次のとおりです。
FlowStep
- フローチャートの実行の 1 つのステップをモデル化します。FlowDecision
- Ifと同様に、ブール条件に基づいて実行を分岐します。FlowSwitch
– Switch<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>
.NET