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 }} => 2 或 3 或 4,基于迭代

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,输入以下内容:

    • 键: 值1

      • 键 (可选项): name

      • (可选项): 项目 1

    • 键: 值2

      • 键 (可选项): id

      • (可选项): 11

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

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

    • 键: 值1

      • 键 (可选项): name

      • (可选项): 项目 2

    • 键: 值2

      • 键 (可选项): 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: 发布版本) 的输出:

{
  "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 }} => development 或 production

这篇文章有帮助吗?
★ ★ ★ ★ ★

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.