命名空间: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)
| 名称 | 说明 | 类型 | 必需 |
|---|---|---|---|
| 操作 | 将动作附加到当前链上。 | 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);
相关内容
- AgentToolContext 类定义
- 可实现工作流程操作接口定义
- IWorkflowAction 接口定义
- IWorkflowOperation 接口定义
- IWorkflowProvider 接口定义
- IWorkflowTrigger 接口定义
- OperationChain 类定义
- 类型工作流动作接口定义
- 类型化工作流触发器接口定义
- WorkflowActionBase 类定义
- WorkflowActions 类定义
- WorkflowBuiltInActions 类定义
- WorkflowBuiltInTriggers 类定义
- WorkflowContext 类定义
- 工作流程控制行动类定义
- WorkflowFactory 类定义
- WorkflowManagedActions 类定义
- WorkflowManagedTriggers 类定义
- WorkflowProviderExtensions 类定义
- WorkflowTriggerBase 类定义
- 工作流程触发类定义
- WorkflowVariableActions 类定义