パラレル ステートでのローカル イベントのブロードキャスト
send による指示のあるイベント ブロードキャスト
以下の例は、遷移での 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()
) が実行されて完了します。
このシーケンスは、パラレル ステートに対する指示のあるイベント ブロードキャストを伴うチャートの実行を完了します。
修飾イベント名による指示のあるイベント ブロードキャスト
以下の例は、遷移アクションでの修飾イベント名による指示のあるイベント ブロードキャストの動作を示しています。
send による指示のあるイベント ブロードキャスト におけるチャートとの唯一の違いは、以下のとおりです。
イベント
E_one
がステートB
に属しており、そのステートにとってのみ可視的です。ステートB
のスコープにイベントE_one
を割り当てるには、モデル エクスプローラーでステートを選択してイベントを追加します。アクション
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()
) が実行されて完了します。
このシーケンスは、修飾イベント名によるパラレル ステートへの指示のあるイベント ブロードキャストを伴うチャートの実行を完了します。