| << 目次を表示 >> ページ位置: シミュレーション > 外部実行の状態マシン > 状態への遷移  | 
状態への遷移は、遷移先の状態の種類や遷移の方法によって動作が変わります。
すべての場合において、状態に入る際にはentryアクションが(定義されていれば)実行されます。このentryアクションは遷移に関連づけられている振る舞い(効果)の実行後に実行されます。また、doアクションが定義されている場合、entryアクションの完了後にすぐに実行されます。
領域が定義されている状態については、次のような動作になります。
複数の領域を持つ並行状態の場合、入場点を経由して(1つかそれ以上の)領域に入る場合には、その領域については遷移先の状態が動作対象となり、それ以外の領域は既知の動作となります。
次の例では、このルールの内容をすべて含んでいます。この内容の具体的な作成手順を示します。
対象の状態マシン

クラスの定義
| # | 操作方法 | 
| 1 | クラスMyClassを定義します。 | 
| 2 | クラスを右クリックし、「子ダイアグラムの追加 | 状態マシン」 を実行して空の状態マシンを追加します。 この状態マシンの内容は上の図の通りです。 | 
状態マシンの定義
| # | 操作方法 | 
| 1 | ダイアグラムに、開始(Initial)・状態 State1・状態 State2・終了(Final)を配置します。 | 
| 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のトリガを発行した結果は下の図の通りです。
