循环执行
循环节点用于让子流程重复执行,支持四种循环模式。
概述
填写循环名后,节点自动生成两个循环变量供循环体内使用:
{{循环名.index}}— 当前迭代索引(从 0 开始){{循环名.value}}— 当前迭代的值
节点有两个输出端口:Body 连接循环体(每次迭代执行),Completed 连接循环结束后的下游节点。
循环状态(索引、队列、水位线)会在每次迭代间持久化存储,刷新页面后不会丢失进度。
使用方法
拖入节点后,先填写「循环名」,然后选择循环模式。
计数模式
从起始数字到结束数字逐个迭代。内部逻辑为 开始值 + index,当 当前值 < 结束值 时继续循环。
注意:结束值是不包含的(类似 Python 的
range),不是"小于等于"。
循环名: i,开始: 1,结束: 3
第 1 次: i.index=0, i.value=1 (1 < 3 ✓)
第 2 次: i.index=1, i.value=2 (2 < 3 ✓)
循环结束 (3 < 3 ✗)
适合"重复执行 N 次"的场景。
数组模式
遍历数组的每个元素。数组内容通过 JSON5 格式输入,会被解析后放入消费队列,每次迭代从队列头部取出一个元素(shift),队列为空时循环结束。
循环名: user,数组: ["张三", "李四", "王五"]
队列初始: ["张三", "李四", "王五"]
第 1 次: user.index=0, user.value="张三" (队列剩 ["李四", "王五"])
第 2 次: user.index=1, user.value="李四" (队列剩 ["王五"])
第 3 次: user.index=2, user.value="王五" (队列剩 [])
循环结束
适合"对列表中每个元素执行相同操作"的场景。
变量模式
引用一个上游变量进行迭代。根据变量类型自动选择策略:
- 变量为数字(如
5):按计数模式执行,index从 0 到 N-1,value即为index。index < 变量值时继续。 - 变量为数组或其他:按增量队列模式执行。只有新出现的元素会加入消费队列(通过
globalCursor水位线去重),已消费过的元素不会重复处理。
# 数字变量
循环名: i,引用变量: {{count}} (count = 3)
第 1 次: i.index=0, i.value=0
第 2 次: i.index=1, i.value=1
第 3 次: i.index=2, i.value=2
循环结束
# 数组变量
循环名: item,引用变量: {{dataList}} (dataList = ["A", "B", "C"])
→ 依次消费 "A" "B" "C",与数组模式行为一致
→ 如果循环过程中 dataList 新增了元素,下一轮会自动追加到队列末尾
条件模式
当条件满足时持续循环,条件不满足时跳出。条件构建器的使用方式与「条件分支」一致——配置左值、操作符和右值,每次迭代前动态解析变量值并重新判断。
注意:条件模式是最容易写出无限循环的模式。确保每次迭代都会改变条件中引用的变量值,让条件最终变为 False,否则流程永远不会跳出。
参数参考
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| 循环名 | 文本 | — | 必填。循环标识符,同时用于生成 {{循环名.index}} 和 {{循环名.value}} |
| 循环模式 | 下拉选择 | range | range — 计数;array — 数组;variable — 变量;condition — 条件 |
| 开始 | 数字 | 1 | 计数模式 — 起始数字 |
| 结束 | 数字 | 10 | 计数模式 — 结束数字(不包含,当前值 < 结束值时继续) |
| 数组 | array | — | 数组模式 — JSON5 格式数组,如 ["A","B","C"] |
| 引用变量 | 文本 | — | 变量模式 — 引用已存在的变量。数字则按计数循环,其他按数组循环 |
| 判断条件 | ConditionBuilder | — | 条件模式 — 满足条件时持续循环,条件为 False 时跳出 |
常见问题
无限循环停不下来
现象:流程进入循环后无法跳出。
原因:条件模式下的条件始终满足,循环体内没有改变条件引用的变量值。
解决:确认循环体内有步骤在改变条件中引用的变量,使条件最终变为 False。计数/数组/变量模式有明确的迭代终点,不会无限循环。
计数模式的执行次数比预期少
现象:设置开始 1、结束 3,期望执行 3 次,实际只执行了 2 次。
原因:结束值是不包含的(< 而非 <=)。start + index < end 时继续,所以 3 < 3 为 False 直接结束。
解决:如果需要包含结束值,将结束值设为 期望值 + 1。例如要执行 3 次(1, 2, 3),设置结束为 4。