跳到主要内容

Stop(停止)

以声明的状态和消息结束运行。

用途

立即终止运行并声明它如何结束:successfailurecancelled,附可选消息。

当流程被用作 Sub Flow 时,Stop 的状态就成为流程的返回值——父流程据此分支。

何时用

  • 标记成功完成。
  • 前提不满足时刻意结束。
  • Sub Flow 一个返回值。
  • 终止任何不该继续的已接路径。

何时不用

  • 离开循环——用 Break
  • 跳过一轮循环——用 Continue
  • 从循环深处结束流程、放 Stop 别扭时——Return 做同样的事且读起来更好。

前提

一个 final status。消息可选但强烈建议。

如何运行

运行时到达 Stop 节点时,以声明的状态与消息终止运行。不解析任何连线——Stop 是终止节点,没有输出端口。

Stop 计入 maxNodeExecutions,算作一个已执行节点。

设置

设置类型范围备注
Final status选择successfailurecancelled必填
Messagestring≤ 500 字符可选。出现在运行日志里

选状态

状态含义
success流程做成了它要做的——包括"没什么可做"
failure流程无法完成它的活
cancelled刻意结束,既非成功也非失败
"没什么可做"是成功

一个检查每日奖励的流程发现已经领过了。那是成功,不是失败——期望的终态成立。

failure 留给"我干不了我的活",因为那才是你的告警和父流程要分支的东西。

消息就是你的日志

每个 Stop 上设消息,失败的尤其如此。那串文字就是一次运行在夜里失败后你会读到的东西。

"All slots full" 告诉你发生了什么。一个节点 id 什么也不告诉你。

端口

Stop 是终止节点。它没有输出端口——没有东西从它接出。

基础示例

  • Final status:success
  • Message:"Daily rewards collected"

实际示例——彼此分明的结局

给流程每个有意义的结果一个结局:

三者都是成功——流程在每种情况下都行为正确——但消息让你不用打开图就知道发生了哪种。

高级示例——Stop 作为 Sub Flow 的返回值

当一个流程被另一个调用时,它的 Stop 就是它的接口:

两个状态清晰的 Stop 给父流程恰好两个分支去处理。这正是子流程像函数一样工作的原因。

最佳实践

  • 每个 Stop 都写消息。 失败的必须写。
  • "没什么可做"用 success
  • 给子流程恰好是调用方需要的结局——通常一个成功、一个失败。
  • 把每条死路接到 Stop。 空路由以 TRANSITION_NOT_FOUND 结束,那比你的消息说的少得多。
  • 让消息可操作——说流程当时处于什么状态,不只是它失败了。
  • 不要害怕多个 Stop。 几个标注清楚的结局胜过一个共享结局加一个解释用的变量。

性能笔记

  • Stop 零成本;它终止运行。
  • 它消耗 maxNodeExecutions 的一次执行。
  • 早早到达 Stop 是最便宜的结果——一个位置好的守卫立刻停止,省下整个剩余流程。

内存笔记

  • 终止会释放运行的执行上下文,包括 run 作用域的 Runtime Memory
  • persistsessionshared 记忆存活;那是它们的用途。

常见错误

错误后果修复
失败 Stop 无消息日志读不懂写明原因
"没什么可做"用 failure假警报;父流程白走恢复路径success
试图从 Stop 接出它是终止节点Return 或重构
用 Stop 离开循环结束整个运行Break
失败路由留空运行以 TRANSITION_NOT_FOUND 结束接到 Stop
所有结果共用一个 Stop分不清发生了什么每个有意义的结局一个

故障排查

运行以 TRANSITION_NOT_FOUND 而非我的 Stop 结束。 某个路由没接连线。找日志里最后的节点并查它的端口。

父流程在调用子流程后走了错分支。 子流程的 Stop 声明了错的状态。查它实际到达了哪个 Stop。

日志没显示原因。 到达的 Stop 上没设消息。

cancelled 的 Stop 看起来像用户取消。 那是声明的状态,不是真正的取消。少用——successfailure 通常更清楚。

FAQ

流程能有多个 Stop 吗? 能,而且通常应该有。

Stop 计入 maxNodeExecutions 吗? 计入。Start 也计入。

Stop 与 Return 的区别? 两者都以声明状态终止运行。Return 被设计成从任何地方(包括循环内)都能到达。

消息出现在哪? 运行日志里,以及运行的最终结果里。

相关节点

  • Start——入口
  • Return——从任何地方终止
  • Break——改为离开循环
  • Sub Flow——消费子流程的 Stop 状态

相关页面