如何更改状态机中的目标状态

How to change the target state in a state machine

首先,我不太确定我的案例是否适合使用spring状态机。

这是我的案例:

我有一个很大的可变对象和一组逻辑单元,它们将按特定顺序操作这个可变对象。

对于正常流程:A.exec -> B.exec -> C.exec -> 完成

对于从 A 抛出异常的错误流程:A -> 错误 -> 完成(绕过 B 和 C)

对于从 B 抛出异常的不良流程:A -> B -> 另一个流程

我想 A、B、C 可以建模为一种状态,而当从 A 转移到 B 时,可以使用一个动作来执行真正的业务逻辑。

如何从 A 捕获可能抛出的异常并将目标更改为另一个状态而不是 B?

谢谢

里昂

我会使用 junctionchoice 并为传出转换定义守卫。 gh240 中讨论的内容。然后你可以捕获你的异常,即在扩展状态下存储一些东西,然后你可以从你的守卫那里自由地评估不同的条件。

选择几乎是 if/elseif/else 结构来定义哪个分支机器将遵循转换。

还有 deploy sample 以相同的概念建模。