このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
ステートから出る有効な遷移がある場合,そのステートは退出対象としてマークされます。ステートは,以下のいずれかの方法で退出対象としてマークされます。
出力遷移がステートの境界線で開始されている。
出力遷移がステートの境界線と交差している。
遷移先ステートがアクティブなステートのパラレルステートの子である。
次のフローチャートは,ステートを出るためのStateflow®内のイベントの進行を示しています。このフローチャートでは,現在のステートが,決定またはプロセスの実行されているステートを参照します。
ステートに対する退出
アクションは,ステートがアクティブで,ステートからの有効な遷移が存在する場合に実行されます。ステートが非アクティブになる前に退出
アクションが実行されます。
退出アクションの前には接頭辞退出
または前女友
が追加され,その後に必須のコロン(:
1)、さらにつ以上のアクションが続きます。複数のアクションは,キャリッジリターン,セミコロン(;
)またはコンマ(,
)で区切ります。
この例では,Stateflowチャートが初期化され,StateA
とStateA1
に対し条目
アクションが実行されます。このチャートでは,チャートに対する在
アクションが2回発生しています。新しいタイムステップが発生し,その後チャートが起動します。
Stateflowチャート実行のワークフローおよび遷移を評価するためのワークフローに従い,StateB
が条目対象としてマークされています。StateA
は遷移元です。このタイムステップでは,x = 5
、y = 2
、z = 0
です。
チャートがスリープするまでステートの退出アクションのフローチャートに従うと,このチャートの実行ステップは次のような順序になります。
StateA
はStateB
のスーパーステートではありません。
StateA
の退出アクションを実行し,StateA
を非アクティブとしてマークします。ここでz = 1
になります。
StateA
には親ステートがありません。
条目アクションに移動します。
上記のステップでStateA
に対する退出
のワークフローが完了します。ただし,チャートはまだスリープ状態になっていません。
StateB
に対しチャートまたはステートに入るためのワークフローを実行してタイムステップを完了します。
スーパートランジションは,チャート内の異なるレベル間での遷移です。スーパートランジションが行われるのは,最上位のチャート内のステートと,そのいずれかのサブステート内のステートの間か,異なるサブステート内にあるステートの間です。チャート内の任意数のレベルにまたがるスーパートランジションを作成できます。
スーパートランジションを介してステートから出る際は,遷移元に対する退出アクションが実行された後で,そのスーパーステートが非アクティブとしてマークされ,スーパーステートの退出アクションが実行されます。この例では,StateA2
が退出
対象としてマークされ,StateB1
が条目
対象としてマークされます。この時点で,x = 5
、y = 5
、z = 0
です。
チャートがスリープするまでチャートまたはステートに入るためのワークフローに従うと,ステートStateA2
を出るための実行ステップは次のような順序になります。
StateA2
は,遷移先ステート(StateB1
)のスーパーステートではありません。
StateA2
に対して退出
アクションを実行し,StateA2
を非アクティブとしてマークします。
StateA2
には親ステートStateA
があります。
StateA
は,遷移先ステート(StateB1
)のスーパーステートではありません。
StateA
に対して退出
アクションを実行し,StateA
を非アクティブとしてマークします。
StateA
には親ステートがありません。
これらのアクションでStateA2
およびStateA
に対する退出
のワークフローが完了します。ただし,チャートはまだスリープ状態になっていません。
StateB
およびStateB1
に対しチャートまたはステートに入るためのワークフローを実行してタイムステップを完了します。