このドキュメントはAIによって翻訳されました。不正確な情報については、英語版をご参照ください
コレクションイベント
はじめに
コレクションイベントタイプのトリガーは、コレクションに対するデータの作成、更新、削除イベントを監視します。コレクションに対してデータ操作が発生し、設定された条件を満たした場合に、対応するワークフローがトリガーされます。例えば、新規注文作成後に商品の在庫を減らしたり、新しいコメントが追加された後に手動レビューを待ったりするようなシナリオで活用できます。
基本的な使い方
コレクションの変更には、いくつかの種類があります。
- データの作成後
- データの更新後
- データの作成または更新後
- データの削除後

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

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

コレクションイベントがトリガーされると、イベントを生成したデータ行がトリガーコンテキストデータとして実行プランに注入され、後続のワークフローノードで変数として利用できるようになります。ただし、後続のノードでこのデータの関連フィールドを使用したい場合は、事前に関連データのプリロードを設定する必要があります。選択された関連データは、トリガー後にコンテキストに一緒に注入され、階層的に選択して使用することが可能です。
関連情報
一括データ操作によるトリガーは現在サポートされていません
コレクションイベントは現在、一括データ操作によるトリガーをサポートしていません。 例えば、記事データを作成する際に、同時にその記事に複数のタグデータ(多対一関係データ)を追加した場合、記事の新規作成に関するワークフローのみがトリガーされ、同時に追加された複数のタグはタグの新規作成に関するワークフローをトリガーしません。また、多対多関係データの関連付けや新規追加時も、中間コレクションのワークフローはトリガーされません。
アプリケーション外のデータ操作ではトリガーされません
HTTP API を介してアプリケーションのインターフェースを呼び出し、コレクションを操作した場合も対応するイベントをトリガーできます。しかし、NocoBase アプリケーションを介さず、データベース操作によって直接データが変更された場合は、対応するイベントはトリガーされません。例えば、データベース本来のトリガーは、アプリケーション内のワークフローとは関連付けられません。
また、SQL 操作ノードを使用してデータベースを操作することは、データベースを直接操作することに相当するため、コレクションイベントはトリガーされません。
外部データソース
ワークフローはバージョン 0.20 から外部データソースをサポートしています。外部データソースプラグインを使用しており、コレクションイベントが外部データソースに対して設定されている場合、そのデータソースに対するデータ操作がアプリケーション内で完結している限り(ユーザーによる新規作成、更新、ワークフローによるデータ操作など)、対応するコレクションイベントをトリガーできます。ただし、データ変更が他のシステムを介して、または外部データベース内で直接行われた場合は、コレクションイベントはトリガーされません。
例
新規注文作成後に合計金額を計算し、在庫を減らすシナリオを例に見てみましょう。
まず、商品コレクションと注文コレクションを作成します。データモデルは以下の通りです。
そして、基本的な商品データを追加します。
次に、注文コレクションイベントに基づいたワークフローを作成します。

いくつかの設定項目は以下の通りです。
- コレクション:「注文」コレクションを選択します。
- トリガータイミング:「データの作成後」を選択します。
- トリガー条件:空欄にします。
- 関連データのプリロード:「商品」にチェックを入れます。
その後、ワークフローのロジックに従って他のノードを設定します。具体的には、商品の在庫が0より大きいかを確認し、0より大きければ在庫を減らし、そうでなければ注文を無効として削除します。

ノードの設定については、各ノードタイプの紹介ドキュメントで詳しく説明します。
このワークフローを有効にし、インターフェースから新規注文を作成してテストしてみましょう。「iPhone 14 Pro」を注文すると、対応する商品の在庫は9に減ります。一方、「iPhone 13 Pro」を注文した場合、在庫不足のため注文は削除されます。


