スーパートランジションを使用した階層レベル間の移動
"スーパートランジション" とは、チャート内の異なるレベル間での遷移です。スーパートランジションは、最上位のチャート内のステートと、その兄弟関係のステートのいずれかにあるサブステートの間、またはチャートの異なるステートにあるサブステートの間を遷移することができます。たとえば、以下のチャートには、兄弟関係にある 2 つのステートのサブステート間でのスーパートランジションが含まれています。
チャート内の任意数のレベルにまたがるスーパートランジションを作成できます。サブチャートに出入りするスーパートランジションは、それぞれが異なる包含レベルにある複数の遷移セグメントで構成されます。たとえば、次のチャート モデルには、On
サブチャートを抜け出すスーパートランジションが表示されます。
同じスーパートランジションがサブチャート内に表示されます。
遷移のアクションの定義に記載された手順を使用して、任意の遷移セグメントにラベルを付けることができます。結果のラベルは、スーパートランジションの各セグメントに表示されます。たとえば、前の例では、両方のスーパートランジションのセグメントに同じラベル [warm()]
が付いています。いずれかのセグメントのラベルを変更すると、その変更が他のセグメントにも表示されます。
各セグメントがサブチャートに出入りする位置は、相互に影響します。たとえば、スーパートランジションがサブチャート On
を出る位置を移動すると、スーパートランジションが最上位のチャートに現れる位置も移動します。
ヒント
entry 端子と exit 端子は、Stateflow® の階層内の境界を越えて遷移する別の方法を提供します。詳細については、スーパートランジションか、entry 端子と exit 端子かの選択を参照してください。
サブチャートに入るスーパートランジションの作成
遷移元ステートの境界をポイントします。ポインターが十字形に変化します。
クリックしてサブチャートの境界の内側にドラッグします。スーパートランジションが遷移元ステートをサブチャートに接続します。サブチャートに遷移が入る位置を変更するには、サブチャートの境界の内側付近に遷移セグメントの終点をドラッグします。
サブチャートをダブルクリックして開きます。スーパートランジションの矢印が赤で強調表示されます。
矢印をクリックして、サブチャート内の目的の遷移先までポインターをドラッグします。
ポインターを離します。
メモ
サブチャートの境界を越えてスーパートランジションを描画するときに、元に戻すボタンとやり直しボタンは無効です。前の操作を元に戻したりやり直したりすることはできません。
サブチャートを出るスーパートランジションの作成
サブチャートの境界の外側の位置に遷移を描画します。
サブチャートの親に移動します。スーパートランジションの矢印が赤で強調表示されます。
矢印をクリックして、チャート内の目的の遷移先までポインターをドラッグします。
ポインターを離します。
メモ
サブチャートの境界を越えてスーパートランジションを描画するときに、元に戻すボタンとやり直しボタンは無効です。前の操作を元に戻したりやり直したりすることはできません。
スーパートランジションか、entry 端子と exit 端子かの選択
スーパートランジション、および entry 端子と exit 端子のいずれを使用しても、チャート階層の異なるレベルに移動できます。選択する手法は、設計要件によって決まります。
シナリオ | 推奨 |
---|---|
兄弟関係にある 2 つのステート (いずれもサブチャートではない) のサブステート間の遷移 | スーパートランジションを使用します。遷移元ステートの境界をクリックし、ポインターを遷移先ステートにドラッグすることで、サブチャートの境界を越えないスーパートランジションを作成できます。 |
通常のサブチャートのサブステートに出入りする遷移 | スーパートランジション、entry 端子または exit 端子のいずれかを使用します。
|
Atomic サブチャートのサブステートに出入りする遷移 | entry 端子または exit 端子を使用します。スーパートランジションは Atomic サブチャートの境界を越えることができません。 |