Этот пример показывает поведение направленной широковещательной передачи события с помощью синтаксиса
на переходе. График использует неявное упорядоченное расположение параллельных состояний (см. Неявное Упорядоченное расположение Параллельных состояний).send(event_name,state_name)
Первоначально, график спит. Параллель подутверждает, что A.A1
и B.B1
активны, который подразумевает, что параллель (AND) сверхдержавы A
и B
также активна. Условие [data1==1]
верно. Событие E_one
принадлежит графику и видимо и к A
и к B
.
После пробуждения график проверяет на допустимые переходы на каждом уровне иерархии:
Корневые проверки графика, чтобы видеть, существует ли допустимый переход в результате события. Нет никакого допустимого перехода.
A
состояния проверяет на любые допустимые переходы в результате события. Поскольку условие, [data1==1]
верен, существует допустимый переход от 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()
) выполняются и завершаются.
Эта последовательность завершает выполнение графика с направленной широковещательной передачей события к параллельному состоянию.
Этот пример показывает поведение направленной широковещательной передачи события с помощью квалифицированного имени события на переходе. График использует неявное упорядоченное расположение параллельных состояний (см. Неявное Упорядоченное расположение Параллельных состояний).
Единственные различия от графика в Направленной Широковещательной передаче События Используя Отправляют:
Событие E_one
принадлежит B
состояния и видимо только к тому состоянию.
Действием send(E_one,B)
является теперь send(B.E_one)
.
Используя квалифицированное событие имя необходимо, потому что E_one
не видим, чтобы утвердить A
.
После пробуждения график проверяет на допустимые переходы на каждом уровне иерархии:
Корневые проверки графика, чтобы видеть, существует ли допустимый переход в результате события. Нет никакого допустимого перехода.
A
состояния проверяет на любые допустимые переходы в результате события. Поскольку условие, [data1==1]
верен, существует допустимый переход от 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()
) выполняются и завершаются.
Эта последовательность завершает выполнение графика с направленной широковещательной передачей события с помощью квалифицированного имени события к параллельному состоянию.