本文介绍了并行循环步骤和其相关使用示例。

介绍

并行(Parallel)步骤用来并行执行多个步骤。它定义了多个分支(Branches),每个分支包含一系列串行步骤。

并行步骤的每个分支都对应一个本地变量。执行并行步骤会并发执行所有分支包含的串行步骤。这些串行步骤会改变其分支对应的本地变量。当所有分支执行结束后,可以通过输出映射将分支本地变量数组转换为并行步骤的输出。

说明 并行步骤最大分支数限制为 100。

并行步骤包含以下属性:

  • type(必需):parallel,表示该步骤是并行步骤。
  • name(必需):步骤名称。
  • branches(必需): 多个分支,数组类型,每个元素对应一个分支。
    • steps(必需):定义了分支所对应的多个串行步骤。
  • end(可选):当前步骤结束后是否继续执行其后定义的步骤。
  • inputMappings(可选):输入映射。
  • outputMappings(可选):输出映射。本步骤的 $local 是数组类型,其中的每个元素是一个 JSON 对象,记录了每个分支步骤执行的结果。
    说明 如果未指定输出映射,本步骤默认输出为空。

示例

下面的示例流程定义了一个并行步骤,这个并行步骤包含两个分支,每个分支又包含了一个传递步骤。

version: v1
type: flow
steps:
  - type: parallel
    name: myparallel
    branches:
      - steps:
        - type: pass
          name: pass1
          outputMappings:
            - target: result
              source: pass1
      - steps:
        - type: pass
          name: pass2
          outputMappings:
            - target: result
              source: pass2
    outputMappings:
      - target: result
        source: $local[*].result          
  • pass1 的输出如下。
    {
      "result": "pass1"
    }          
  • pass2 的输出如下。
    {
      "result": "pass2"
    }           
  • myparallel 的输出如下。
    {
      "result": ["pass1", "pass2"]
    }