遷移のグループ化と実行
遷移フロー チャートタイプ
アクティブなステートまたはチャートの遷移の実行に先立ち、Stateflow® は以下のタイプ別に遷移をグループ化します。
既定のフロー チャートは、同じ親から始まるすべてのデフォルト遷移セグメントです。
内部のフロー チャートは、ステートから発生し、完全にステート内に存在するすべての遷移セグメントです。
外部のフロー チャートは、それぞれのステートで発生しながら少なくとも一部はステート外部に存在するすべての遷移セグメントです。
それぞれのフロー チャートのセットは、各種ジャンクションおよび遷移により制限を行う遷移セグメントに接続されている、その他の遷移セグメントを含みます。次の例を考えます。
上記の例では、ステート A
には内部遷移とデフォルト遷移の両方が設定されており、ステート A.A1
と A.A2
への出力遷移を含むジャンクションに接続しています。ステート A
がアクティブな場合は、その内部フロー チャートのセットには、以下の内容が含まれています。
内部遷移
ジャンクションからステート
A.A1
とA.A2
への出力遷移
さらに、ステート A
の既定のフロー チャートのセットには、以下の内容が含まれています。
ジャンクションへのデフォルト遷移
ジャンクションからステート
A.A1
とA.A2
への 2 つの出力遷移
この場合、ジャンクションからの 2 つの出力遷移セグメントは、複数のフロー チャートタイプのメンバーに該当します。
一連のフロー チャートの実行順序
フロー チャートの各グループは、有効な遷移が検出されるまで、グループの優先順位の順に実行されます。デフォルト遷移グループが最初に実行されてから、外部遷移グループ、内部遷移グループという順序で実行されます。フロー チャートの各グループは、以下のように実行されます。
アクティブ ステートの遷移セグメントに順番を付けます。
アクティブなステートには、選択可能ないくつかの出力遷移を設定できます。妥当性のチェック前に、チャートは各遷移の順番を判定します。遷移の評価順序 を参照してください。
順番付けられた遷移の中から、次の遷移セグメントを選択します。
セグメントの妥当性を検証します。
セグメントが無効の場合、手順 2 に進みます。
遷移セグメントの遷移先がステートの場合は、以下を実行します。
遷移セグメントのテストは停止され、各先行ジャンクションから元の開始遷移への遷移セグメントをバックアップして含める形で遷移パスが作成されます。
遷移パスで親の直下のサブステートに該当するステートが終了します (ステートを出るを参照)。
遷移パス全体で最終遷移セグメントからの遷移アクションが実行されます。
遷移先ステートがアクティブになります (チャートまたはステートに入るを参照)。
出力遷移セグメントが設定されたジャンクションが遷移先に該当する場合は、以下を実行します。
ステート Exit またはステート Entry を伴わずに、テストが停止します。
出力遷移セグメントが設定されたジャンクションが遷移先に該当する場合は、一連の出力セグメントに対して手順 1 を繰り返します。
ジャンクションで出力遷移セグメントをすべてテストしてから、以下のアクションを実行します。
ジャンクションに至る入力遷移セグメントに引き返します。
バックアップしたセグメントに続く次の遷移セグメントから、手順 2 を続行します。
起点となるすべての遷移がテストされると、一連のフロー チャートは実行を完了します。