このドキュメントはAIによって翻訳されました。不正確な情報については、英語版をご参照ください
NocoBaseには、一般的なデータ操作(追加、削除、更新、参照など)が組み込まれています。これらの操作だけでは複雑なビジネス要件に対応できない場合、ワークフローでカスタムアクションイベントを利用できます。このイベントをページブロックの「ワークフローをトリガー」ボタンに紐付けることで、ユーザーがボタンをクリックした際にカスタムアクションのワークフローが実行されます。
ワークフローを作成する際は、「カスタムアクションイベント」を選択します。

v.1.6.0+
コンテキストタイプによって、そのワークフローをどのブロックのボタンに紐付けられるかが決まります。

コンテキストタイプが「単一レコード」または「複数レコード」の場合、データモデルを紐付けるコレクションを選択する必要があります。

ワークフロー内でトリガーされたデータ行の関連データを使用する必要がある場合、ここで詳細な関連フィールドを選択できます。

これらのフィールドは、イベントがトリガーされた後、ワークフローのコンテキストに自動的にプリロードされ、ワークフロー内で利用できるようになります。
ワークフローで設定されたコンテキストタイプによって、異なるブロックでのアクションボタンの設定も異なります。
v.1.6.0+
操作パネルやその他のデータブロックには、「ワークフローをトリガー」ボタンを追加できます。



ボタンを追加したら、以前作成したコンテキストなしのワークフローを紐付けます。操作パネルのボタンを例に見てみましょう。


どのデータブロックでも、フォーム、テーブルのデータ行、詳細など、単一レコードのアクションバーに「ワークフローをトリガー」ボタンを追加できます。



ボタンを追加したら、以前作成したワークフローを紐付けます。


その後、このボタンをクリックすると、カスタムアクションイベントがトリガーされます。

v.1.6.0+
テーブルブロックのアクションバーに「ワークフローをトリガー」ボタンを追加する際、「コンテキストなし」または「複数レコード」のコンテキストタイプを選択する追加オプションが表示されます。

「コンテキストなし」を選択した場合、それはグローバルイベントとなり、コンテキストなしタイプのワークフローのみを紐付けることができます。
「複数レコード」を選択した場合、複数レコードタイプのワークフローを紐付けることができ、複数のレコードを選択した後のバッチ操作に利用できます(現在はテーブルのみ対応)。この場合、選択可能なワークフローは、現在のデータブロックのコレクションに一致するように設定されたワークフローに限定されます。

ボタンをクリックしてトリガーする際、テーブル内のデータ行がいくつかチェックされている必要があります。そうでない場合、ワークフローはトリガーされません。

例えば、「サンプル」というコレクションがあるとします。「収集済み」ステータスのサンプルに対して、「検査提出」という操作を提供したいとします。この「検査提出」操作では、まずサンプルの基本情報をチェックし、次に「検査記録」データを作成し、最後にサンプルのステータスを「検査提出済み」に変更します。この一連のプロセスは、単純な「追加、削除、更新、参照」ボタンのクリックだけでは完結できません。こうした場合に、カスタムアクションイベントを利用して実現できます。
まず、「サンプル」コレクションと「検査記録」コレクションを作成し、「サンプル」コレクションに基本的なテストデータを入力します。

次に、「カスタムアクションイベント」ワークフローを作成します。操作プロセスから迅速なフィードバックが必要な場合は、同期モードを選択できます(同期モードでは、手動処理などの非同期タイプのノードは使用できません)。

トリガー設定では、コレクションとして「サンプル」を選択します。

ビジネス要件に基づいて、プロセス内のロジックを編成します。例えば、指標パラメーターが90より大きい場合にのみ検査提出を許可し、そうでない場合は関連する問題を提示するようにします。

「応答メッセージ」ノードは、同期カスタムアクションイベントで使用でき、クライアントに提示メッセージを返すために利用されます。非同期モードでは使用できません。
ワークフローを設定して有効化したら、テーブル画面に戻り、テーブルのアクション列に「ワークフローをトリガー」ボタンを追加します。

次に、ボタンの設定メニューでワークフローの紐付けを選択し、設定ポップアップを開きます。

以前有効化したワークフローを追加します。

提出後、ボタンのテキストを「検査提出」などの操作名に変更すれば、設定プロセスは完了です。
使用する際は、テーブル内で任意のサンプルデータを選択し、「検査提出」ボタンをクリックすると、カスタムアクションイベントがトリガーされます。以前に編成したロジックに従い、サンプルの指標パラメーターが90未満の場合、クリック後に以下のプロンプトが表示されます。

指標パラメーターが90より大きい場合、プロセスは正常に実行され、「検査記録」が生成され、サンプルのステータスは「検査提出済み」に変更されます。

これで、簡単なカスタムアクションイベントが完了しました。同様に、注文処理やレポート提出など、複雑な操作を伴うビジネスにおいても、カスタムアクションイベントを利用して実現できます。
カスタムアクションイベントのトリガーは、ユーザーインターフェースからの操作に限定されず、HTTP API 呼び出しによってもトリガーできます。特に、カスタムアクションイベントは、すべてのコレクション操作に対してワークフローをトリガーする新しい操作タイプ「trigger」を提供しており、NocoBaseの標準アクションAPIを使用して呼び出すことができます。
例で示したボタンによってトリガーされるワークフローは、次のように呼び出すことができます。
この操作は単一レコードを対象としているため、既存のデータに対して呼び出す際は、データ行のIDを指定し、URLの<:id>部分を置き換える必要があります。
フォームに対して呼び出す場合(新規作成や更新など)、新規データ作成用のフォームではIDを渡す必要はありませんが、実行コンテキストデータとして送信するデータを渡す必要があります。
更新フォームの場合、データ行のIDと更新するデータの両方を渡す必要があります。
IDとデータが同時に渡された場合、まずIDに対応するデータ行がロードされ、次に渡されたデータオブジェクトのプロパティを使用して元のデータ行が上書きされ、最終的なトリガーデータコンテキストが生成されます。
関連データが渡された場合も上書きされます。特に、関連データ項目のプリロードが設定されている場合は、関連データが予期せず上書きされないよう、渡されるデータの取り扱いに注意が必要です。
また、URLパラメーターtriggerWorkflowsはワークフローのキーであり、複数のワークフローはカンマで区切られます。このキーは、ワークフローキャンバス上部のワークフロー名にマウスをホバーすると確認できます。

上記の呼び出しが成功すると、対応するsamplesコレクションのカスタムアクションイベントがトリガーされます。
外部からの呼び出しもユーザーの身元に基づく必要があるため、HTTP API を介して呼び出す際は、通常のインターフェースから送信されるリクエストと同様に、認証情報を提供する必要があります。これには、Authorizationリクエストヘッダーまたはtokenパラメーター(ログイン時に取得したトークン)、およびX-Roleリクエストヘッダー(ユーザーの現在のロール名)が含まれます。
この操作で1対1の関連データ(1対多は現在サポートされていません)のイベントをトリガーする必要がある場合、パラメーターで!を使用して関連フィールドのトリガーデータを指定できます。
上記の呼び出しが成功すると、対応するcategoriesコレクションのカスタムアクションイベントがトリガーされます。
HTTP API を介してアクション後のイベントをトリガーする際も、ワークフローの有効化状態やコレクション設定が一致しているかを確認する必要があります。そうでない場合、呼び出しが成功しない、またはエラーが発生する可能性があります。