データストア機能のご紹介(その2)

今回は、データストア機能について、前回の記事に続いて、データ更新の検知機能をご紹介します。

データ更新の検知

「テーブルの更新時に呼び出し」という機能を使うことで実現できます。

準備

クラウド実行環境

まず、テーブル更新時に呼び出したい「クラウド実行環境」を表示します。もし、まだ作ってない場合は作っておいてください。

クラウド実行環境の設定をクリックします。

  1. 設定を編集するのリンクをクリックしてください。
  2. データストア接続をONにしてください。
  3. 保存をクリックします。

データストア

次に、検知したいテーブルの設定タブをクリックします。

  1. 「テーブルの更新時に呼び出し」をONにします。操作できない場合は、クラウド実行環境を1つ以上作ってください。
  2. テーブル更新時の呼び出し先のクラウド実行環境を選択します。
  3. 呼び出しを行う更新種別 INSERT、MODIFY、DELETEのうち必要なものにチェックを入れます。

フロー

最後にフローを作って、先ほどのクラウド実行環境にデプロイします。

例えば以下の様なフローです。

これは、LCDPノードからdebugノードに接続するだけのフローです。LCDPノードの始まりは、LCDPで終わる必要があるのでLCDPノードにも接続します。debugノードは、システムコンソールにチェックを入れます。

このフローでは、テーブルが更新されたときに、LCDPノードがその更新内容を受け取ってクラウド実行環境のログに書き込むということをします。

保存したら、フローの概要画面からデプロイします。

クラウド実行環境を選択します。

デプロイ対象を先ほど設定したテーブル更新時に呼び出したい「クラウド実行環境」にチェックを入れてデプロイボタンをクリックします。

デプロイステータスがデプロイ済みになったら、準備が完了です。

実験

ここからは実際にデータストア上でデータの操作をおこなって、どのようにフローが呼び出されるのかを確認していきます。

データストアの画面にアクセスします。事前にデータを入れておいたので、いくつかのデータが表示されています。

データの更新

まず、一番最初の行のデータを更新してみます。tempを21から23に変更します。

データが更新されました。

このとき、クラウド実行環境のログを見てみます。

すると、以下の様に記録されています。

debugノードへのpayloadは、eventNameがMODIFYとなっていて、更新前と更新後の値が含まれています。

[Nov 15th 2023, 21:27:28]:  2023-11-15T12:27:28.525Z	f2340dd4-5545-49b8-a271-b49a9aabe500	INFO	15 Nov 12:27:28 - [info] [debug:debug 1] 
{
  tableId: '50958c1f-fba7-415e-b6bb-1f065a75e7a9',
  eventName: 'MODIFY',
  oldItem: { label: 'SensorA', ts: 1695125667223, temp: 21 },
  newItem: { label: 'SensorA', ts: 1695125667223, temp: 23 }
}

データの追加

次に、データを追加してみます。SensorBで、tempを40にしてOKをクリックします。

データが追加されました。

このとき、クラウド実行環境のログを見ると、以下の様に記録されています。

debugノードへのpayloadは、eventNameがINSERTとなっていて、追加された値が含まれています。

[Nov 15th 2023, 21:28:12]:  2023-11-15T12:28:12.220Z	644811d6-0223-4ae4-8d10-061fe0c6678b	INFO	15 Nov 12:28:12 - [info] [debug:debug 1] 
{
  tableId: '50958c1f-fba7-415e-b6bb-1f065a75e7a9',
  eventName: 'INSERT',
  newItem: { label: 'SensorB', ts: 1695125667223, temp: 40 }
}

データの削除

では、先ほど追加したデータを削除してみます。該当の行にチェックを入れて削除をクリックします。

このとき、クラウド実行環境のログを見ると、以下の様に記録されています。

debugノードへのpayloadは、eventNameがDELETEとなっていて、削除された値が含まれています。

[Nov 15th 2023, 21:28:29]:  2023-11-15T12:28:29.560Z	5ba1be8b-eff3-4600-8b0f-d9ff9f19065f	INFO	15 Nov 12:28:29 - [info] [debug:debug 1] 
{
  tableId: '50958c1f-fba7-415e-b6bb-1f065a75e7a9',
  eventName: 'REMOVE',
  oldItem: { label: 'SensorB', ts: 1695125667223, temp: 40 }
}

いずれも、データストアへのアイテムの追加・更新・削除が行われたタイミングで、クラウド実行環境が呼び出され、フローが実行されたことがわかります。

まとめ

今回は、データストアの更新通知機能の使い方を解説しました。データストアからクラウド実行環境が呼び出された直後のpayloadにある更新の種別や新旧の更新の内容を条件にして、後続のフローをつくっていけると思います。

ドキュメントの内容も合わせて御確認いただければと思います。ご不明な点がありましたら、サポートまでお気軽にお問い合わせください。

https://docs.enebular.com/ja/datastore/overview

https://docs.enebular.com/ja/datastore/createflow#CalledCloudEE