Переход к предыдущему состоянию - PullRequest
0 голосов
/ 20 апреля 2011

Я проектирую конечный автомат и у меня есть одно конкретное состояние, в которое я могу войти из двух разных состояний ... Я не уверен, как вернуться в предыдущее состояние ... или я моделирую его неправильно? *

для иллюстрации:

   | state   | trigger  | nextstate
---------------------------------
1. | initial |   evtX   |    A
2. | initial |   evtY   |    B
3. | B       |   evtX   |    A
4. | A       |   evtZ   | ????

В последнем ряду у меня проблемы. Мне нужно перейти в исходное состояние, если A был получен из транзита в строке № 1, и мне нужно перейти в состояние B, если A был получен из перехода в строке № 3.

Как мне смоделировать это лучше?

1 Ответ

1 голос
/ 20 апреля 2011

На самом деле, у вас есть два разных состояния 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 (которые имеют «суперсостояния, ортогональные области и действия как частьstate "[1]). Вы можете посмотреть на SCXML как weel [2]. Я не знаю ни одного из них.

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

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

...