本文介绍了并行状态及其相关使用示例。
基本概念
并行状态用来并行执行多个状态。它定义了多个分支(Branches),每个分支包含一系列状态。
执行并行状态会并发执行所有分支包含的状态。当所有分支执行结束后,默认将输出一个包含所有分支结果的map[string]any,然后可以通过输出构造器将结果进行进一步处理。
说明
并行状态最大分支数限制为50。
并行状态包含以下属性。
字段 | 类型 | 是否必选 | 描述 | 示例值 |
Name | string | 是 | 状态名称。 | my-state-name |
Description | string | 否 | 状态描述。 | describe it here |
Type | string | 是 | 状态类型。 | Parallel |
InputConstructor | map[string]any | 否 | 输入构造器。 | 请参见输入和输出 |
Branches | ParallelBranch | 是 | 并行分支。 | |
OutputConstructor | map[string]any | 否 | 输出构造器。 | 请参见状态输出构造器 |
Next | string | 否 | 当前状态的下一状态。当End取值为true时,无需指定。 | my-next-state |
End | bool | 否 | 是否为当前作用域的终结节点。 | true |
Retry | Retry | 否 | 重试配置 | 请参见 错误处理 |
Catch | Catch | 否 | 捕获配置 | 请参见 错误处理 |
ParallelBranch
字段 | 类型 | 是否必选 | 描述 | 示例值 |
States | array | 是 | 内部嵌套的状态数组。 | |
StartAt | string | 是 | 内部嵌套状态数组的执行起点。 | my start task |
使用示例
下面的示例流程定义了一个并行步骤,这个并行步骤包含两个分支,每个分支又包含了一个传递步骤。
Type: StateMachine
Name: my-wkfl
SpecVersion: v1
StartAt: Parallel1
States:
- Type: Parallel
Name: Parallel1
End: true
Branches:
- StartAt: Pass1
States:
- Type: Pass
Name: Pass1
End: true
OutputConstructor:
FieldA: 123
- StartAt: Pass2
States:
- Type: Pass
InputConstructor:
FieldA: 321
Name: Pass2
End: true
Pass1的输出如下。
{ "FieldA": 123 }
Pass2的输出如下。
{ "FieldA": 321 }
Parallel1的输出如下,每个Branch会提供默认的名称,按照"Branch<Index>"的格式组织结果。
{ "Branch0": { "FieldA": 123 }, "Branch1": { "FieldA": 321 } }