このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
デフォルト遷移を使用したチャートの実行の制御
排他的 (OR) 構造のデフォルト遷移
以下の例は、サブステートへのデフォルト遷移が定義されている、OR ステートから排他的 (OR) 構造を含むスーパーステートへの遷移を示しています。
最初は、チャートはスリープ状態です。ステート A
がアクティブです。イベント E_one
が発生して、チャートを起動します。このイベントは、チャートのルートからチャートの階層の下方向に処理されます。
チャートのルートは、
E_one
の結果、有効な遷移が存在するかどうかをチェックします。ステートA
からスーパーステートB
への有効な遷移が存在します。ステート
A
の exit アクション (exitA()
) が実行されて完了します。ステート
A
が非アクティブとしてマークされます。遷移アクション
A
が実行されて完了します。ステート
B
がアクティブとしてマークされます。ステート
B
の entry アクション (entB()
) が実行されて完了します。ステート
B
がステートB
.B1
への有効なデフォルト遷移を検出します。ステート
B
.B1
がアクティブとしてマークされます。ステート
B
.B1
の entry アクション (entB1()
) が実行されて完了します。チャートはスリープ状態に戻ります。
このシーケンスは、ステート A
が最初にアクティブな場合に、イベント E_one
に関連する Stateflow® チャートの実行を完了します。
ジャンクションへのデフォルト遷移
以下の例は、コネクティブ ジャンクションへのデフォルト遷移の動作を示しています。ジャンクションへのデフォルト遷移は、チャートが起動するたびにではなく、最初にステート B が開始されたときにのみ有効です。
この例では、最初は、チャートはスリープ状態です。ステート B.B1
がアクティブです。条件 [C_two]
は真です。イベントが発生して、チャートを起動します。このイベントは、チャートのルートからチャートの階層の下方向に処理されます。
ステート
B
は、いずれかのイベントの結果、有効な遷移が存在するかどうかをチェックします。該当するものは存在しません。ステート
B
のduring
アクション (durB()
) が実行されて完了します。ステート
B1
は、いずれかのイベントの結果、有効な遷移が存在するかどうかをチェックします。該当するものは存在しません。ステート
B1
のduring
アクション (durB1()
) が実行されて完了します。
このシーケンスは、いずれかのイベントの発生と関連する Stateflow チャートの実行を完了します。
デフォルト遷移とヒストリ ジャンクション
以下の例は、デフォルト遷移とヒストリ ジャンクションを含むスーパーステートの動作を示しています。チャートでは、出力遷移の暗黙的な順序付けが使用されます (暗黙的な順序付けを参照)。
最初は、チャートはスリープ状態です。ステート A
がアクティブです。ヒストリ ジャンクションが、ステート B4
がスーパーステート B
の以前にアクティブであったサブステートであるという事実を記録します。イベント E_one
が発生して、チャートを起動します。このイベントは、チャートのルートからチャートの階層の下方向に処理されます。
チャートのルートは、
E_one
の結果、有効な遷移が存在するかどうかをチェックします。ステート
A
からスーパーステートB
への有効な遷移が存在します。ステート
A
の exit アクション (exitA()
) が実行されて完了します。ステート
A
が非アクティブとしてマークされます。ステート
B
がアクティブとしてマークされます。ステート
B
の entry アクション (entB()
) が実行されて完了します。ステート
B
はヒストリ ジャンクションを使用して、スーパーステートの遷移先を判定します。ヒストリ ジャンクションは、サブステート
B
.B4
が最後のアクティブなサブステートであり、遷移先になることを示します。ステート
B
.B4
がアクティブとしてマークされます。ステート
B
.B4
の entry アクション (entB4()
) が実行されて完了します。チャートはスリープ状態に戻ります。
このシーケンスは、イベント E_one
に関連する Stateflow チャートの実行を完了します。
ラベル付きのデフォルト遷移
以下の例は、ラベル付きのデフォルト遷移を使用する方法を示しています。チャートでは、出力遷移の暗黙的な順序付けが使用されます (暗黙的な順序付けを参照)。
最初は、チャートはスリープ状態です。ステート A
がアクティブです。イベント E_one
が発生して、チャートを起動します。このイベントは、チャートのルートからチャートの階層の下方向に処理されます。
チャートのルートは、
E_one
の結果、有効な遷移が存在するかどうかをチェックします。ステート
A
からスーパーステートB
への有効な遷移が存在します。イベントE_one
またはE_two
が発生した場合に遷移は有効になります。ステート
A
の exit アクション (exitA()
) が実行されて完了します。ステート
A
が非アクティブとしてマークされます。ステート
B
がアクティブとしてマークされます。ステート
B
の entry アクション (entB()
) が実行されて完了します。ステート
B
がステートB
.B1
への有効なデフォルト遷移を検出します。E_one
の結果、デフォルト遷移が有効になります。ステート
B
.B1
がアクティブとしてマークされます。ステート
B
.B1
の entry アクション (entB1()
) が実行されて完了します。チャートはスリープ状態に戻ります。
このシーケンスは、ステート A
が最初にアクティブな場合に、イベント E_one
に関連する Stateflow チャートの実行を完了します。