状態への遷移

<< 目次を表示 >>

ページ位置:  シミュレーション > 外部実行の状態マシン >

状態への遷移

状態への遷移は、遷移先の状態の種類や遷移の方法によって動作が変わります。

 

すべての場合において、状態に入る際にはentryアクションが(定義されていれば)実行されます。このentryアクションは遷移に関連づけられている振る舞い(効果)の実行後に実行されます。また、doアクションが定義されている場合、entryアクションの完了後にすぐに実行されます。

 

領域が定義されている状態については、次のような動作になります。

 

複数の領域を持つ並行状態の場合、入場点を経由して(1つかそれ以上の)領域に入る場合には、その領域については遷移先の状態が動作対象となり、それ以外の領域は既知の動作となります。

 

次の例では、このルールの内容をすべて含んでいます。この内容の具体的な作成手順を示します。

 

 

対象の状態マシン

 

クラスの定義

#

操作方法

1

クラスMyClassを定義します。

2

クラスを右クリックし、「子ダイアグラムの追加 | 状態マシン」 を実行して空の状態マシンを追加します。

この状態マシンの内容は上の図の通りです。

 

状態マシンの定義

#

操作方法

1

ダイアグラムに、初期状態・状態 State1・状態 State2・終了状態を配置します。

2

State2の大きさを広げ、右クリックして 「追加設定 | 領域の定義」 を実行し、領域 RegionB, RegionC, RegionD, RegionEを追加します。

3

State2を右クリックし、「子要素の追加 | 入場点」 を実行し、入場点 EP1 を追加します。

4

RegionBに、初期状態 InitialB 状態StateB1, 状態StateB2, 状態StateB3 を追加して遷移で結び、すべてトリガ B で遷移するようにします。

5

RegionCに、浅い履歴要素 HistoryC 状態 StateC1, 状態 StateC2, 状態 StateC3 を追加して遷移で結び、すべてトリガ C で遷移するようにします。

6

RegionDに、深い履歴要素 HistoryD 状態 StateD1, 状態 StateD2, 状態 StateD3, 状態 StateD4 を追加して遷移で結び、トリガ D で遷移するようにします。

7

RegionEに、初期状態 InitialE 状態StateE1, 状態StateE2, 状態StateE3 を追加して遷移で結び、すべてトリガE で遷移するようにします。

8

入場点EP1から状態 StateC1 と StateD1 に遷移を追加します。

 

状態間の遷移の追加

#

操作方法

1

State1 から State2へ、トリガ DEFAULT の遷移を追加します。

2

State1 から StateB2へ、トリガ EXPLICIT の遷移を追加します。

3

State1 から HistoryCへ、トリガ SHALLOW の遷移を追加します。

4

State1 から HistoryDへ、トリガ DEEP の遷移を追加します。

5

State1 から EP1へ、トリガ ENTRYPOINT の遷移を追加します。

 

その他の遷移の追加

#

操作方法

1

State2 から State1 へ、トリガ BACK の遷移を追加します。

2

State1 から Fnial へ、トリガ QUIT の遷移を追加します。

 

 

シミュレーションの実行

 

成果物要素

この例では、JavaScriptを言語として指定します。他の言語の場合には、Visual StudioやJDK等の環境が必要となります。

 

#

操作方法

1

ツールボックスの「シミュレーション」グループ内の「外部実行の状態マシン」成果物要素をダイアグラム内に配置し、名前をEnteringAStateSimulationとします。

2

MyClassクラスをモデルブラウザからこの要素にドロップし、プロパティとして配置します。名前はmyClassとします。

3

成果物要素の言語をJavaScriptに設定し、外部実行の状態マシンのシミュレーション機能が利用できるようにします。

 

 

 

ソースコードの生成

EnteringAStateSimulation要素を選択した状態で、「シミュレーション」リボン内の「外部実行」パネルにある「状態マシン」ボタンを押し、「生成・ビルドと実行」 を選択します。

出力先となるディレクトリを指定します。

 

注意:

指定したディレクトリの内容は生成前に削除されます。他のファイルが配置されていない場所を指定して下さい。

 

 

 

シミュレーションの実行

ヒント:

実行中の動作シーケンスは、シミュレーションサブウィンドウで確認できます。

 

シミュレーションを実行すると、下の図のようにState1に到達しトリガを待機する状況になります。

 

 

 

「シミュレーション」リボン内の「共通」パネルにある「トリガ」実行し、サブウィンドウを開きます。

 

1) DEFAULTのトリガを発行した結果は下の図の通りです。

 

 

 

トリガ BACK を実行し、State1に戻します。

 

 

2) EXPLICITのトリガを発行した結果は下の図の通りです。

 

 

 

トリガ BACK を実行し、State1に戻します。

 

 

3) SHALLOWのトリガを発行した結果は下の図の通りです。

 

 

 

4) 浅い履歴の動作確認のため、トリガCを2回発行します。

 

 

 

トリガ BACK を実行し、State1に戻します。

 

 

5) ENTRYPOINTのトリガを発行した結果は下の図の通りです。

 

 

 

トリガ BACK を実行し、State1に戻します。

 

 

6)  再度ENTRYPOINTのトリガを発行した結果は下の図の通りです。

 

 

 

 

7) 深い履歴の動作の確認のため、トリガDを発行します。

 

 

 

トリガ BACK を実行し、State1に戻します。

 

 

8) DEEPのトリガを発行した結果は下の図の通りです。