CDプレーヤー

<< 目次を表示 >>

ページ位置:  シミュレーション > 外部実行の状態マシン > 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

ユーザーが操作する画面とバックエンドとの間のやりとりを行います。

  • 画面からは ManagerWorker から情報を取得するためのメッセージが送信されます。
  • ManagerWorkerはContextManagerを継承していますので、現在アクティブな状態の取得や実行時の変数の値などを取得できます。
  • ManagerWorkerはバックエンドから取得した情報を返すために画面にメッセージを送信します。

/html/statemachineGUI.js

ユーザーが操作する画面とManagerWorkerの間のやりとりを定義します。

  • 関数startStateMachineWebWorker と stopStateMachineWebWorkerが含まれます。
  • 関数onActiveStateResonse と onRuntimeValueResponse については、以下のようなコメントが記載されます。

     //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を挿入し、再生などの操作を行うことができます。