【问题标题】:Independent subtates in a state machine状态机中的独立子状态
【发布时间】:2015-08-11 00:51:08
【问题描述】:

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

【问题讨论】:

    标签: spring state-machine state-machine-workflow spring-statemachine


    【解决方案1】:

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

    虽然您可能有一个状态 S1 具有三个子状态 S11/S11ES12/S12ES13/S13E,从 S11S11E 的无触发转换以及与其他子状态相同,即使这感觉有点奇怪因为这些都不会真正终止根状态机。

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

    如果您只想保留有关取消订单的人员/取消订单的信息,您是否可以使用简单的单一终止状态并在转换到该终止状态期间,使用此信息添加/修改扩展状态变量。

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

    【讨论】:

    • 知道了。不管怎样,Janne 我们需要开始在我们的电子商务项目中使用 FSM。我们的想法是为订单流程生命周期开发我们自己的状态机。现在我正在考虑使用 Spring 状态机。你有什么建议?你知道状态机多久才能普遍可用吗?
    • 如果您不需要机器提供那么多功能并且您自己的实现将是非常简单的一次性开发,我认为这种方法没有任何问题。只是在您需要开始添加功能之后,内部机器结构几乎成倍地复杂化。相信我,去过那里,做到了。我们计划在一个月内通过 SpringOne 进入 1.0.0.RC1。从 RC1 到 RELEASE,我会说 1-2 个月。只是一个估计,但可能相当准确。
    猜你喜欢
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-12
    • 1970-01-01
    • 1970-01-01
    • 2013-01-25
    相关资源
    最近更新 更多