我想使用 Boost MSM 创建以下状态机:
如果正交状态为“B”,我希望能够阻止Error
事件触发转换。AllOk + Error == InError
例如,为所有正交状态指定转换会很好。就像是:
{AllOk, B} + Error == {AllOk, A}
但是,我找不到使用 Boost MSM 的方法,也找不到常规的 UML 命名法,这让我觉得我走错了路。
是否有经典的“UML 惯用语”来处理这种行为?
我看到两种可能的解决方案:
- 设置一个警卫
AllOk + Error == InError
,检查其他状态是否是B
,就像这个响应。 - 发送一个更具体的错误(在我的例子中,
CouldNotComputePath
,因为我正在编写一个机器人),Error
如果它没有被处理,则以某种方式将其转换。我不确定该怎么做。