我需要一些建议。我正试图通过Spring状态机实现在线订单流程,并试图在我开始工作之前构建一个状态图。现在假设我的订单可以被三个不同的管理用户CanceledByAdmin1、CanceledByAdmin2和CanceledByAdmin3取消。我应该将它们设置为取消状态的子状态还是创建三个不同的状态?记住,所有被取消的状态都是最终状态,彼此独立,我不知道除了简化纸上的图,生成子态还能做什么。
对于Spring Statemachine
,我们只能有一个终止状态,并且试图将其作为子状态的集合有点尴尬,因为一旦进入它,状态机应该停止所有处理。我想这方面可能被我忽视了,我可以试着改进一下。
虽然你可能有一个状态S1
,有三个子态S11/S11E
, S12/S12E
和S13/S13E
,从S11
到S11E
的无触发过渡,与其他子态相同,即使这感觉有点奇怪,因为这些都不会真正终止根状态机。
如果您只想保留有关谁/哪个取消订单的信息,您可以使用简单的单个终止状态,并在过渡到该终止状态期间,使用此信息添加/修改扩展状态变量吗?
Extended state variables
通常用于克服突然拥有天文数字的状态计数以保持任意信息的问题。我知道在这个例子中你只有3个,但是如果你有10个,或者100个呢?如果实际上需要再添加一个,则需要更改状态机配置并重新编译。对于扩展状态变量,您不需要这样做。