- 简介
- 入门指南
- 使用 BPMN 进行流程建模
- 使用 Case Management 进行流程建模
- 使用 Flow 进行流程建模
- 流程实施
- 流程运营
- 流程监控
- 流程优化
- 参考信息
“循环”节点,用于使用“并行”和“中断”选项对集合进行迭代。
操作
遍历集合,并为每个项目在循环主体中运行节点一次。
何时使用此选项
当您有一组项目需要处理时,例如 API 返回的记录列表、文件列表或 ID 列表,请使用“循环”。该循环为每个项目运行一次,并在集合耗尽时停止。
若要在集合用尽之前退出,请使用符合条件的中断或中断句柄,如下所述。
配置参考
| 字段 | 必填 | 默认 | 描述 |
|---|---|---|---|
| 集合 | 是 | 无 | 要迭代的数组。输入解析为数组的表达式,例如$vars.listCustomers1.output 。 |
| 并行 | 否 | 关闭 | 同时运行所有迭代,而不是逐个运行。如果关闭,循环将按顺序运行,等待每次迭代完成后再开始下一次迭代。 |
| 满足条件时中断 | 否 | 无 | 在迭代完成后,当表达式变为true时提前退出循环。这适用于顺序循环。 |
| 显示中断处理程序 | 否 | 关闭 | 向循环添加一个中断句柄,以便正文内的节点可以提前退出循环。将节点的输出连接到中断句柄,以停止从正文内部迭代。 |
顺序迭代可以保留顺序,并且是“按条件中断”发挥作用所必需的,因为系统会在每次迭代完成后检查条件。并行迭代不按有保证的顺序运行。
循环主体
将节点拖动到循环边界内,以将其添加到主体。正文中的节点可以读取当前项目和迭代,以及循环外作用域内的任何变量。
当前项目和迭代
在正文中,使用以下表达式引用循环的进度:
$vars.<loopName>.currentItem是当前迭代的项目。使用点标记访问其字段,例如$vars.loop1.currentItem.id。$vars.<loopName>.currentIteration是当前迭代编号,从1开始。
这些仅在循环主体内可用。
输出
完成所有迭代后,可在$vars.<loopName>.output中获取循环的聚合结果。然后,从循环后面的节点继续执行。
在循环主体之外无法访问currentItem和currentIteration 。
示例
示例 1 — 为每个项目调用 API
循环对$vars.listCustomers1.output进行迭代。循环正文包含一个 HTTP 请求节点,其 URL 为:
https://api.example.com/customers/{{ $vars.loop1.currentItem.id }}
https://api.example.com/customers/{{ $vars.loop1.currentItem.id }}
示例 2 — 构建跨迭代的结果数组
循环主体中的“脚本”节点为每个项目返回一个值。以下循环将每次迭代的结果收集到$vars.loop1.output中:
return { id: $vars.loop1.currentItem.id, processed: true };
return { id: $vars.loop1.currentItem.id, processed: true };
在循环后, $vars.loop1.output是这些结果的数组。
示例 3 — 找到匹配项后尽早停止
循环主体中的“决策”节点会检查当前项目。启用“显示中断句柄”后,决策的匹配分支将连接到循环的中断句柄,以便在找到匹配项后立即停止迭代。
常见问题
循环主体从不运行。集合为空或undefined 。在执行追踪记录中检查上游节点的输出,以确认数组包含项目。空集合会跳过正文,在循环后继续。
永远不会在并行循环中触发符合条件的中断。系统会在每次迭代按顺序完成后评估“符合条件的中断”条件,因此适用于顺序循环。如果需要在运行条件下中断,请关闭“并行” 。
在正文中编辑集合不会更改迭代的内容。循环开始时捕获集合。修改正文中的数组变量不会更改要迭代的项目。这是设计使然。