Namespace: Microsoft.Azure。Workflows.Sdk
ワークフロー操作を逐次および並列実行パイプラインに構成するための流暢なチェイン契約を Then() メソッドパターンを用いて定義します。
IWorkflowOperationとOperationChainの両方がこのインターフェースを実装しているため、線形ワークフローと分岐ワークフローを流暢に合成できます。
使用状況
var trigger = WorkflowTriggers.BuiltIn.CreateHttpTrigger();
var compose = WorkflowActions.BuiltIn.Compose(inputs: () => "Hello").WithName("Greet");
var response = WorkflowActions.BuiltIn.Response(responseBody: () => $"{compose.Output}").WithName("Reply");
trigger
.Then(compose)
.Then(response);
Methods
それから(IWorkflowAction)
現在のノードが成功裏に完了した後に続く IWorkflowAction をチェーンで実行させます。 これは連続したワークフローを構築する際の標準的なオーバーロードです。
OperationChain Then(IWorkflowAction action)
| 名前 | Description | タイプ | 必須 |
|---|---|---|---|
| アクション | 現在のチェーンに付加するアクション。 | IWorkflowAction | はい |
var trigger = WorkflowTriggers.BuiltIn.CreateHttpTrigger();
var compose = WorkflowActions.BuiltIn.Compose(inputs: () => "Hello").WithName("Greet");
var response = WorkflowActions.BuiltIn.Response(responseBody: () => $"{compose.Output}").WithName("Reply");
trigger
.Then(compose)
.Then(response);
Then(IWorkflowAction, FlowStatus[])
明示的な条件付きで後続FlowStatusを連鎖します。 このオーバーロードは、前回のアクションが指定された状態のいずれかに達した後にのみ実行されるべき場合に適用されます。
OperationChain Then(IWorkflowAction action, FlowStatus[] runAfter)
| 名前 | Description | タイプ | 必須 |
|---|---|---|---|
| アクション | 現在のチェーンに付加するアクション。 | IWorkflowAction | はい |
| runAfter | 付加されたアクションを実行するためのステータス値。 | フローステータス[] | はい |
var trigger = WorkflowTriggers.BuiltIn.CreateHttpTrigger();
var process = WorkflowActions.BuiltIn.Compose(inputs: () => "Process").WithName("Process");
var errorHandler = WorkflowActions.BuiltIn.Compose(inputs: () => "Error occurred").WithName("HandleError");
trigger
.Then(process)
.Then(errorHandler, runAfter: new[] { FlowStatus.Failed, FlowStatus.TimedOut });
Then(IWorkflowAction, RunAfter[])
これは、後続の IWorkflowAction を、前段階ごとの RunAfter 構成で明示的に連結します。 次のアクションが複数の前任者チェーンを待たなければならないファンインのシナリオで、このオーバーロードを活用しましょう。
OperationChain Then(IWorkflowAction action, RunAfter[] runAfter)
| 名前 | Description | タイプ | 必須 |
|---|---|---|---|
| アクション | 設定された前任者が完了した後に付加するアクション。 | IWorkflowAction | はい |
| runAfter | アクションの実行を制御する前段階のランアフター定義です。 | ランアフター[] | はい |
var trigger = WorkflowTriggers.BuiltIn.CreateHttpTrigger();
var leftChain = trigger
.Then(WorkflowActions.BuiltIn.Compose(inputs: () => "Left").WithName("Left"));
var rightChain = trigger
.Then(WorkflowActions.BuiltIn.Compose(inputs: () => "Right").WithName("Right"));
var merged = WorkflowActions.BuiltIn.Compose(inputs: () => "Done").WithName("Merged");
leftChain
.Join(rightChain)
.Then(merged, runAfter: new[]
{
new RunAfter(leftChain, FlowStatus.Succeeded),
new RunAfter(rightChain, FlowStatus.Succeeded),
});
Then(Func<IChainableNode, OperationChain[]>)
現在のノードを複数の並列ブランチに分割します。 コールバックは現在の IChainableNode を受け取り、同じルートノードを共有する OperationChain インスタンスを返さなければなりません。
OperationChain Then(Func<IChainableNode, OperationChain[]> branches)
| 名前 | Description | タイプ | 必須 |
|---|---|---|---|
| branches | 現在のノードから1つ以上の分岐を作成するコールバックです。 | Func<IChainableNode, OperationChain[]> | はい |
var trigger = WorkflowTriggers.BuiltIn.CreateHttpTrigger();
var branch1 = WorkflowActions.BuiltIn.Compose(inputs: () => "Branch 1").WithName("Branch1");
var branch2 = WorkflowActions.BuiltIn.Compose(inputs: () => "Branch 2").WithName("Branch2");
var merged = WorkflowActions.BuiltIn.Compose(inputs: () => "Merged").WithName("Merged");
trigger
.Then(parent => new[]
{
parent.Then(branch1),
parent.Then(branch2),
})
.Then(merged);
関連コンテンツ
- AgentToolContextクラス定義
- IVariableワークフローアクションインターフェース定義
- IWorkflowAction インターフェース定義
- IWorkflowOperation インターフェース定義
- IWorkflowProvider インターフェース定義
- IWorkflowTriggerインターフェース定義
- OperationChainクラスの定義
- タイプ付きワークフローアクションインターフェースの定義
- 型付きワークフロートリガーインターフェースの定義
- WorkflowActionBaseクラス定義
- WorkflowActions クラス定義
- ワークフローBuiltInActionsクラス定義
- ワークフローBuiltInTriggersクラス定義
- WorkflowContextクラス定義
- ワークフローControlActionsクラス定義
- ワークフローファクトリークラス定義
- WorkflowManagedActions クラス定義
- WorkflowManagedTriggers クラス定義
- WorkflowProviderExtensions クラス定義
- WorkflowTriggerBaseクラスの定義
- ワークフロートリガークラス定義
- ワークフロー変数アクションクラス定義