IChainableNode 接口

命名空间: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)
名称 说明 类型 必需
操作 将动作附加到当前链上。 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[])

通过链式链接后续 的IWorkflowAction ,并带有 FlowStatus 显式条件。 当附加动作应仅在前一个动作达到指定状态后运行时,使用该超载。

OperationChain Then(IWorkflowAction action, FlowStatus[] runAfter)
名称 说明 类型 必需
操作 将动作附加到当前链上。 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 });

然后(IWorkflowAction, RunAfter[])

通过显式的前驱配置串联后续RunAfter。 在粉丝互动场景中利用这种过载,比如下一个动作需要等待多个前驱链。

OperationChain Then(IWorkflowAction action, RunAfter[] runAfter)
名称 说明 类型 必需
操作 在配置的前任完成后,该动作要附加。 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),
    });

那么(Func<IChainableNode, OperationChain[]>)

将当前节点拆分为多个并行分支。 回调接收当前的 IChainableNode ,必须返回共享同一根节点的 OperationChain 实例。

OperationChain Then(Func<IChainableNode, OperationChain[]> branches)
名称 说明 类型 必需
branches 回调从当前节点创建一个或多个分支。 Func<IChainableNode操作链[]> 是的
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);