Appearance
批处理节点
批处理节点对数组输入并发执行批处理体,并将每次运行的结果汇总输出。它适合数据项互不依赖、希望提高吞吐量的任务。
批处理设置
| 配置项 | 说明 |
|---|---|
| 并行运行数量 | 同时运行的任务数量,支持固定整数或引用数值变量;当前默认值为 10,允许范围为 1~10,设置为 1 时串行执行。 |
| 批处理次数上限 | 节点最多执行的总次数,支持固定整数或引用数值变量;当前默认值为 100,允许范围为 1~200。 |
| 输入 | 至少配置一个数组类型参数。每个输入都要设置名称,批处理体通过 item (in 参数名) 读取本次元素,并通过 index 读取从 0 开始的序号。 |
| 输出 | 批处理完成后汇总的结果,只能引用批处理体中节点的输出;每个输出自动转换为对应元素类型的数组。 |

批处理体
创建批处理节点后会同时生成批处理体子画布。选中批处理体后添加每项要执行的节点,体内不需要开始或结束节点。批处理体可以引用当前项、index 和外层可见变量,但不同批次不应依赖共享可变状态。
批处理次数达到上限时,即使数组仍有未处理元素也会停止。因此上限应覆盖预期数据量,同时保留防止异常大数组拖垮流程的保护作用。
当前批处理体不能再放入批处理节点或循环节点,也不能使用只允许放在循环体中的设置变量、终止循环和继续循环节点。需要复用复杂处理逻辑时,可在批处理体中调用不含循环或批处理的子工作流。
并发与限流
并发越高不代表整体越快。模型、插件、数据库和第三方接口都有各自限流;超过限制会导致超时、429 或部分失败。建议从较小并发开始,根据运行记录逐步调整。
旧文档特别提示:同一工作流同一时刻只应运行一个流式插件或消息节点,不要通过批处理并发输出流式内容或消息,否则输出顺序和展示可能不符合预期。此类节点需要批量执行时,将并行运行数量设为 1,或改用循环节点。
批处理不是数据库事务。出现部分失败时,应能识别失败项并安全重试;有副作用的操作需要业务幂等键。
与循环节点的区别
| 对比 | 批处理 | 循环 |
|---|---|---|
| 执行方式 | 多项可并发 | 通常按轮次顺序执行 |
| 输入 | 主要处理数组 | 数组、指定次数或无限循环 |
| 跨轮状态 | 不适合共享可变状态 | 支持中间变量 |
| 中途退出 | 不作为主要控制方式 | 支持终止和继续循环 |
| 适用场景 | 独立任务、高吞吐 | 有顺序、状态或退出条件 |
调试
先用少量数组和并发 1 验证正确性,再增加并发。运行结果应分别记录成功项、失败项和错误原因,不能只检查汇总数量。
常见问题
为什么只处理了数组的一部分?
先检查“批处理次数上限”。例如数组长度为 50、并行运行数量为 10、次数上限为 30 时,节点只执行 3 批,共处理 30 项;并行数量只控制同时执行数,不会突破总次数上限。
为什么批处理体中取到的是整个数组?
应在批处理节点的“输入”区域先定义命名数组参数,然后在批处理体中引用 item (in 参数名)。直接引用外层上游数组会得到整个数组,而不是本次元素。
为什么输出类型变成数组?
批处理体中的单次输出会按执行次序汇总,所以批处理节点的输出一定是数组。例如单次输出为 String,批处理输出为 Array<String>。