跳到主要内容

Return(返回)

从任何地方结束整个流程,包括循环内。

用途

以声明的状态和消息终止运行,与 Stop 完全相同——但它被设计成可从某个结构深处到达,那里放 Stop 读起来不好,最常见的是在循环区域内。

何时用

  • 从循环内部结束流程,那里 Break 只会离开循环。
  • 从嵌套结构提前退出。
  • 图深处的一个守卫子句应当结束一切。

何时不用

  • 离开循环但继续——用 Break
  • 跳过一轮循环——用 Continue
  • 在流程的自然收尾处——Stop 作为终点读起来更清楚。

前提

除一个最终状态外无。

如何运行

Return 以声明的状态和消息立即终止运行。与 Stop 一样,它是终止节点:不解析任何连线,也没有输出端口。

与 Break 的区别很重要:

设置

设置类型范围备注
Final status选择successfailurecancelled运行的结果
Messagestring≤ 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 吗? 计入。

相关节点

相关页面