并行步骤

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

介绍

并行(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"]
    }