状态机中的独立子状态

Independent subtates in a state machine

我需要一些建议。我正在尝试通过 Spring 状态机实现在线订购流程,并试图在开始工作之前构建状态图。现在说我的订单可以由三个不同的管理员用户 CanceledByAdmin1、CanceledByAdmin2 和 CanceledByAdmin3 取消。我应该使它们成为取消状态的子状态还是创建三种不同的状态?请记住,所有取消的状态都是最终状态并且彼此独立,我不知道制作子状态除了简化纸图之外是否还有其他作用。任何帮助将不胜感激。

Spring Statemachine 我们只能有一个终止状态,并试图将其作为子状态的集合有点尴尬,因为一旦你进入它,状态机应该停止所有处理。认为这方面是我可能忽略的地方,可以尝试改进。

虽然您的状态 S1 可能具有三个子状态 S11/S11ES12/S12ES13/S13E,并且从 S11 到 [=16] 的无触发转换=] 和其他子状态一样,即使这感觉有点奇怪,因为其中 none 实际上会终止根状态机。

我想问题是你想要完成什么?

如果您只想保留有关 who/which 取消订单的信息,您可以使用简单的单一终止状态并在过渡到该终止状态期间,add/modify 扩展状态变量与此信息。

Extended state variables 通常用于克服这些突然拥有天文数字状态以保留任意信息的问题。我知道在这个例子中你只有三个,但如果你有 10 个或 100 个呢?如果您实际上需要再添加一个,则需要更改状态机配置并重新编译。使用扩展状态变量,您不需要这样做。