CAPの代表的なデータフロー¶
本章ではCAPの代表的な以下のシナリオでのデータの流れについて説明します。
-
デバイスからのデバイスデータの受信
-
Webアプリケーションからデバイスへのアクチュエーション指示の配信
-
Webアプリケーションからクエリを利用したデバイスデータの検索
デバイスからのデバイスデータの受信¶
サービス連携をしない場合のデータフロー¶
デバイスからデバイスデータを受信し、サービスとの連携を行わずにデバイスの状態を管理する場合のデータフローは以下のとおりです。なお、本データフローはCache型デバイスタイプを利用した設定の構成です。
-
CAPは、デバイスが送信したデータをHTTP REST API/MQTT APIのいずれかで受信します。
-
CAPは受信したデータからDevice Phantomを作成し、キャッシュストアに保存します。
サービス連携およびデータ蓄積する場合のデータフロー¶
サービス連携を設定後にデバイスからデバイスデータを受信し、デバイスの状態情報を管理する場合のデータフローは以下のとおりです。
-
CAPは、デバイスが送信したデータをHTTP REST API/MQTT APIのいずれかで受信します。
-
CAPは受信したデータをDevice PhantomのReportedプロパティに設定し、キャッシュストアに格納します。
-
CAPはDevice Phantomの更新が完了後に、更新したDevice Phantomのデータをサービス連携で設定された外部サービスに転送します。
-
転送機能では、JSONのフォーマット変更が可能です。
JSONフォーマット変更を設定していない場合は、Device Phantomデータフォーマット(「Device Phantomの仕様理解」参照)のまま送信されます。
なお、パススルー型のデバイスタイプを利用することで、デバイスの状態情報を管理しないケースも実現できます。
Webアプリケーションからデバイスへのアクチュエーション指示¶
CAPでは、デバイスアプリケーションからCAPへのデータ送信だけでなく、CAPからデバイスアプリケーションへのデータ送信(アクチュエーション指示)を行うことができます。
アクチュエーション指示の機能は、Cache型デバイスタイプを用いることで利用できます。 Cache型デバイスタイプでは、デバイスデータから送信されるデバイスデータの最新の値(reportedデータ)を保持しています。 また、Webアプリケーションから送信されるデバイスアプリケーションに期待する値(desiredデータ)も併せて保持しています。 アクチュエーション指示はreportedデータとdesiredデータが一致しない場合に、CAPから送信されます。
アクチュエーション指示のデータフローは以下のとおりです。(①→②→③→④は③→④→①→②の順になっても同様です)
-
CAPはデバイスが送信したデータを REST API/MQTT APIのいずれかで受信します。
-
CAPは受信したデータをキャッシュストア内に格納されたDevice Phantomのreportedプロパティに設定します。
-
Webアプリケーションはデバイスに期待する値を設定するため、REST APIにデータを送信します。
-
CAPは受信したデータをのキャッシュストア内に格納されたDevice Phantomのdesiredプロパティに設定します。
-
CAPはreportedデータ、もしくはdesiredデータの更新を検知すると、reportedデータとdesiredデータ内に含まれる各プロパティの差分比較を行います。 同一プロパティ名で異なる値のデータを検出すると、アクチュエーション指示をデバイスに送信します。
アクチュエーション指示は、差分を検知したプロパティを含んだJSONです。
プロパティの値にはWebアプリケーションに設定されたdesiredデータの値が設定されます。
Webアプリケーションによるクエリを利用したデバイス検索¶
Webアプリケーションがクエリを利用しデバイスを検索する場合のデータフローは以下のとおりです。
なお、本機能を利用するにはCache型のデバイスタイプを利用している必要があります。
-
Webアプリケーションがデバイスの検索のクエリをREST APIに送信します。
-
CAPは指定されたデバイスタイプを対象に受信したクエリを実行し、条件に合致するデバイスの検索を行います。
-
検索結果をHTTP REST APIに戻します。
-
Webアプリケーションにデバイスの検索結果が返却されます。