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

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

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

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

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

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