Return(返回)
从任何地方结束整个流程,包括循环内。
用途
以声明的状态和消息终止运行,与 Stop 完全相同——但它被设计成可从某个结构深处到达,那里放 Stop 读起来不好,最常见的是在循环区域内。
何时用
- 从循环内部结束流程,那里 Break 只会离开循环。
- 从嵌套结构提前退出。
- 图深处的一个守卫子句应当结束一切。
何时不用
前提
除一个最终状态外无。
如何运行
Return 以声明的状态和消息立即终止运行。与 Stop 一样,它是终止节点:不解析任何连线,也没有输出端口。
与 Break 的区别很重要:
设置
| 设置 | 类型 | 范围 | 备注 |
|---|---|---|---|
| Final status | 选择 | success、failure、cancelled | 运行的结果 |
| Message | string | ≤ 500 字符 | 可选。出现在运行日志里 |
与 Stop 完全相同——差别在意图与位置,不在配置。
端口
Return 是终止节点。它没有输出端口。
基础示例
撞到硬性上限时从循环内中止:
- Final status:failure
- Message:
"撞到安全上限"
实际示例——遇致命状况放弃
同一循环的两种截然不同的出口:
- Break——正常完成。流程继续到"报告总数"。
- Return——出了问题。循环之后的一切都不该运行。
第二种情况若用 Break,会在一次坏掉的运行上给出误导性的"成功"报告。
高级示例——子流程里的守卫子句
在被调用的流程里,Return 是守卫陈述子流程结果的方式,无需把一条路径穿到图的底部:
每个守卫带着各自消息立即返回。父流程的 Sub Flow 节点在 Success 或 Failure 上分支,消息解释是哪个守卫触发的。
注意 R3 返回 success——"已满"是正确结果,不是失败。
最佳实践
- "停下一切"用 Return,"停下这个循环"用 Break。 选错会产生错误的报告。
- 总写消息,与 Stop 一样。
- 守卫子句优先 Return,流程自然收尾用 Stop。视觉上的区分帮助读者。
- 在子流程里刻意选状态——它是子流程给调用方的返回值。
- 别到处撒 Return。 十五个出口的图难以推理;把守卫集中在顶部附近。
性能笔记
- Return 零成本,且消耗
maxNodeExecutions的一次执行。 - 早返回是最便宜的结果——一个立即返回的守卫跳过整个剩余流程。
内存笔记
- 终止释放执行上下文,包括
run作用域的 Runtime Memory。 run之上的作用域按设计存活。
常见错误
| 错误 | 后果 | 修复 |
|---|---|---|
| 本意 Break 却用 Return | 结束整个运行 | 用 Break |
| 本意 Return 却用 Break | 流程继续并对坏掉的运行报成功 | 用 Return |
| 无消息 | 日志读不懂 | 写明原因 |
合法的空操作用 failure | 父流程白走恢复路径 | 用 success |
| 到处散落 Return | 图难以跟随 | 把守卫集中在顶部 |
故障排查
流程比预期提前结束。 到达了某个 Return。日志里的最终消息标明是哪个。
循环停了但运行继续。 那是 Break,不是 Return。
父流程意外走了恢复分支。
子流程里某个 Return 声明了 failure。检查那个结果是否真是失败。
FAQ
Return 与 Stop 的区别? 行为上没有——两者都以声明状态终止。Return 用于从结构内部提前退出;Stop 用于流程的自然终点。
Return 只退出子流程,还是整个运行? 它结束它所在的流程。在子流程里,那结束子流程并把控制权还给父流程的 Sub Flow 节点。
能从 Return 接出东西吗? 不能——它是终止节点。
计入 maxNodeExecutions 吗?
计入。