在 MDriven 的状态机中执行初始状态的触发器

Execution of triggers for initial state in state machines in MDriven

我正在定义状态机,并希望在创建对象时让状态机 "run"。考虑到这一点,我省略了所有转换的触发器(并且只定义了守卫)。如果没有进一步触发,创建的对象似乎会保持在第一个状态?如何避免必须显式调用触发器?如果我执行触发器,所有后续状态都由该(一个)触发器调用传递?第一个状态有什么"special"吗?

第一种状态比较特殊,不需要触发。来自 start-state 的转换在对象创建时执行。

要模仿您正在寻找的行为,您可以对所有其他转换使用相同的触发方法。这些转换受到保护,因此一次只有 1 个转换有效。但是您需要实际执行此单个触发器才能使任何事情发生。

您现在可以通过以下伪代码检查是否可以触发以及是否可以触发: 如果 self.trigger?然后 self.trigger