首页 文章

如何设计状态机

提问于
浏览
1

我希望有人可以帮我正确设计这个状态机 . 我在这个项目中使用Spring状态机和Papyrus . 我有很多简单的正交状态和一种“主”状态,它取决于所有其他状态“开启” . 那么,让我们说......

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都处于“开”位置时,我才想转换到M.on状态 .

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

1 回答

  • 2

    我不知道Spring Statemachine的细节 . 但对于UML状态机,解决方案是在所有区域处于“开启”状态时加入 .

    从问题中不清楚,当M“开启”时,当A,B或C关闭时会发生什么 . 假设:M进入“关闭”状态 .

    为了使/保持这种简单,我将历史伪状态添加到每个区域,以便记住每当一个“关闭”时哪些区域“开启” .

    Diagram of state machine

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

相关问题