我想使用Boost MSM创建以下状态机:
如果正交状态为“B”,我希望能够防止Error
事件触发AllOk + Error == InError
转换。例如,为所有正交状态指定过渡会很好。就像是:
{AllOk, B} + Error == {AllOk, A}
但是,我找不到使用Boost MSM的方法,也找不到常规的UML命名法,这使我觉得我走错了路。
是否有经典的“UML惯用语”来处理这种行为?
我看到两种可能的解决方案:
AllOk + Error == InError
,以检查其他状态是否为B
,like this response。 CouldNotComputePath
),并且如果未处理,则以某种方式将其转换为Error
。我不太确定该怎么做。 最佳答案
好的,我找到一个解决方案:
可以在MainStateMachine中“捕获”错误事件。如果不是,则在MainStateMachine上触发内部转换,该转换将发送EnterError事件,以使另一个正交状态切换到InError。
关于c++ - 如何防止错误处理的正交区域过渡,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61593396/