跳转到内容

并行分支

并行分支 用于在工作流中同时执行多条互不依赖的分支逻辑,从而提升整体执行效率。它适合子任务之间没有先后依赖、结果互不影响的场景;不建议一次性使用过多并行分支,需结合实际情况合理规划。

指令标识:ParallelBranch
指令类型:流程控制
指令描述:并行分支节点,用于在工作流中同时执行多条分支逻辑

并行分支是一个流程控制节点,主要在可视化画布中编排。它没有对应的业务 SDK 方法,代码编排时通过 Python 原生并发写法实现相同的「同时执行多条逻辑」效果。

方式怎么用适合人群
可视化编排(推荐)拖入「并行分支」节点,在每个分支下分别编排子流程,分支间互不影响大多数用户,零代码,直观清晰
代码编排(Python)在脚本中用 Python 原生并发写法(如线程池)同时调用多个子任务熟悉代码、需要灵活控制并发的用户

并行分支节点默认包含两个分支(分支1、分支2),可通过界面上的「添加」按钮新增分支,或用删除按钮移除分支。每个分支下都可以自由添加、删除节点,分支间互不影响。

  • 有多个互相独立的子任务,希望同时执行以节省时间。
  • 需要并发处理多个数据源、并发调用多个接口。
  • 需要对同一批数据并行做多项独立校验。

如果子任务之间存在先后依赖,应改用顺序编排或 条件分支循环

  • 各分支之间确实没有依赖关系,互不读写同一份中间结果。
  • 分支名称尽量唯一,便于后续引用和维护。
  • 并发量适度:最多支持十个并行分支,分支过多(尤其是含大量大模型调用)可能触发限流或拖慢整体流程。
  • 已为每个分支规划好独立的输出变量名,避免相互覆盖。
并行分支

下面用一个常见场景演示:同时处理两份独立数据,缩短整体耗时。按 4 步即可跑起来:

  1. 在工作流画布中添加 并行分支 节点。
  2. 分支1 中编排第一组子任务(例如处理一份用户数据),并把结果保存到 branch1_result
  3. 分支2 中编排第二组子任务(例如处理一份订单数据),并把结果保存到 branch2_result
  4. 点击运行,确认两个分支同时开始执行,且各自结果互不影响。
界面名称代码属性名类型必填默认值说明
分支名称-String-每个分支的唯一标识,如「分支1」「分支2」
分支内容-流程/节点-每个分支下可配置独立的节点或子流程

说明:并行分支为流程控制节点,主要在界面中配置分支结构,无业务参数代码属性名。

无。每个分支内部的节点各自决定输出,并行分支节点本身不额外产生输出。

  • 运行时多个分支同时开始执行,而非依次执行。
  • 各分支内部节点均执行成功,结果分别写入各自的输出变量。
  • 分支之间结果互不覆盖、互不影响。
现象 / 报错原文可能原因处理建议
分支看起来像是依次执行分支间存在隐式依赖(读写同一变量)拆分依赖,确保各分支使用独立的输出变量
部分分支报限流或超时分支过多或并发调用大量大模型 / 接口减少分支数量,或拆分批次执行
结果被相互覆盖多个分支使用了相同的输出变量名为每个分支设置唯一的输出变量名
整体执行变慢并发占用资源过高合理控制分支数量,按需调整

代码编排以 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)节点。

A: 最多支持十个并行分支,默认展示两个。分支过多可能影响整体性能,建议按需规划。

Q2:分支之间的数据会互相影响吗?

Section titled “Q2:分支之间的数据会互相影响吗?”

A: 不会。各分支独立执行、互不影响。但要注意为每个分支设置唯一的输出变量名,避免结果被覆盖。

Q3:什么场景不适合用并行分支?

Section titled “Q3:什么场景不适合用并行分支?”

A: 子任务之间存在先后依赖、需要前一步结果作为后一步输入的场景不适合,应改用顺序编排或条件 / 循环控制。