查看 Application Integration 支持的连接器。
“针对每一个循环”任务
通过 For Each 循环任务,您可以从当前(主)集成反复调用子集成。该任务会遍历配置的数组变量,并针对数组中的每个元素调用子集成。子集成的调用次数等于数组变量的大小。
API 触发器 ID 和集成名称标识您要运行的子集成。
该任务还可让您从每个子集成运行中收集响应,并将值存储在当前集成中,以便在下游任务中使用。您可以使用以下任一方法收集响应:
- 整理数组变量中每次运行的响应,其中数组的每个元素都有一次特定运行的响应。如需整理响应,请配置
Collect values from sub-integration output(s)
属性。 - 将所有运行的响应汇总到一个变量中。如需汇总响应,请配置
Response parameter override mapping
属性。
准备工作
- 确保您已将用户管理的服务账号关联到您的集成。如果您的集成未配置用户管理的服务账号,则默认情况下使用默认服务账号 (
service-PROJECT_NUMBER@gcp-sa-integrations.iam.gserviceaccount.com
) 进行身份验证。 - 确保您的服务账号具有 Application Integration Invoker IAM 角色。如需了解如何向服务账号授予角色,请参阅管理对服务账号的访问权限。
配置属性
下表介绍了 For Each 循环任务的配置属性。
属性 | 数据类型 | 说明 |
API Trigger ID
|
字符串 | 要运行的子集成的触发器 ID。
此值可在子集成中的 API 触发器的触发器 ID 字段中找到。 |
Integration name |
字符串 | 要运行的子集成的名称。 |
List to iterate
|
类型为 Boolean、String、Integer、Double 或 JSON 的数组。 | 子集成应运行的值列表。为列表中的每个值逐一运行子集成。 您可以通过设置迭代元素子集成映射属性,将迭代值传递给子集成。在此属性中,指定必须将迭代值映射到子集成中的变量。 |
Iteration element sub-integration mapping |
无 | 必须为其分配当前迭代元素的子集成中的变量。 |
Map to additional sub-integration input(s)
|
无 | 从当前集成传递到子集成的其他值。
此属性的值采用键值对的形式,其中键为当前集成中的变量,值为子集成中的相应输入变量。例如,假设您的主集成具有 |
Collect values from sub-integration output(s)
|
无 | 整理子集成运行的结果。 每次子集成运行时,您都可以将子集成的输出存储在当前集成的数组变量中。从要从中收集的子集成输出 (Sub-integration output to collect from) 下拉列表中选择子集成的输出变量,然后从要收集到的集成变量 (Integration variable to collect into) 下拉列表中选择当前集成中的数组变量。数组的每个元素都有一次特定子集成运行的响应。例如,如果数组变量为 |
Response parameter override mapping
|
无 | 读取子集成运行的输出变量,并将其存储在当前集成的变量中。 从要从中映射的子集成输出 (Sub-integration output to map from) 下拉列表中选择子集成的输出变量,然后从要替换的集成变量 (Integration variable to override) 下拉列表中选择当前集成中的相应变量。您可以通过在映射到其他子集成输入 (Map to additional sub-integration input(s)) 属性中映射当前集成中已替换的变量,将其发送到下一次子集成运行。因此,您可以聚合子集成运行的响应。 |
Loop metadata |
JSON 数组 | 包含子集成的执行详情(例如执行期间传递的子集成执行 ID、错误消息和变量值)的输出变量。循环元数据包含变量,其中包括以下输出变量:current_iteration_count 、sub_integration_execution_ids 、failure_location 、current_element 、iteration_element 和 failure_message 。
|
示例
以下部分提供了详细示例,说明如何在特定场景中配置和使用 For Each 循环任务。以下示例展示了不同用例的配置步骤:
迭代并传递每个元素
假设您有一个主集成,其中包含一个名为 productIds
的数组变量,该变量包含 ["P1", "P2", "P3"]
等值。如需针对每个商品 ID 调用名为 GetProductDetails
的子集成,请按如下方式配置“For Each 循环”任务:
- 将要迭代的列表设置为
productIds
。 - 设置迭代元素子集成映射,以将
productIds
的当前元素映射到GetProductDetails
中的变量(例如subIntProductId
)。
然后,GetProductDetails
的每次执行都会从 productIds
接收一个商品 ID。
收集子集成输出
与上一个示例一样,假设 GetProductDetails
在名为 productInfo
的输出变量中返回一个 JSON 对象。
如需收集每次子集成执行的所有 productInfo
输出,并将其存储为主集成中数组变量的元素,请执行以下操作:
- 配置从子集成输出收集值。
- 从要从中收集的子集成输出中选择
productInfo
。 - 从要收集到的集成变量中选择主集成中的一个数组变量,例如
allProductDetails
。
循环完成后,allProductDetails
是一个数组,其中每个元素都是一次子集成执行的 productInfo
JSON。
汇总结果(含响应替换)
假设您有一个主集成,它会针对列表中的每个商品调用一个子集成(例如 GetProductDetails
),并且您想要计算所有商品的总价。对每次子集成执行返回的数值求和:
- 确保子集成在输出变量
itemPrice
中返回一个值。 - 在主集成中,将
totalPrice
变量初始化为0
。 - 配置响应参数替换映射:
- 将
itemPrice
(来自子集成)映射到totalPrice
(在主集成中)。
- 将
- 在映射到其他子集成输入部分中:
- 将
totalPrice
(来自主集成)映射到子集成中的输入变量,例如currentTotal
。
- 将
- 在子集成的逻辑中,将当前商品的价格添加到从主集成收到的
currentTotal
中。然后,在名为itemPrice
的输出变量中返回这个新总和。此过程会创建累积聚合。
传递其他输入
如果子集成 GetProductDetails
需要主集成的 currency
代码,则:
- 在映射到其他子集成输入部分中:
- 将主集成变量
currencyCode
映射到子集成输入变量subIntCurrency
。
- 将主集成变量
- 此
currencyCode
会传递给子集成的每次执行。
如需了解实用且分步的指南以及前面部分中讨论的概念的可执行示例,请探索以下集成示例:
最佳做法
如需了解适用于 For Each Loop 任务的用量限额,请参阅用量限额。
错误处理策略
任务的错误处理策略指定当任务因暂时性错误而失败时要执行的操作。如需了解如何使用错误处理策略,以及了解不同类型的错误处理策略,请参阅错误处理策略。
配额和限制
如需详细了解配额和限制,请参阅配额和限制。