Трансляция локальных событий в параллельных состояниях

Ориентированное вещание события с использованием отправки

Этот пример показывает поведение ориентированного вещания события с помощью отправки (event_name, state_name) синтаксис перехода. График использует неявное упорядоченное расположение параллельных состояний (см. Неявное упорядоченное расположение параллельных состояний).

Изначально график спит. Параллельные подсостояния A.A1 и B.B1 являются активными, что подразумевает, что параллельные (И) сверхсостояния A и B также активны. Условие [data1==1] является true. Событийный E_one принадлежит графику и виден обоим A и B.

После пробуждения график проверяет допустимые переходы на каждом уровне иерархии:

  1. Корень графика проверяет, есть ли допустимый переход в результате события. Отсутствует допустимый переход.

  2. Конечные A проверяет наличие допустимых переходов в результате события. Потому что условие [data1==1] true, существует допустимый переход от состояния A.A1 в состояние A.A2.

  3. Область действия send(E_one,B) выполняет:

    1. Трансляция событий E_one достигает состояния B. Потому что состояние B активно, это состояние получает широковещательную передачу события и проверяет, есть ли допустимый переход. Существует допустимый переход от B.B1 на B.B2.

    2. Конечные B.B1 exit действия (exitB1()) выполнить и завершить.

    3. Конечные B.B1 становится неактивным.

    4. Конечные B.B2 становится активным.

    5. Конечные B.B2 entry действия (entB2()) выполнить и завершить.

  4. Конечные A.A1 exit действия (exitA1()) выполнить и завершить.

  5. Конечные A.A1 становится неактивным.

  6. Конечные A.A2 становится активным.

  7. Конечные A.A2 entry действия (entA2()) выполнить и завершить.

Эта последовательность завершает выполнение графика с направленным событием, транслируемым в параллельное состояние.

Ориентированное Вещание События Используя Квалифицированное Имя События

Этот пример показывает поведение направленного вещания события с использованием квалифицированного имени события на переходе. График использует неявное упорядоченное расположение параллельных состояний (см. Неявное упорядоченное расположение параллельных состояний).

Единственные различия от графика в Directed Event Broadcast Using Send:

  • Событийный E_one принадлежит состояние B и видна только этому состоянию.

  • Область действия send(E_one,B) теперь send(B.E_one).

    Использование квалифицированного имени события необходимо, поскольку E_one не отображается в состоянии A.

После пробуждения график проверяет допустимые переходы на каждом уровне иерархии:

  1. Корень графика проверяет, есть ли допустимый переход в результате события. Отсутствует допустимый переход.

  2. Конечные A проверяет наличие допустимых переходов в результате события. Потому что условие [data1==1] true, существует допустимый переход от состояния A.A1 в состояние A.A2.

  3. Область действия send(B.E_one) выполняет и завершает:

    1. Трансляция событий E_one достигает состояния B. Потому что состояние B активно, это состояние получает широковещательную передачу события и проверяет, есть ли допустимый переход. Существует допустимый переход от B.B1 на B.B2.

    2. Конечные B.B1 exit действия (exitB1()) выполнить и завершить.

    3. Конечные B.B1 становится неактивным.

    4. Конечные B.B2 становится активным.

    5. Конечные B.B2 entry действия (entB2()) выполнить и завершить.

  4. Конечные A.A1 exit действия (exitA1()) выполнить и завершить.

  5. Конечные A.A1 становится неактивным.

  6. Конечные A.A2 становится активным.

  7. Конечные A.A2 entry действия (entA2()) выполнить и завершить.

Эта последовательность завершает выполнение графика с направленным событием, транслируемым с использованием квалифицированного имени события в параллельное состояние.

См. также

Похожие темы