Выход из состояния

Когда существует допустимый переход из состояния, это состояние помечается для выхода. Состояние для выхода помечается одним из следующих способов:

  • Исходящий переход начинается с контура состояния.

  • Исходящий переход пересекает контур состояния.

  • Состояние назначения является дочерним элементом параллельного состояния активированного состояния.

Рабочий процесс для выхода из состояния

Этот график потока показывает прогрессирование событий в Stateflow® для выхода из состояния. В этом графике потока данных текущее состояние относится к состоянию, в котором происходит решение или процесс.

Выход из действия

Exit действия для выполнения состояния, когда состояние активно и допустимый переход от состояния существует. Состояние выполняет свою exit действия до того, как стать неактивным.

Действиям выхода предшествует префикс exit или ex, далее следует необходимая двоеточие (:), а затем одно или несколько действий. Разделите несколько действий с возвратом каретки, точкой с запятой (;), или запятая (,).

Пример выхода из состояния

В этом примере диаграмма Stateflow инициализируется и entry действия выполняются для StateA и StateA1. Для этого графика, during действия для этого графика происходили дважды. Происходит новый временной шаг, и затем график просыпается.

Следуя рабочему процессу для выполнения диаграммы Stateflow и рабочему процессу для оценки переходов, StateB был отмечен для входа. StateA является источником перехода. На данном временном шаге x = 5, y = 2, и z = 0.

Следуя блок-схеме действий по выходу из состояния до тех пор, пока график не перейдет в спящий режим, шаги выполнения для этой диаграммы выполняются в следующем порядке:

  1. StateA не является сверхштатом StateB.

  2. Выполните выходные действия StateA и отметьте StateA как неактивный. Теперь z = 1.

  3. StateA не имеет родительского состояния.

  4. Переходите к Действиям входа.

Эти шаги завершают exit рабочий процесс для StateA. Однако график еще не спит.

Выполните рабочий процесс для ввода графика или состояния для StateB чтобы завершить временной шаг.

Выход из состояния при помощи суперпереходов

Суперпереход является переходом между различными уровнями на графике. Суперпереход может быть между состоянием на графике верхнего уровня и состоянием в одном из его подсостояний или между состояниями, проживающими в различных подсостояниях. Можно создать суперпереходы, которые охватывают любое количество уровней на графике.

Когда состояние выходит через суперпереход, после того, как выполняются выходные действия для источника перехода, его сверхсостояния помечаются неактивными и выполняются выходные действия сверхсостояний. В этом примере StateA2 отмечен для exit и StateB1 отмечен для entry. На данной точке x = 5, y = 5, и z = 0.

Следуя рабочему процессу для ввода графика или состояния до тех пор, пока график не перейдет в спящий режим, шаги выполнения для выхода из состояния StateA2 находятся в таком порядке:

  1. StateA2 не является суперштатом состояния назначения (StateB1).

  2. Выполните exit действия для StateA2 и отметьте StateA2 как неактивный.

  3. StateA2 имеет родительское состояние, StateA.

  4. StateA не является суперштатом состояния назначения (StateB1).

  5. Выполните exit действия для StateA, и отметьте StateA как неактивный.

  6. StateA не имеет родительского состояния.

Эти действия завершают exit рабочий процесс для StateA2 и StateA. Однако график еще не спит.

Выполните рабочий процесс для ввода графика или состояния для StateB и StateB1 чтобы завершить временной шаг.

Похожие темы