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



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

这是我的案例:

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

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

对于从a抛出异常的坏流:a -> Error -> Done (B和C被绕过)

对于从B抛出异常的坏流:a -> B ->另一个流

我猜A, B, C可以建模为状态,而动作可以用于执行从A到B的实际业务逻辑。

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

感谢

莱昂

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

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