0

我正在设计一个状态机并且有一个特定的状态,我可以从两个不同的状态进入......我不知道如何回到以前的状态......还是我建模错了?

为了显示 :

   | 状态 | 触发 | 下一个状态
---------------------------------
1. | 初始 | evtX | 一个
2. | 初始 | 事件 | 乙
3. | 乙| evtX | 一个
4. | 一个 | evtZ | ???

最后一行是我遇到麻烦的地方。我需要转换到初始状态,如果 A 是从第 1 行的转换到达的,我需要转换到状态 B,如果 A 是从第 3 行的转换到达的。

我怎样才能更好地建模呢?

4

1 回答 1

1

事实上,你有两种不同的 A 状态:

   | state   | trigger  | nextstate
---------------------------------
1. | initial |   evtX   |    A1
2. | initial |   evtY   |    B
3. | B       |   evtX   |    A2
4. | A1      |   evtZ   | initial
4. | A2      |   evtZ   | B

如果您想要更强大的东西,请尝试使用 Harel/UML 状态图(它具有“超级状态、正交区域和活动作为状态的一部分”[1])。您可以看看 SCXML [2]。我不知道不知道他们中的任何一个。

[1] http://en.wikipedia.org/wiki/Harel_statechart#Harel_statechart

[2] http://en.wikipedia.org/wiki/SCXML

于 2011-04-19T23:17:17.520 回答