Orchestrator

循环

文本由 Phrase Language AI 从英语机器翻译而得。

可以在工作流中实现循环,以根据定义的条件重复执行一组任务。

循环配置可在块配置的 Advanced 选项卡中访问,或通过右键点击块并选择 Edit loop 来访问。

循环设置需要一个操作对象列表:

  • 普通、单一的值,随后可在任务参数(如 {{ @item }})中使用。

  • 一个 .JSON 对象,其中对象中的每个元素都可以通过其键(如 {{ @item.key }})进行寻址。

访问循环的聚合结果

循环完成后,可以以 .JSON 数组的形式访问所有迭代的输出。每次迭代的输出必须是有效的 .JSON 文件。

有四种循环类型可供定义,并在 loop_with 字段中进行选择:

  • withSequence

  • withItems

  • withComplexItems

  • withParam

withSequence

withSequence 循环支持在工作流中对数字序列进行迭代或生成一系列值。

它可用于重复执行一组步骤特定次数,或基于一系列值执行操作。

要创建示例 withSequence 循环,请按照以下步骤操作:

  1. 选择一个空块并打开 Loop 配置。

  2. 点击 Edit loop

    显示 loop_with 配置选项。

  3. loop_with 字段中,选择 withSequence

  4. Count 字段中输入循环迭代次数。

  5. (可选)输入循环应开始和/或结束的值。

  6. 点击 保存循环

  7. Parameters 配置中,点击 编辑参数

    显示配置选项。

  8. Message 字段中,输入 {{ @item }} 并点击 保存参数

    此值将在运行时转换。

例如,如果计数设置为 3 且起始值为 2,则此循环的结果将为:

  • loop list => ["2", "3", "4"]

  • {{ @item }} => 234,基于迭代

withItems

withItems 循环支持对条目列表进行迭代。

当需要基于条目列表执行操作时,可以使用它。

要创建示例 withItems 循环,请按照以下步骤操作:

  1. 选择一个空块并打开 Loop 配置。

  2. 点击 Edit loop

    显示 loop_with 配置选项。

  3. loop_with 字段中,选择 withItems

  4. variable 字段中输入 en 并点击 +条目(将创建另一个 variable 字段)。

  5. 在第二个 variable 字段中输入 de 并创建第三个字段。

  6. 在第三个 variable 字段中输入 fr 并创建第四个字段。

  7. 在第四个 variable 字段中输入 us

  8. 点击 保存循环

  9. Parameters 配置中,点击 编辑参数

    显示配置选项。

  10. Message 字段中,输入 {{ @item }} 并点击 保存参数

    此值将在运行时转换。

此循环的结果将是对语言代码列表的迭代:

  • loop list => ["en", "de", "fr", "ua"]

  • {{ @item }} => en 或 de .. ua

withComplexItems

withComplexItems 循环支持遍历对象列表。

当需要基于复杂项目列表执行操作时,可以使用它。

要创建示例 withComplexItems 循环,请按照以下步骤操作:

  1. 选择一个空块并打开 Loop 配置。

  2. 点击 Edit loop

    显示 loop_with 配置选项。

  3. loop_with 字段中,选择 withComplexItems

  4. 点击 +键:值 以添加第二个键。

  5. 对于 对象 1,输入以下内容:

    • 键: Value1

      • 键 (可选项): name

      • (可选项): 项目 1

    • 键: Value2

      • 键 (可选项): ID

      • (可选项): 11

  6. 点击 +对象 以添加第二个对象,并点击 +键:值 以添加第二个键。

  7. 对于 对象 2,输入以下内容:

    • 键: Value1

      • 键 (可选项): name

      • (可选项): 项目 2

    • 键: Value2

      • 键 (可选项): ID

      • (可选项): 22

    设置示例:

    Loop with Complex Items Example
  8. Parameters 配置中,点击 编辑参数

    显示配置选项。

  9. Message 字段中,输入 {{ @item.name }} 并点击 保存参数。此值将在运行时转换。

此循环的结果将是对项目列表的迭代:

  • 循环列表 =>

    [
      {
        "name": "项目 1",
        "id": 11
      },
      {
        "name": "项目 2",
        "id": 22
      }
    ]
  • {{ @item }} =>

    {
      "name": "项目 1",
      "id": 11
    }
  • {{ @item.name }} => 项目 1

  • {{ @item.id }} => 11

withParam

withParam 循环支持对任何先前任务或触发器输出的动态列表进行迭代。

此循环仅在参数字段中用作参考。

例如:

任务 (Strings: Publish a release) 的输出:

{
  "created_at": "2015-01-28T09:52:53Z",
  "environments": ["development", "production"],
  "id": "abcd1234cdef1234abcd1234cdef1234",
  "locales": [
    {
      "code": "en-GB",
      "id": "abcd1234cdef1234abcd1234cdef1234",
      "name": "English"
    },
    {
      "id": "abcd5678cdef5678abcd5678cdef5678",
      "name": "German",
      "code": "de_DE"
    }
  ],
  "platforms": ["android"],
  "project": {
    "created_at": "2015-01-28T09:52:53Z",
    "id": "abcd1234cdef1234abcd1234cdef1234",
    "main_format": "xml",
    "name": "My Android Project",
    "updated_at": "2015-01-28T09:52:53Z"
  },
  "updated_at": "2015-01-28T09:52:53Z",
  "version": 1
}

如果循环设置 withParam 设置为 {{ $.locales }},则:

  • 列表 =>

    [
      {
        "code": "en-GB",
        "id": "abcd1234cdef1234abcd1234cdef1234",
        "name": "English"
      },
      {
        "id": "abcd5678cdef5678abcd5678cdef5678",
        "name": "German",
        "code": "de_DE"
      }
    ]
  • 第一个 {{ @item }} =>

    {
      "code": "en-GB",
      "id": "abcd1234cdef1234abcd1234cdef1234",
      "name": "English"
    }
  • {{ @item.code }} => en-GB

  • {{ @item.name }} => 英语

或者如果引用了 {{ $.environments }},则:

  • loop list => ["development", "production"]

  • {{ @item }} => developmentproduction

这篇文章有帮助吗?

Sorry about that! In what way was it not helpful?

The article didn’t address my problem.
I couldn’t understand the article.
The feature doesn’t do what I need.
Other reason.

Note that feedback is provided anonymously so we aren't able to reply to questions.
If you'd like to ask a question, submit a request to our Support team.
Thank you for your feedback.