Tip

このドキュメントはAIによって翻訳されました。不正確な情報については、英語版をご参照ください

コレクションイベント

はじめに

コレクションイベントタイプのトリガーは、コレクションに対するデータの作成、更新、削除イベントを監視します。コレクションに対してデータ操作が発生し、設定された条件を満たした場合に、対応するワークフローがトリガーされます。例えば、新規注文作成後に商品の在庫を減らしたり、新しいコメントが追加された後に手動レビューを待ったりするようなシナリオで活用できます。

基本的な使い方

コレクションの変更には、いくつかの種類があります。

  1. データの作成後
  2. データの更新後
  3. データの作成または更新後
  4. データの削除後

コレクションイベント_トリガータイミングの選択

ビジネス要件に応じて、トリガーのタイミングを選択できます。変更の種類としてコレクションの更新が含まれる場合、変更されたフィールドを限定することも可能です。選択されたフィールドが変更された場合にのみトリガー条件が満たされ、フィールドを選択しない場合は、すべてのフィールドの変更がトリガーの対象となります。

コレクションイベント_変更されたフィールドの選択

さらに詳細な設定として、トリガーされるデータ行の各フィールドに対して条件ルールを設定し、そのフィールドが対応する条件を満たした場合にのみトリガーを実行することも可能です。

コレクションイベント_データ条件の設定

コレクションイベントがトリガーされると、イベントを生成したデータ行がトリガーコンテキストデータとして実行プランに注入され、後続のワークフローノードで変数として利用できるようになります。ただし、後続のノードでこのデータの関連フィールドを使用したい場合は、事前に関連データのプリロードを設定する必要があります。選択された関連データは、トリガー後にコンテキストに一緒に注入され、階層的に選択して使用することが可能です。

関連情報

一括データ操作によるトリガーは現在サポートされていません

コレクションイベントは現在、一括データ操作によるトリガーをサポートしていません。例えば、記事データを作成する際に、同時にその記事に複数のタグデータ(多対一関係データ)を追加した場合、記事の新規作成に関するワークフローのみがトリガーされ、同時に追加された複数のタグはタグの新規作成に関するワークフローをトリガーしません。また、多対多関係データの関連付けや新規追加時も、中間コレクションのワークフローはトリガーされません。

アプリケーション外のデータ操作ではトリガーされません

HTTP API を介してアプリケーションのインターフェースを呼び出し、コレクションを操作した場合も対応するイベントをトリガーできます。しかし、NocoBase アプリケーションを介さず、データベース操作によって直接データが変更された場合は、対応するイベントはトリガーされません。例えば、データベース本来のトリガーは、アプリケーション内のワークフローとは関連付けられません。

また、SQL 操作ノードを使用してデータベースを操作することは、データベースを直接操作することに相当するため、コレクションイベントはトリガーされません。

外部データソース

ワークフローはバージョン 0.20 から外部データソースをサポートしています。外部データソースプラグインを使用しており、コレクションイベントが外部データソースに対して設定されている場合、そのデータソースに対するデータ操作がアプリケーション内で完結している限り(ユーザーによる新規作成、更新、ワークフローによるデータ操作など)、対応するコレクションイベントをトリガーできます。ただし、データ変更が他のシステムを介して、または外部データベース内で直接行われた場合は、コレクションイベントはトリガーされません。

新規注文作成後に合計金額を計算し、在庫を減らすシナリオを例に見てみましょう。

まず、商品コレクションと注文コレクションを作成します。データモデルは以下の通りです。

フィールド名フィールドタイプ
商品名称単一行テキスト
価格数値
在庫整数
フィールド名フィールドタイプ
注文ID自動採番
注文商品多対一(商品)
注文合計数値

そして、基本的な商品データを追加します。

商品名称価格在庫
iPhone 14 Pro799910
iPhone 13 Pro59990

次に、注文コレクションイベントに基づいたワークフローを作成します。

コレクションイベント_例_新規注文トリガー

いくつかの設定項目は以下の通りです。

  • コレクション:「注文」コレクションを選択します。
  • トリガータイミング:「データの作成後」を選択します。
  • トリガー条件:空欄にします。
  • 関連データのプリロード:「商品」にチェックを入れます。

その後、ワークフローのロジックに従って他のノードを設定します。具体的には、商品の在庫が0より大きいかを確認し、0より大きければ在庫を減らし、そうでなければ注文を無効として削除します。

コレクションイベント_例_新規注文ワークフローのオーケストレーション

ノードの設定については、各ノードタイプの紹介ドキュメントで詳しく説明します。

このワークフローを有効にし、インターフェースから新規注文を作成してテストしてみましょう。「iPhone 14 Pro」を注文すると、対応する商品の在庫は9に減ります。一方、「iPhone 13 Pro」を注文した場合、在庫不足のため注文は削除されます。

コレクションイベント_例_新規注文実行結果