はじめに
今回と次回の2回に分けて、インターオペラビリティ機能について詳しく説明し、アプリケーションを完成させます。今回は、
- 車載器データを記録するクラス
- メッセージ(リクエスト、レスポンス)
- ビジネス・オペレーション
- データ変換
- ビジネス・ルール
の作成について説明します。
アプリケーションの全体構成図を再掲します。
図に示したように、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では、このようにクラスの多重継承が可能です。
クラスの定義ができたらコンパイルしてください。

