Порядок выполнения действий элементов диаграммы состояний

Очень важно точно знать, в каком именно порядке выполняются действия элементов диаграммы состояний. Для этого мы предлагаем вам изучить приведенный ниже алгоритм.

При срабатывании перехода выполняются следующие действия (в указанном порядке):

  1. Действия при выходе из состояния, начиная с текущего простого состояния, и дальше вверх по иерархии состояний, заканчивая тем сложным состоянием, на уровне иерархии которого и передается управление.
  2. Действие перехода.
  3. Действия при входе в состояние, начиная со сложного состояния, которое получает управление, и дальше, вниз по иерархии состояний, вплоть до простого состояния или псевдо-состояния, в которое передается управление.
  4. Если управление передается в псевдо-состояние, то выполняется код действия псевдо-состояния, а затем управление немедленно передается другому состоянию, и описанный выше алгоритм выполняется сначала.

    Действия состояний и переходов выполняются за нулевое модельное время. Поэтому они не могут содержать синхронизационных операций и операций задержки и не могут вызывать методы, явно или неявно содержащие такие операции.

    Пример


    Пример порядка выполнения действий

    Давайте рассмотрим пример, приведенный на рисунке. Предположим, что состояние N является текущим простым состоянием, и срабатывает переход T1. Тогда действия выполняются в следующем порядке:

    1. Действие при выходе из состояния N
    2. Действие при выходе из состояния M
    3. Действие перехода T1
    4. Действие состояния ветвления
    Затем, в зависимости от дополнительных условий переходов, будет выбран переход T2 или T3. Если будет выбран переход T2, то выполнятся следующие действия:
    1. Действие перехода T2
    2. Действие указателя начального состояния I1 (действия при входе и выходе из состояния L не выполняются, поскольку управление остается в этом состоянии)
    3. Действие при входе в состояние M
    4. Действие указателя начального состояния I2
    5. Действие при входе в состояние N

    Если выбирается переход T3, то выполняются следующие действия:

    1. Действие при выходе из состояния L
    2. Действие при выходе из состояния K (действия состояния V не выполняются)
    3. Действие перехода T3
    4. Действие при входе в состояние S
    5. Действие при входе в состояние P
    6. Действие состояния-ветвления
    7. Действие при выходе из состояния P
    8. Действие перехода T4 (дополнительное условие перехода должно быть равно true, поскольку это единственный выход из ветвления)
    9. Действие при входе в состояние Q
    10. Действие указателя начального состояния I3
    11. Действие при входе в состояние R