在无状态下重新进入国家时保留子状态?

时间:2017-11-17 09:31:23

标签: c# state-machine stateless-state-machine

我有一台状态机,如下所示。我已使用Stateless在C#中实现了这一点。

On触发器的情况下,RequestStatus状态可以重新进入。发生这种情况时,状态机可以处于以下任何状态:OnOn > StandbyOn > Operational。现在,对于此触发器,当前状态应保持原样,并且只应返回状态,即执行ReturnStatus()

可以使用OnEntryFrom(Trigger, Action)方法执行取决于触发的功能。但问题是,如果我设置OnEntryFrom状态为On,则每次触发触发器时,如果其中一个子状态处于活动状态,则首先退出,然后On状态退出然后OnEntry On状态发生。

现在我想要的是,无论状态机处于活动状态的3个状态中的哪一个,对于RequestStatus触发器,只需执行ReturnStatus()方法。

我可以设置OnEntryFrom(PowerOn, () => Initialize())OnEntryFrom(RequestStatus, () => ReturnStatus())的一种方法。通过添加新触发器StandbyRequestStatusOperationalRequestStatus对子状态执行相同操作,并根据之前激活的触发器触发它们。我觉得这很乏味,特别是如果变电站的数量增加的话。

另一种方法是保留子状态并仅处理一次。但我无法在Stateless中找到办法。

使用Stateless是否可以实现?有没有人这样做过?

Stateless Statemachine Used

0 个答案:

没有答案