并行分支
并行分支 用于在工作流中同时执行多条互不依赖的分支逻辑,从而提升整体执行效率。它适合子任务之间没有先后依赖、结果互不影响的场景;不建议一次性使用过多并行分支,需结合实际情况合理规划。
指令标识:ParallelBranch
指令类型:流程控制
指令描述:并行分支节点,用于在工作流中同时执行多条分支逻辑
先选使用方式
Section titled “先选使用方式”并行分支是一个流程控制节点,主要在可视化画布中编排。它没有对应的业务 SDK 方法,代码编排时通过 Python 原生并发写法实现相同的「同时执行多条逻辑」效果。
| 方式 | 怎么用 | 适合人群 |
|---|---|---|
| 可视化编排(推荐) | 拖入「并行分支」节点,在每个分支下分别编排子流程,分支间互不影响 | 大多数用户,零代码,直观清晰 |
| 代码编排(Python) | 在脚本中用 Python 原生并发写法(如线程池)同时调用多个子任务 | 熟悉代码、需要灵活控制并发的用户 |
并行分支节点默认包含两个分支(分支1、分支2),可通过界面上的「添加」按钮新增分支,或用删除按钮移除分支。每个分支下都可以自由添加、删除节点,分支间互不影响。
什么时候用?
Section titled “什么时候用?”- 有多个互相独立的子任务,希望同时执行以节省时间。
- 需要并发处理多个数据源、并发调用多个接口。
- 需要对同一批数据并行做多项独立校验。
如果子任务之间存在先后依赖,应改用顺序编排或 条件分支、循环。
- 各分支之间确实没有依赖关系,互不读写同一份中间结果。
- 分支名称尽量唯一,便于后续引用和维护。
- 并发量适度:最多支持十个并行分支,分支过多(尤其是含大量大模型调用)可能触发限流或拖慢整体流程。
- 已为每个分支规划好独立的输出变量名,避免相互覆盖。
可视化编排:从 0 到跑通
Section titled “可视化编排:从 0 到跑通”下面用一个常见场景演示:同时处理两份独立数据,缩短整体耗时。按 4 步即可跑起来:
- 在工作流画布中添加 并行分支 节点。
- 在 分支1 中编排第一组子任务(例如处理一份用户数据),并把结果保存到
branch1_result。 - 在 分支2 中编排第二组子任务(例如处理一份订单数据),并把结果保存到
branch2_result。 - 点击运行,确认两个分支同时开始执行,且各自结果互不影响。
| 界面名称 | 代码属性名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|---|
| 分支名称 | - | String | 是 | - | 每个分支的唯一标识,如「分支1」「分支2」 |
| 分支内容 | - | 流程/节点 | 是 | - | 每个分支下可配置独立的节点或子流程 |
说明:并行分支为流程控制节点,主要在界面中配置分支结构,无业务参数代码属性名。
无。每个分支内部的节点各自决定输出,并行分支节点本身不额外产生输出。
- 运行时多个分支同时开始执行,而非依次执行。
- 各分支内部节点均执行成功,结果分别写入各自的输出变量。
- 分支之间结果互不覆盖、互不影响。
| 现象 / 报错原文 | 可能原因 | 处理建议 |
|---|---|---|
| 分支看起来像是依次执行 | 分支间存在隐式依赖(读写同一变量) | 拆分依赖,确保各分支使用独立的输出变量 |
| 部分分支报限流或超时 | 分支过多或并发调用大量大模型 / 接口 | 减少分支数量,或拆分批次执行 |
| 结果被相互覆盖 | 多个分支使用了相同的输出变量名 | 为每个分支设置唯一的输出变量名 |
| 整体执行变慢 | 并发占用资源过高 | 合理控制分支数量,按需调整 |
Python 代码编排
Section titled “Python 代码编排”代码编排以 Python 为主。运行上下文由代码编排模板创建,示例里只需要关注业务逻辑本身。
并行分支是流程控制节点,没有对应的业务 SDK 方法。在代码编排中,可用 Python 原生的并发写法(如线程池)同时执行多个独立子任务,达到与可视化「并行分支」一致的效果:
from concurrent.futures import ThreadPoolExecutor
# 分支1:处理用户数据def handle_branch1(): bots.message(message="分支1:处理用户数据", outKey="branch1_result")
# 分支2:处理订单数据def handle_branch2(): bots.message(message="分支2:处理订单数据", outKey="branch2_result")
# 同时执行多个互不依赖的子任务with ThreadPoolExecutor(max_workers=2) as executor: futures = [executor.submit(handle_branch1), executor.submit(handle_branch2)] for f in futures: f.result()提示:请确保各子任务之间互不依赖、不读写同一份中间结果;并发量过高时同样可能触发限流,建议合理控制并发数。
如果你想在工作流中通过节点动态编排指令,可使用 执行指令(XML)节点。
Q1:最多支持多少个并行分支?
Section titled “Q1:最多支持多少个并行分支?”A: 最多支持十个并行分支,默认展示两个。分支过多可能影响整体性能,建议按需规划。
Q2:分支之间的数据会互相影响吗?
Section titled “Q2:分支之间的数据会互相影响吗?”A: 不会。各分支独立执行、互不影响。但要注意为每个分支设置唯一的输出变量名,避免结果被覆盖。
Q3:什么场景不适合用并行分支?
Section titled “Q3:什么场景不适合用并行分支?”A: 子任务之间存在先后依赖、需要前一步结果作为后一步输入的场景不适合,应改用顺序编排或条件 / 循环控制。