0

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

这是我的情况:

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

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

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

对于从 B 抛出异常的错误流:A -> B -> 另一个流

我猜 A、B、C 可以建模为一个状态,而从 A 到 B 的转换可以使用一个动作来执行真正的商业逻辑。

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

谢谢

莱昂

4

1 回答 1

1

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

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

还有使用相同概念建模的部署示例。

于 2016-09-28T10:25:06.857 回答