Этот пример показывает поведение ориентированного вещания события с помощью отправки
синтаксис перехода. График использует неявное упорядоченное расположение параллельных состояний (см. Неявное упорядоченное расположение параллельных состояний).(event_name
, state_name
)
Изначально график спит. Параллельные подсостояния A.A1
и B.B1
являются активными, что подразумевает, что параллельные (И) сверхсостояния A
и B
также активны. Условие [data1==1]
является true. Событийный E_one
принадлежит графику и виден обоим A
и B
.
После пробуждения график проверяет допустимые переходы на каждом уровне иерархии:
Корень графика проверяет, есть ли допустимый переход в результате события. Отсутствует допустимый переход.
Конечные A
проверяет наличие допустимых переходов в результате события. Потому что условие [data1==1]
true, существует допустимый переход от состояния A.A1
в состояние A.A2
.
Область действия send(E_one,B)
выполняет:
Трансляция событий E_one
достигает состояния B
. Потому что состояние B
активно, это состояние получает широковещательную передачу события и проверяет, есть ли допустимый переход. Существует допустимый переход от B.B1
на B.B2
.
Конечные B.B1
exit
действия (exitB1()
) выполнить и завершить.
Конечные B.B1
становится неактивным.
Конечные B.B2
становится активным.
Конечные B.B2
entry
действия (entB2()
) выполнить и завершить.
Конечные A.A1
exit
действия (exitA1()
) выполнить и завершить.
Конечные A.A1
становится неактивным.
Конечные A.A2
становится активным.
Конечные A.A2
entry
действия (entA2()
) выполнить и завершить.
Эта последовательность завершает выполнение графика с направленным событием, транслируемым в параллельное состояние.
Этот пример показывает поведение направленного вещания события с использованием квалифицированного имени события на переходе. График использует неявное упорядоченное расположение параллельных состояний (см. Неявное упорядоченное расположение параллельных состояний).
Единственные различия от графика в Directed Event Broadcast Using Send:
Событийный E_one
принадлежит состояние B
и видна только этому состоянию.
Область действия send(E_one,B)
теперь send(B.E_one)
.
Использование квалифицированного имени события необходимо, поскольку E_one
не отображается в состоянии A
.
После пробуждения график проверяет допустимые переходы на каждом уровне иерархии:
Корень графика проверяет, есть ли допустимый переход в результате события. Отсутствует допустимый переход.
Конечные A
проверяет наличие допустимых переходов в результате события. Потому что условие [data1==1]
true, существует допустимый переход от состояния A.A1
в состояние A.A2
.
Область действия send(B.E_one)
выполняет и завершает:
Трансляция событий E_one
достигает состояния B
. Потому что состояние B
активно, это состояние получает широковещательную передачу события и проверяет, есть ли допустимый переход. Существует допустимый переход от B.B1
на B.B2
.
Конечные B.B1
exit
действия (exitB1()
) выполнить и завершить.
Конечные B.B1
становится неактивным.
Конечные B.B2
становится активным.
Конечные B.B2
entry
действия (entB2()
) выполнить и завершить.
Конечные A.A1
exit
действия (exitA1()
) выполнить и завершить.
Конечные A.A1
становится неактивным.
Конечные A.A2
становится активным.
Конечные A.A2
entry
действия (entA2()
) выполнить и завершить.
Эта последовательность завершает выполнение графика с направленным событием, транслируемым с использованием квалифицированного имени события в параллельное состояние.