我需要一些建议。我试图通过Spring状态机实现在线订单流程,并且在我开始工作之前尝试构建状态图。现在说我的订单可以被三个不同的管理员用户取消CanceledByAdmin1,CanceledByAdmin2和CanceledByAdmin3。我应该将它们作为取消状态的子状态还是创建三种不同的状态?请记住,所有取消的状态都是最终状态并且彼此独立,我不知道除了简化纸质图表之外,是否使子状态做了其他事情。任何帮助将不胜感激。
答案 0 :(得分:0)
为Spring Statemachine
提供什么我们只能有一个终止状态,并尝试将其作为子集的集合有点尴尬,因为一旦你输入它,状态机应该停止所有处理。认为这个领域是我可能忽略的东西,可以尝试增强功能。
虽然您可能有一个州S1
有三个子结构S11/S11E
,S12/S12E
和S13/S13E
,但无法从S11
转换为S11E
和其他子状态相同,即使这感觉有点奇怪,因为这些都不会实际终止根状态机。
我想问题是你想要完成的事情?
如果您只想保留取消订单的人/哪些信息,您是否可以使用简单的单一终止状态,并在转换到该终止状态期间,使用此信息添加/修改扩展状态变量。
Extended state variables
通常用于克服突然出现天文计数以保持任意信息的这些问题。我知道在这个例子中你只有三个,但如果你有10个或100个呢?如果您确实需要再添加一个,则需要更改状态机配置并重新编译。使用扩展状态变量,您不需要这样做。