如何设计状态机

How to design a state machine

我希望有人能帮我正确设计这个状态机。我在这个项目中使用 Spring 状态机和 Papyrus。我有很多简单的正交状态和一种 "master" 状态,它取决于所有其他状态 "on." 所以,让我们说...

M.off -> M.on
A.off -> A.on
B.off -> B.on
C.off -> C.on

有些事件会触发从 A.off 到 A.on、B.off 到 B.on 的转换,等等。我有这些(A、B、C ) 在自己的区域。只有当A B和C都在"on"位置时,我才想过渡到M.on状态。

我不确定在状态机中构建它的最佳方式。任何帮助将不胜感激。

我不知道 Spring Statemachine 的详细信息。但是对于 UML 状态机,解决方案是在所有区域都处于其 "on" 状态时加入。

从问题中不清楚当 M 为 "on" 时 A、B 或 C 关闭时会发生什么。假设:M 去 "off".

为了make/keep这个简单的我添加了一个历史pseudo-state到每个地区为了记住哪些地区是"on"每当一个人去"off".

当传入转换的 所有 源状态处于活动状态时,将触发到连接的转换(因此仅当 A && B && C 为 "on" 时) .