IChainableNodeインターフェース

Namespace: Microsoft.Azure。Workflows.Sdk

ワークフロー操作を逐次および並列実行パイプラインに構成するための流暢なチェイン契約を Then() メソッドパターンを用いて定義します。 IWorkflowOperationOperationChainの両方がこのインターフェースを実装しているため、線形ワークフローと分岐ワークフローを流暢に合成できます。

使用状況

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);