我开始熟悉MSM增强库。我发现这个真正有趣的questions关于加入几个正交状态。如何使用MSM增强库运行同一子状态机的多个实例
此外,我发现在boost文档中重用父状态机中的子状态机的方法,并编写了几个简单的嵌套状态机。
但是,我无法围绕如何将这两件事结合在一起。
我的目标是分叉到相同的子状态机的几个独立的实例,并等到它们完成之后再返回到父级控制器。
但是,boost documentation说,它是不可能直接分叉状态机。
注意(也适用于叉子):目前,不可能使用子机作为显式条目的目标。请使用输入伪状态来获得几乎相同的效果。
例
买票平面可以模型作为子状态机,你要求的价格,然后进行一些评估和比你可以购买它(取消和没有完成订单也是可能的)。但同样的道理可以适用于几家航空公司。 现在,我们假设我们想要创建一个软件来扫描市场并预订来自不同提供商的一定数量的票据。 当我们收到客户的订单时,我们询问市场,并决定从4家不同的航空公司购买(客户不介意)。 现在,4个子状态机将并行工作,只有当最后一个命令完成时,控制才会返回到父状态机。 (我知道这个例子并不好,但我希望你明白了)。
问题
是否有可能到餐桌,并使用相同的状态机的几个实例(或实现与伪状态几乎相同的效果)?状态机如何知道事件所指的是哪个子状态机?
如果有可能,请您指点我正确的方向?我知道这个增强文档example,但它并没有真正解决我的问题。
我处于项目的早期阶段,所以如果有必要,我仍然可以移动到不同的状态机库(boost状态图也在评估中)。
非常感谢你为你的努力,我想我一定能建立在你的方法。我会仔细研究你的例子,再次感谢。 –