创建和使用子工作流

您可以使用子工作流来定义您要多次调用的一个逻辑或一组步骤,从而简化工作流定义。子工作流类似于编程语言中的函数或例程。它们可以接受参数和返回值,从而可让您创建更复杂的工作流,其中包含范围更广的应用。

本页介绍了如何定义子工作流以及如何从工作流中调用子工作流。如需了解基本工作流任务,请参阅创建和更新现有工作流执行工作流

创建使用子工作流的工作流

如需创建子工作流,请执行以下操作:

  1. 在工作流定义顶部添加 main 块:

    main:
       steps:
           - step_name:
               ...
           ...
    

    如果工作流具有子工作流,则主工作流必须放在 main 块中。

  2. 在工作流的主要步骤下定义子工作流:

    main:
       steps:
           - step_name:
               ...
           ...
    [SUBWORKFLOW_NAME]:
        params: [PARAMETER_1[: DEFAULT_VALUE1], PARAMETER_2[: DEFAULT_VALUE2]...]
        steps:
            - step_name:
            ...
    

    替换以下内容:

    • SUBWORKFLOW_NAME:必填。子工作流的名称。
    • PARAMETER_1PARAMETER_2:可选。子工作流使用的参数。
    • DEFAULT_VALUE1DEFAULT_VALUE2:可选。相应参数的默认值。

    如果您不需要将参数传递给子工作流,请删除 params 块。

  3. 在子工作流中,定义步骤,就像在主工作流中定义一样。

  4. 如需从主工作流调用子工作流,请在主工作流的步骤中添加一个 call 部分,您可以选择性提供要传递给子工作流的参数:

    main:
       - [STEP_NAME]:
           call: [SUBWORKFLOW_NAME]
           [args:
               ARG_1: VALUE
               ARG_2: VALUE
               ...]
           [result: OUTPUT_VARIABLE]
    [SUBWORKFLOW_NAME]:
        params: [PARAMETER_1,PARAMETER_2...]
        steps:
            - step_1:
            ...
    

    替换以下内容:

    • SUBWORKFLOW_NAME:必填。子工作流的名称。
    • ARG_1ARG_2:可选。传递给子工作流的参数(如果子工作流接受参数的话)。
    • VALUE:可选。要设置的参数值。
    • OUTPUT_VARIABLE:可选。工作流用来存储子工作流返回的数据(如果子工作流返回任何内容的话)的变量。

示例

以下示例演示了如何定义名为 name_message 的子工作流,以及如何从主工作流中调用此工作流:

main:
    steps:
        - call_subworkflow:
            call: name_message
            args:
                first_name: "Sherlock"
                last_name: "Holmes"
            result: output
        - call_subworkflow2:
            call: name_message
            args:
                first_name: "Ada"
                last_name: "Lovelace"
            result: output2
        - return_message:
            return: ${output + output2}

name_message:
    params: [first_name, last_name, country: "England"]
    steps:
        - prepareMessage:
            return: ${"Hello " + first_name + " " + last_name + " from " + country + "."}

此工作流定义将执行以下操作:

  • 主工作流在步骤 call_subworkflowcall_subworkflow2 调用 name_message 子工作流两次。
  • 这两个步骤为参数 first_namelast_name 提供不同的输入,这些输入随后将传递给子工作流。
  • 子工作流 name_message 接受传递给它的参数并构造简单消息,为 country 变量提供默认值 England
  • 子工作流将其构造的消息返回给主工作流。
  • 主工作流中的步骤将结果分别存储为 outputoutput2
  • 主工作流将 outputoutput2 合并为一条消息,然后返回结果:Hello Sherlock Holmes from England. Hello Ada Lovelace from England.

后续步骤