<< 目次を表示 >> ページ位置: シミュレーション > 外部実行の状態マシン > JavaScriptの利用 > CDプレーヤー |
CDプレーヤーの振る舞いは複雑ではありませんが、状態に応じてボタンの有効・無効や表示内容を制御する多数のルールがあります。
このサンプルのCDプレーヤーは次のような機能があるとします。
CDプレーヤーの状態マシン
CDPlayerクラスには2つの属性があります。
CDプレーヤーの状態マシンは次のような内容です。
この内容について、外部実行の状態マシン要素を作成し、シミュレーションを通して動作が適切かどうか確認します。
外部実行のステートマシン要素を作成し、 CDPlayer型のプロパティを配置します。シミュレーションを実行してトリガを発行し、設計内容が正しいかどうか確認します。
生成されたコードの概要
Enterprise Architectは、次のようなコードを自動生成します。
項目 |
説明 |
/CDPlayer.js |
このファイルには、CDPlayerクラスの定義・属性・メソッドが含まれます。また、状態遷移に関係するStateMachinesクラスも定義されています。 |
/ContextManager.js |
このファイルには状態に応じた管理を行うための処理が含まれます。 シミュレーションでは、複数の状態を取ることができます。例えば、テニスの試合であればUmpireクラスとPlayerクラスの2つのプレーヤーplayerA・playerBがあるとすれば、それぞれのクラスごとに状態遷移が定義され、インスタンスごとに独自の状態を持ちます。 |
/EventProxy.js |
シミュレーションで利用するイベントやシグナルを定義しています。
引数のあるイベントを発行した場合にはSignalクラスと結びつくシグナルイベントをモデルで定義します。そして、Signalクラスに属性を追加します。Signalクラスのインスタンスには、属性に対応した実行時の値を持たせます。 |
/SimulationManager.js |
シミュレーション時にEnterprise Architectとのやりとりを行うためのファイルです。 |
/html/ManagerWorker.js |
ユーザーが操作する画面とバックエンドとの間のやりとりを行います。
|
/html/statemachineGUI.js |
ユーザーが操作する画面とManagerWorkerの間のやりとりを定義します。
//to do: write user's logic このコメントの内容を削除し、実際の処理を記述します。詳細は後述します。 |
/html/index.html |
ボタンなどのHTMLでの画面が定義されてます。CSSやJavaScriptを利用できます。 |
index.html と statemachineGUI.js への追記
自動生成されるファイルに以下の追記を行います。
statemachineGUI.jsにはメソッドonActiveStateResonse_cdPlayer が含まれます。
statemachineGUI.jsには関数onRuntimeValueResponseがあります。
動作するサンプル
このサンプルの動作するものは、以下のURLから確認できます。
CD Player Simulation(https://sparxsystems.com/resources/examples/cd_player/html/index.html)
Load Random CDボタンを押すとCDを挿入し、再生などの操作を行うことができます。