我需要一些建议。我正在尝试通过 Spring 状态机实现在线订单流程,并尝试在开始工作之前构建状态图。现在说我的订单可以由三个不同的管理员用户 CanceledByAdmin1、CanceledByAdmin2 和 CanceledByAdmin3 取消。我应该使它们成为取消状态的子状态还是创建三个不同的状态?请记住,所有取消的状态都是最终状态并且彼此独立,我不知道除了简化纸图之外,制作子状态是否还有其他作用。任何帮助,将不胜感激。
问问题
331 次
1 回答
0
我们Spring Statemachine
只能有一个终止状态,试图将其作为子状态的集合有点尴尬,因为一旦你进入它,状态机应该停止所有处理。认为这个区域是我可能忽略的东西,并且可以尝试改进。
虽然您可能有一个S1
具有三个子状态的状态S11/S11E
,S12/S12E
并且从到其他子状态S13/S13E
的无触发转换和相同的状态,但即使这感觉有点奇怪,因为这些都不会真正终止根状态机。S11
S11E
我想问题是你想要完成什么?
如果您只想保留有关谁/取消订单的信息,您是否可以使用简单的单个终止状态并在转换到该终止状态期间,使用此信息添加/修改扩展状态变量。
Extended state variables
通常用于克服突然拥有天文数字的状态以保留任意信息的这些问题。我知道在这个例子中你只有三个,但是如果你有 10 个或 100 个呢?如果您真的需要再添加一个,则需要更改状态机配置并重新编译。使用扩展状态变量,您不需要这样做。
于 2015-08-11T08:06:42.997 回答