ReturnSub
ReturnSub 用于在子工作流中立即终止当前子流程的执行,并把指定结果返回给调用它的父工作流。它常用于子流程提前结束并向上传递结果,与 执行工作流、调用子流程 配合使用。
指令标识:ReturnSub
指令类型:逻辑控制指令
指令描述:终止当前子工作流并向父工作流返回结果
先选使用方式
Section titled “先选使用方式”ReturnSub 用于结束子流程并返回结果,配置只需要指定返回值。
| 方式 | 怎么用 | 适合人群 |
|---|---|---|
| 可视化编排(推荐) | 在子流程中拖入 ReturnSub 节点,配置要返回的值 | 大多数用户 |
| 代码编排(Python) | 在子流程函数中使用 Python 原生的 return 返回结果 | 熟悉代码的用户 |
什么时候用?
Section titled “什么时候用?”- 子流程在某个条件下需要提前结束,并把结果交还给父流程。
- 子流程完成了它的职责,需要把计算结果返回给上层。
ReturnSub用于子工作流内部,执行后该子流程会立即结束。- 返回值会传递给调用方(父工作流),父流程通过子流程节点的输出引用它。
- 如果只是想结束整个流程而非子流程,请使用 Return。
可视化编排:从 0 到跑通
Section titled “可视化编排:从 0 到跑通”- 在被调用的子工作流中,定位到需要提前返回的位置(通常在某个 IF 分支内)。
- 拖入
ReturnSub节点,在 返回值 中填写或引用要返回的内容。 - 在父工作流中通过 调用子流程 节点的输出引用该返回值。
- 运行父流程,确认子流程在命中条件后返回了预期结果。
| 界面名称 | 代码属性名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|---|
| 输入参数 | outputList | String | 否 | - | 高级选项。子流程要返回给父工作流的参数配置,JSON 格式,定义返回的变量名称、值与类型,例如 [{"name":"result","value":"success","type":"string"}] |
| 界面名称 | 代码属性名 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| 将结果保存至 | outKey | String | 否 | 保存处理后的参数集合,可选;返回值也可通过父工作流中子流程节点的输出引用,例如 endResult |
ReturnSub节点运行结束后状态为成功。- 运行日志中没有参数缺失、超时或执行失败等错误。
- 如果配置了输出变量,后续节点能够读取到符合预期的结果。
- 后续节点能够继续执行,流程没有因为该节点异常中断。
| 现象 | 可能原因 | 处理建议 |
|---|---|---|
| 父流程取不到返回值 | 未配置返回值,或父流程引用方式错误 | 确认 ReturnSub 配置了返回值,并在父流程通过子流程节点输出引用 |
| 子流程没有提前结束 | ReturnSub 所在分支未命中 | 检查触发条件与变量引用 |
| 整个流程都被结束了 | 误用了 Return 而非 ReturnSub | 子流程提前返回请使用 ReturnSub |
Python 代码编排
Section titled “Python 代码编排”代码编排以 Python 为主。在代码里,子流程通常封装为函数,ReturnSub 直接对应函数内的 return。
def sub_workflow(params): if not params.get("valid"): return {"status": "skip"} # 对应 ReturnSub:提前结束子流程并返回结果 result = bots.llm(prompt="...") return {"status": "ok", "data": result}在代码编排中无需单独的 ReturnSub 指令,直接在子流程函数里使用 Python 的 return 即可。
Q1:ReturnSub 和 Return 有什么区别?
Section titled “Q1:ReturnSub 和 Return 有什么区别?”A: ReturnSub 用于结束子工作流并把结果返回给父工作流;Return 用于结束当前流程。
Q2:ReturnSub 必须配置返回值吗?
Section titled “Q2:ReturnSub 必须配置返回值吗?”A: 返回值是可选的。如果只是想提前结束子流程而不返回内容,可以不填。