exercises for hl7 in ensemble - intersystems · 2018-06-26 · 【体験lab】iot...
TRANSCRIPT
【体験 Lab】IoTデバイスへどうやって接続する? 演習補足 v1.0
InterSystem Japan Summit 2016
Confidential - Do Not Duplicate
1
IoTデバイスへどうやって接続する?
演習ガイド
V1.0
InterSystem Japan Summit 2016
【体験 Lab】IoTデバイスへどうやって接続する? 演習補足 v1.0
InterSystem Japan Summit 2016
Confidential - Do Not Duplicate
2
はじめに
本セッションでは、センサーを搭載したデバイスから取得できる様々な値を、どのように Ensembleが取得
し、取り扱うことができるのかについて、体験を通してご理解いただきます。
本日のシナリオは、
各種センサー付き大型(実物は小型)冷凍庫があり、以下のように様々な企業での取
扱いが想定されていると仮定します。
大型食料品販店
製薬会社の医薬品研究部門で
生鮮食料品取扱い会社 など
センサー値の使い道として、
例えば、冷蔵庫のファン回転数を取得するようにし、極端な数値の変動がある場合ファンに異常がないか
どうか、交換時期でないかどうかなど、過去の計測値や閾値から判断し、確認作業指示の自動通知など、
故障を未然に防ぐための仕組みを検討できます。
また、無駄な在庫を残しすぎないよう、物品の入出庫を検知させ、在庫内容に合わせて適切な量を入庫す
るように人やシステムへ指示を出す仕組みも検討できます。
さらに、在庫量に応じた適切な温度調整指示により顧客側の電気代節約につながる仕組みを提案できま
す。
センサーの値は、エラーの兆候を探るため、また故障やエラーを未然に防ぐために、取得・調査し続けるこ
とが重要ですが、正常な状態が続く場合、センサー値はあまり重要ではありません。
むやみやたらに全てを登録し続けることが良いのかどうかも、検討が必要です。
デバイスから送られてくるセンサー値は多種多様で情報量も膨大となるため、シンプルで軽量、省電力な
通信プロトコルのMQTT を利用した通信が望まれます。
MQTTは TCP/IP プロトコル上で動作するパブリッシュ/サブスクライブ型のモデルを採用しているため、
Ensemble もパブリッシュ/サブスクライブ型モデルの通信に対応する必要があります。
本セッションでは、将来のバージョンの新機能である「MQTTに対応できる Javaビジネスホスト」の使い方
を通して、Ensembleから IoTデバイスへの接続とデータの送受信の仕組みについてご体験いただきま
す。
【体験 Lab】IoTデバイスへどうやって接続する? 演習補足 v1.0
InterSystem Japan Summit 2016
Confidential - Do Not Duplicate
3
ステップ1. Java ビジネスホストの構築
冷蔵庫から取得できるセンサー値は、MQTTブローカー(HiveMQ)に通知されます。
冷蔵庫から MQTT ブローカーへパブリッシュされるセンサー値をサブスクライブする役割として、MQTT ク
ライアント実装用の Java ライブラリ:pahoを使用した MQTT クライアントをビジネス・サービスとして用意
しています。
また、Ensembleから MQTTブローカーへパブリッシュしたい場合にも、pahoを使用した MQTT クライ
アントをビジネス・オペレーションとして用意しています。
pahoを使用して作成した MQTT クライアントは、Ensembleのビジネス・サービス、ビジネス・オペレーシ
ョンとして稼動できるよう、インターシステムズ提供 Java ライブラリを使用して Java コードで記載していま
す。
ステップ 1では、Javaで記載された MQTT クライアントでもあり、ビジネス・サービスでもあるコードを、
Ensembleのビジネス・サービスとして登録するまでの流れ(図の破線部分)を体験します。
JavaPaho
JavaPaho
MQTT(Pub/Sub)
Ensemble
MQTT用ビジネスサービス
MQTT用ビジネス
オペレーション
ビジネスプロセス
ワークフロー(BO)
XML
XML
/Freezerz/GreenBox/stock 在庫(在庫の高さをCMで通知)/Freezerz/GreenBox/door ドア開閉(開くと1、閉じると0)/Freezerz/GreenBox/temperature/inside 冷蔵庫内温度/Freezerz/GreenBox/temperature/outside 冷蔵庫のファン周辺の温度/Freezerz/GreenBox/fan ファン回転数
センサーから取得できるトピック
図 1 センサーデータの流れ
【体験 Lab】IoTデバイスへどうやって接続する? 演習補足 v1.0
InterSystem Japan Summit 2016
Confidential - Do Not Duplicate
4
最初に、Ensemble のプロダクション構成画面を開きます(以下いずれかの URL にアクセスしてください)。
※ポート番号はコース開始時に参加者個別番号の指定があります。
環境 A http://192.168.11.121:577xx/csp/ensemble/EnsPortal.ProductionConfig.zen?$NAMESPACE=ENSEMBLE
環境 B http://192.168.11.120:577xx/csp/ensemble/EnsPortal.ProductionConfig.zen?$NAMESPACE=ENSEMBLE
管理ポータル1 を起動し、Ensemble→(Ensembleネームスペースを選択)→構成→プロダクション
もし、プロダクションが停止している場合は、「開始する」のボタンから開始してください。
開始後の表示
図 2 Ensemble:プロダクションの開始
続いて、「Javaのビジネス・ホスト作成画面」へ移動し、ビジネス・サービスを生成します2。
1 管理ポータルへの URLは演習時ご案内する URLをご利用ください。
2 演習テーマのために事前にビジネス・サービスとビジネス・オペレーション用の Java コードを作成してい
ます。作成したコードは JAR ファイルとして指定の場所に配置しています。
【体験 Lab】IoTデバイスへどうやって接続する? 演習補足 v1.0
InterSystem Japan Summit 2016
Confidential - Do Not Duplicate
5
Ensemble→構築→Javaのビジネス・ホスト
図 3 Ensemble:Javaのビジネス・ホスト生成画面
設定詳細は次ページをご参照ください。
【体験 Lab】IoTデバイスへどうやって接続する? 演習補足 v1.0
InterSystem Japan Summit 2016
Confidential - Do Not Duplicate
6
入力文字列は、指定のWebページをコピー元としてご利用下さい。
環境 A http://192.168.11.121:577xx/csp/ensemble/Copy.cls
環境 B http://192.168.11.120:577xx/csp/ensemble/Copy.cls
生成できると「Business Host generated successfuly」と表示されます。
図 4 JAR ファイルから Java ビジネス・サービス(GS16.IoTBS)の生成
【体験 Lab】IoTデバイスへどうやって接続する? 演習補足 v1.0
InterSystem Japan Summit 2016
Confidential - Do Not Duplicate
7
続いて、構築したビジネス・サービスクラスをプロダクションに登録します。
再度、プロダクション構成画面を開きます。
URLは以下の通りです(または、管理ポータルトップ→Ensemble→構築→プロダクション で開きます)。
環境 A http://192.168.11.121:577xx/csp/ensemble/EnsPortal.ProductionConfig.zen?$NAMESPACE=ENSEMBLE
環境 B http://192.168.11.120:577xx/csp/ensemble/EnsPortal.ProductionConfig.zen?$NAMESPACE=ENSEMBLE
「サービス」の右横の のボタンをクリックし、追加用ウィザードを表示し、登録用の設定を行います。
サービスクラス GS16.IoTBS
プルダウンから選択できます(下のほうにリストされています)
サービス名 IoTBS
有効にする チェックを入れます
図 5 プロダクションへのビジネス・サービス(GS16.IoTBS)の追加
続いて、登録したビジネス・サービスの詳細設定を行います。
【体験 Lab】IoTデバイスへどうやって接続する? 演習補足 v1.0
InterSystem Japan Summit 2016
Confidential - Do Not Duplicate
8
ステップ2. ビジネス・サービス:IoTBSの構成設定
入力する内容は、指定のWebページからコピーしてご利用下さい。
環境 A http://192.168.11.121:577xx/csp/ensemble/Copy.cls
環境 B http://192.168.11.120:577xx/csp/ensemble/Copy.cls
プロダクションに追加したビジネス・サービス:IoTBSの構成設定を行います。
コンポーネント名を選択します。
図 6 Java ビジネス・サービス(IoTBS)の構成設定
設定が終わったら、設定タブの「適用」ボタンを押下し、設定を反映させます。
一旦、プロダクションを停止し、再度開始すると MQTTTopicsで指定したトピックの内容を受信できます。
本環境では、イベントログに受信した全情報を記録するようにしています。
【体験 Lab】IoTデバイスへどうやって接続する? 演習補足 v1.0
InterSystem Japan Summit 2016
Confidential - Do Not Duplicate
9
イベントログに記録されるトピックは以下の通りです。
表 1 IoTデバイスから送信されるトピック
/Freezerz/GreenBox/stock 在庫(在庫の高さを CMで通知します。)
/Freezerz/GreenBox/door ドア開閉(開くと 1、閉じると 0)
/Freezerz/GreenBox/temperature/inside 冷蔵庫内温度
/Freezerz/GreenBox/temperature/outside 冷蔵庫のファン周辺の温度
/Freezerz/GreenBox/fan ファン回転数
Ensemble→表示→イベント・ログ
図 7 Ensemble:イベント・ログ
センサーの値が取得できていることが確認できました。
現時点では、イベントログにのみ情報が記載されています。
本セッションでは、冷蔵庫内の在庫に変化が起きたとき、ドア開閉が行われた時、ファン回転数が 3回連
続閾値を超えた場合に、Ensembleのビジネス・サービスからビジネス・オペレーションへメッセージが送
信される仕組みを取っています。
【体験 Lab】IoTデバイスへどうやって接続する? 演習補足 v1.0
InterSystem Japan Summit 2016
Confidential - Do Not Duplicate
10
それでは、冷蔵庫のドア開閉を行い、メッセージが送信されるかどうか確認します。
プロダクション構成画面に戻り、ビジネス・サービス:IoTBS を選択し、メッセージタブをクリックします。
プロダクション構成画面は、管理ポータルトップ→Ensemble→構成→プロダクション または以下 URLを
指定します。
環境 A http://192.168.11.121:577xx/csp/ensemble/EnsPortal.ProductionConfig.zen?$NAMESPACE=ENSEMBLE
環境 B http://192.168.11.120:577xx/csp/ensemble/EnsPortal.ProductionConfig.zen?$NAMESPACE=ENSEMBLE
ドア開閉前
IoTBSを選択し、画面右側の「メッセージ」タブを選択します。ドア開閉前はまだメッセージが来ていません。
ドア開閉後、メッセージが到達していることがわかります。
メッセージ詳細を確認するため、「メッセージ・ビューワに移動」 をクリックします。
図 8 ビジネス・サービス:IoTBSのメッセージ受信を確認する
ドアの開閉を行った後、メッセージが到達していることが確認できます。
メッセージ詳細を確認するため、「メッセージ・ビューワに移動」をクリックし、画面を移動します。
【体験 Lab】IoTデバイスへどうやって接続する? 演習補足 v1.0
InterSystem Japan Summit 2016
Confidential - Do Not Duplicate
11
図 9 メッセージ・ビューワ:センサーデータ受信の確認
メッセージの受信を確認できましたので、この後は冷蔵庫の変化に応じた Ensembleの動作について確
認します。
メッセージ・ビューワの移動した後で「検索」ボタンを押下します。
「セッション」の列の数字をクリックすると、別タブでトレース画面が表示されます。
行を選択すると、画面右側の表示が変わります。受信したトピックデータを確認するには、「内容」のタブを選択すると確認しやすいです。
ドアが閉まったとき
ドアが開いたとき
【体験 Lab】IoTデバイスへどうやって接続する? 演習補足 v1.0
InterSystem Japan Summit 2016
Confidential - Do Not Duplicate
12
ステップ3. Esemble内処理を確認する
今回のテーマでは、冷蔵庫が在庫で一杯3 になった後で在庫の減りが確認できた場合に、在庫数の管理
担当者へワークフローメッセージを送信し、在庫調整を行うかどうか判断をさせる仕組みを取り入れていま
す。
最初に、冷蔵庫が在庫で一杯になったときのメッセージを確認します。
演習の流れでは、
6センチ以上の高さの在庫が置かれたとき在庫が一杯
と判断をするように作成されています。
在庫一杯になった場合、Ensembleから冷蔵庫にパブリッシュメッセージ(full)を送信します。
3今回の実験環境では、ミニ冷蔵庫の在庫が高さ 6センチを超えた場合、在庫が一杯になったと判断して
います。
【体験 Lab】IoTデバイスへどうやって接続する? 演習補足 v1.0
InterSystem Japan Summit 2016
Confidential - Do Not Duplicate
13
パブリッシュ用メッセージを送信したメッセージができていることが確認できます。
①②
③
④
⑥⑤
⑦
メッセージの横棒を選択すると画面右側の「内容」タブにトピックデータが表示されます。一番最後のメッセージ(MQTTブローカーへの出力の列)を参照します。
トレースタブを選択
それでは、メッセージで確認してみましょう。
プロダクション構成画面に戻り、「オペレーション」の列にある「MQTTブローカーへの出力」を選択し「メッセ
ージ」タブをクリックします。
在庫が一杯になった場合、Ensembleのビジネス・オペレーションから MQTTブローカーへ full を通知
していることがわかります。
図 10 在庫高 6 センチ以上になったときのメッセージを探す
【体験 Lab】IoTデバイスへどうやって接続する? 演習補足 v1.0
InterSystem Japan Summit 2016
Confidential - Do Not Duplicate
14
①
②
③
④
⑤
⑦
ワークフローを使用しているため、この先は、人による審査を行わない限り、進みません。
⑥
トレースタブを選択
続いて、在庫が一杯になった後に在庫数を減少させると、在庫調整を行うようメッセージが送信されます。
在庫調整については、ユーザに判断させたいため、Ensembleのワークフローを使用しています。
ワークフロー用ビジネス・オペレーション(=在庫補充)に受信されたメッセージを確認します。
プロダクション構成画面でオペレーション列にある「在庫補充」をクリックします。
図 11 在庫補充:ワークフローへのメッセージ送信
【体験 Lab】IoTデバイスへどうやって接続する? 演習補足 v1.0
InterSystem Japan Summit 2016
Confidential - Do Not Duplicate
15
在庫補充を行うかどうかの判断のため、ワークフローポータルを開きます。
担当者が処理を引き受ける場合「引き受ける」を押下します。
ストックを補充するボタンを押下すると、冷蔵庫への入庫が許可され、冷蔵庫の扉のディスプレイ上に「refill underway」と表示されます。
図 12 ワークフローポータルで在庫補充を判断する
【体験 Lab】IoTデバイスへどうやって接続する? 演習補足 v1.0
InterSystem Japan Summit 2016
Confidential - Do Not Duplicate
16
ストックを補充するボタン押下後、先ほど参照していたトレース画面を更新します。
(F5キーを押して画面を更新します。)
refill 通知されると冷蔵庫扉のディスプレイ上以下のように表示されます。
MQTTブローカーへ”refill”をパブリッシュします。ワークフローで指示を
行ったことにより、動作したメッセージ
図 13 ワークフローで在庫補充を指示した後のメッセージ
【体験 Lab】IoTデバイスへどうやって接続する? 演習補足 v1.0
InterSystem Japan Summit 2016
Confidential - Do Not Duplicate
17
この後、もう 1度在庫を満タンにすると、Ensembleから MQTTブローカーへ full が通知され、冷蔵庫
扉のディスプレイから[Refill uderway]の文字が消えます。
ここもメッセージで追いかけてみましょう。
fullの通知を行うのは、ビジネス・オペレーションの「MQTTブローカーへの出力」のため、プロダクション
構成で「MQTTブローカーへの出力」を選択後、メッセージタブで「メッセージビューワへ移動」をクリックし
ます。
パブリッシュ用メッセージを送信したメッセージができていることが確認できます。
①②
③
④
⑥⑤
⑦
メッセージの横棒を選択すると画面右側の「内容」タブにトピックデータが表示されます。一番最後のメッセージ(MQTTブローカーへの出力の列)を参照します。
トレースタブを選択
【体験 Lab】IoTデバイスへどうやって接続する? 演習補足 v1.0
InterSystem Japan Summit 2016
Confidential - Do Not Duplicate
18
Ensembleのビジネス・オペレーション[MQTTブローカーへの出力] から fullが通知され、冷蔵庫の扉
は以下のように4 表示されます。
4 手作りのセンサー付き冷蔵庫のため、在庫の cm の表示に若干の誤差があります。予めご了承ください。