将实验性函数替换为并行步骤

Workflows 实验性函数 experimental.executions.map 会为每个 对应的实参启动一个工作流执行,并等待所有执行完成,然后返回一个列表,其中每个元素都是执行结果。

如果您使用 experimental.executions.map 来支持并行工作,则可以将 工作流迁移为改用并行步骤,以并行执行普通 for 循环

parallel 步骤用于定义工作流的一部分,其中两个或多个步骤可以同时执行。parallel 步骤会等待,直到其中定义的所有步骤都已完成或被未处理的异常中断;然后,执行会继续。与 experimental.executions.map 一样,执行顺序无法保证。如需了解 详情,请参阅 并行步骤的语法参考页面。

请注意,使用 experimental.executions.mapworkflows.executions.run 需要额外的 并发执行配额。 不过,如果使用并行步骤并内嵌调用连接器 (请参阅翻译连接器示例),则无需 额外的执行配额。

以下示例旨在帮助您将 experimental.executions.map 的使用替换为 parallel 步骤。

翻译工作流

给定源语言和目标语言,以下名为 translate, 使用 Cloud Translation 连接器 翻译一些输入文本并返回结果的工作流。请注意,Cloud Translation API 必须处于启用状态。

YAML

  main:
    params: [args]
    steps:
    - basic_translate:
        call: googleapis.translate.v2.translations.translate
        args:
          body:
            q: ${args.text}
            target: ${args.target}
            format: "text"
            source: ${args.source}
        result: r
    - return_step:
        return: ${r}

JSON

  {
    "main": {
      "params": [
        "args"
      ],
      "steps": [
        {
          "basic_translate": {
            "call": "googleapis.translate.v2.translations.translate",
            "args": {
              "body": {
                "q": "${args.text}",
                "target": "${args.target}",
                "format": "text",
                "source": "${args.source}"
              }
            },
            "result": "r"
          }
        },
        {
          "return_step": {
            "return": "${r}"
          }
        }
      ]
    }
  }

上述示例的输入:

{
  "text": "Bonjour",
  "target": "en",
  "source": "fr"
}

输出应类似于以下内容:

{
 "data": {
   "translations":