如何更改状态机中的目标状态
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?
谢谢
里昂
我会使用 junction
或 choice
并为传出转换定义守卫。 gh240 中讨论的内容。然后你可以捕获你的异常,即在扩展状态下存储一些东西,然后你可以从你的守卫那里自由地评估不同的条件。
选择几乎是 if/elseif/else
结构来定义哪个分支机器将遵循转换。
还有 deploy sample 以相同的概念建模。
首先,我不太确定我的案例是否适合使用spring状态机。
这是我的案例:
我有一个很大的可变对象和一组逻辑单元,它们将按特定顺序操作这个可变对象。
对于正常流程:A.exec -> B.exec -> C.exec -> 完成
对于从 A 抛出异常的错误流程:A -> 错误 -> 完成(绕过 B 和 C)
对于从 B 抛出异常的不良流程:A -> B -> 另一个流程
我想 A、B、C 可以建模为一种状态,而当从 A 转移到 B 时,可以使用一个动作来执行真正的业务逻辑。
如何从 A 捕获可能抛出的异常并将目标更改为另一个状态而不是 B?
谢谢
里昂
我会使用 junction
或 choice
并为传出转换定义守卫。 gh240 中讨论的内容。然后你可以捕获你的异常,即在扩展状态下存储一些东西,然后你可以从你的守卫那里自由地评估不同的条件。
选择几乎是 if/elseif/else
结构来定义哪个分支机器将遵循转换。
还有 deploy sample 以相同的概念建模。