Сводные данные семантических правил графика

Ввод графика

Выполняется набор путей потока по умолчанию (см. «Выполнение набора Графиков потока»). Если это действие не вызывает входа в состояние и график имеет параллельное разложение, то каждое параллельное состояние становится активным (см. «Ввод состояния»).

Если выполнение путей потока по умолчанию не вызывает входа в состояние, возникает ошибка несогласованности состояний.

Выполнение активного графика

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

Введите состояние

  1. Если родительский элемент состояния не активен, выполните шаги с 1 по 4 для родительского элемента.

  2. Если это состояние является параллельным, проверяйте, что все братья и сестры с более высоким (то есть более ранним) порядком входа активны. Если нет, сначала выполните шаги с 1 по 5 для этих состояний.

    Состояния Parallel (AND) упорядочиваются для входа на основе того, используете ли вы явное упорядоченное расположение (по умолчанию) или неявное упорядоченное расположение. Для получения дополнительной информации смотрите Явное упорядоченное расположение параллельных состояний и Неявное упорядоченное расположение параллельных состояний.

  3. Пометьте состояние активно.

  4. Выполните любые действия входа.

  5. Вводите детей, при необходимости:

    1. Если состояние содержит соединение истории и в какой-то момент после последней инициализации графика существовал активный дочерний элемент этого состояния, выполните действия входа для этого дочернего элемента. В противном случае выполните пути потока по умолчанию для состояния.

    2. Если в этом состоянии есть дочерние элементы, которые являются параллельными состояниями (параллельное разложение), выполните шаги входа с 1 по 5 для каждого состояния в соответствии с его порядком входа.

    3. Если это состояние имеет только одно дочернее подсостояние, подсостояние становится активным, когда родительский элемент становится активным, независимо от того, присутствует ли переход по умолчанию. Вход в родительское состояние автоматически делает подсостояние активным. Наличие любого внутреннего перехода не влияет на определение активного подсостояния.

  6. Если это состояние является параллельным, выполните все шаги входа для состояния одноуровневого типа следующего в порядке входа, если он существует.

  7. Если родительский элемент пути перехода не совпадает с родительским элементом текущего состояния, выполните шаги входа 6 и 7 для непосредственного родительского элемента этого состояния.

Выполнение активного состояния

  1. Набор внешних графиков потока выполняется (см. «Выполнение набора Графиков потока»). Если это действие вызывает переход состояния, выполнение останавливается. (Обратите внимание, что этот шаг никогда не происходит для параллельных состояний.)

  2. Во время действия и действующие действия по событию выполняются.

  3. Набор внутренних потоков графиков выполняться. Если это действие не вызывает перехода состояния, активные дочерние элементы выполняются, начиная с шага 1. Параллельные состояния выполняются в том же порядке, в котором они становятся активными.

Выход из активного состояния

  1. Если это параллельное состояние, убедитесь, что все одноуровневые состояния, которые стали активными после этого состояния, уже стали неактивными. В противном случае выполните все шаги выхода из этих состояний.

  2. Если есть какие-либо активные дочерние элементы, выполните шаги выхода для этих состояний в обратном порядке, в котором они стали активными.

  3. Выполните все действия по выходу.

  4. Пометьте состояние как неактивное.

Выполните набор Графиков потока

Поток графиков выполняться, начиная с шага 1 ниже с набором стартовых переходов. Все начальные переходы для внутренних графиков потока являются сегментами перехода, которые начинаются от соответствующего состояния и полностью находятся в этом состоянии. Все начальные переходы для внешних графиков потока являются переходными сегментами, которые начинаются от соответствующего состояния, но находятся, по меньшей мере, частично вне этого состояния. Все начальные переходы для графиков потока по умолчанию являются сегментами перехода по умолчанию, которые имеют начальные точки с одинаковыми родительскими элементами:

  1. Происходит упорядочивание набора переходных сегментов.

  2. Пока есть оставшиеся сегменты для тестирования, происходит тестирование сегмента на валидность. Если сегмент недействителен, выполняется проверка следующего сегмента. Если сегмент действителен, выполнение зависит от места назначения:

    Государства

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

    2. Состояния, которые являются непосредственными дочерними элементами родительского элемента выхода пути перехода (см. Выход из активного состояния).

    3. Действие перехода от конечного пути перехода выполняется.

    4. Состояние назначения становится активным (см. «Ввод состояния»).

    Соединения без выходящих сегментов перехода

    Тестирование останавливается без каких-либо выходов или записей в состоянии.

    Соединения с исходящими сегментами перехода

    Шаг 1 повторяется с набором исходящих сегментов из соединения.

  3. После проверки всех исходящих сегментов перехода в соединении, верните входящий сегмент перехода, который привел вас к соединению, и продолжите на шаге 2, начиная со следующего сегмента перехода после сегмента обратного перехода. Набор потоков графиков концов выполнение, когда проверки из всех начальных переходов завершены.

Выполнение широковещательной передачи события

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

  1. Если приемник события активен, то он выполняется (см. Выполнение активного графика и Выполнение активного состояния). (Приемник события является родительским элементом события, если прямое широковещание события не происходит с помощью send() функцию.)

    Если приемник события не активен, ничего не происходит.

  2. После трансляции события вещатель выполняет раннюю логику возврата на основе типа оператора действия, вызвавшего событие.

    Тип действия

    Логика раннего возврата

    Вход в состояние

    Если состояние больше не является активным в конце широковещательной передачи события, все оставшиеся шаги в переходе в состояние не происходят.

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

    Если состояние больше не является активным в конце широковещательной передачи события, все оставшиеся действия выхода и шаги в переходе состояния не происходят.

    Состояние во время

    Если состояние больше не является активным в конце широковещательной передачи события, все оставшиеся шаги в выполнении активного состояния не выполняются.

    Состояние

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

    Переход

    Если родительский элемент пути перехода не является активным или если у этого родительский элемент есть активный дочерний элемент, оставшиеся действия перехода и вход в состояние не происходят.