はじめに
今回と次回の2回に分けて、インターオペラビリティ機能について詳しく説明し、アプリケーションを完成させます。今回は、
- 車載器データを記録するクラス
- メッセージ(リクエスト、レスポンス)
- ビジネス・オペレーション
- データ変換
- ビジネス・ルール
の作成について説明します。
アプリケーションの全体構成図を再掲します。
![全体図](http://cz-cdn.shoeisha.jp/static/images/article/12117/12117_01_s.png)
図に示したように、MQTTプロトコル経由で車載器のデータをIRISに取り込む部分は既に説明しました。今回と次回で作成するのは次の機能です。
- MQTT経由で入ってきた車載器データを変換する
- 変換されたデータを適切なコンポーネントに配送するためのビジネス・ルール、ビジネス・プロセスを定義する
- 車載器データをデータベースに保存する
- 車載器データから「イベント」を検知し、MQTTブローカにPublishする
それでは早速開発を始めましょう。今回もVisual Studio Codeを使用して開発を行います。準備として、前回の内容を反映したコンテナを起動しておいてください。そのコンテナがない方は、前回の記事の内容を実施してください。
今回説明するクラスは、DriveDemoディレクトリのIRIS-MQTT/projects/srcs/iris以下にあります。説明を読みながら適宜利用してください。なお、ソースファイルなど一式をまだダウンロードしていない方は、GitHubからpullしてください。
クラスの定義
まずは、車載器のデータをすべて記録するクラス(DriveDemo.Data.DriveRecord)の定義です。
Class DriveDemo.Data.DriveRecord Extends(%Persistent, %XML.Adaptor) { Property CarId As %String; Property RelativeTm As %Integer; Property Longitude As %Float; Property Latitude As %Float; Property Azimuth As %Float; Property Speed As %Float; Property EngineRPM As %Float; Property AccelPos As %Float; Property BrakeSW As %Boolean; Property AcumDistance As %Float; Property AcumFuel As %Float; Property FuelInjection As %Float; Property aX As %Float; Property aY As %Float; Property aZ As %Float; Index MainIdx On CarId; }
前回定義したDriveDemo.Data.CarLatestクラスとほぼ同様です。後の項で説明するリクエストメッセージで使用するため、Extends (%Persistent, %XML.Adaptor)と定義しています。%XML.Adaptorクラスは、インスタンスデータをXML形式で表現することを可能にするクラスです。また、IRISでは、このようにクラスの多重継承が可能です。
クラスの定義ができたらコンパイルしてください。