logologo
スタート
マニュアル
開発
プラグイン
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
スタート
マニュアル
開発
プラグイン
API
logologo
ワークフロー
概要
クイックスタート

トリガー

概要
データテーブルイベント
定期タスク
操作前イベント
操作後イベント
カスタムアクションイベント
承認
Webhook

ノード

概要

AI

LLM

フロー制御

条件
複数条件分岐
ループ
変数
並列分岐
ワークフロー呼び出し
フロー出力
JSON変数マッピング
遅延
終了

計算

計算
日付計算
JSON計算

データ操作

データ追加
データ更新
データ検索
データ削除
SQL操作

手動処理

手動処理
承認
CC

拡張タイプ

HTTPリクエスト
JavaScriptスクリプト
通知
メール送信
レスポンス
レスポンスメッセージ
変数
実行履歴
バージョン管理
詳細設定

拡張機能開発

概要
拡張トリガータイプ
拡張ノードタイプ
APIリファレンス
Previous Page操作後イベント
Next Page承認
TIP

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

#カスタムアクションイベント

This feature is provided by the commercial plugin «ワークフロー:カスタムアクションイベント», please purchase to use

#はじめに

NocoBaseには、一般的なデータ操作(追加、削除、更新、参照など)が組み込まれています。これらの操作だけでは複雑なビジネス要件に対応できない場合、ワークフローでカスタムアクションイベントを利用できます。このイベントをページブロックの「ワークフローをトリガー」ボタンに紐付けることで、ユーザーがボタンをクリックした際にカスタムアクションのワークフローが実行されます。

#ワークフローの作成

ワークフローを作成する際は、「カスタムアクションイベント」を選択します。

「カスタムアクションイベント」ワークフローの作成

#トリガー設定

#コンテキストタイプ

v.1.6.0+

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

  • コンテキストなし:グローバルイベントとして、操作パネルやデータブロックのアクションボタンに紐付けられます。
  • 単一レコード:テーブルのデータ行、フォーム、詳細などのデータブロックのアクションボタンに紐付けられます。
  • 複数レコード:テーブルの一括操作ボタンに紐付けられます。

トリガー設定_コンテキストタイプ

#コレクション

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

トリガー設定_コレクションの選択

#使用する関連データ

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

トリガー設定_使用する関連データの選択

これらのフィールドは、イベントがトリガーされた後、ワークフローのコンテキストに自動的にプリロードされ、ワークフロー内で利用できるようになります。

#アクション設定

ワークフローで設定されたコンテキストタイプによって、異なるブロックでのアクションボタンの設定も異なります。

#コンテキストなし

v.1.6.0+

操作パネルやその他のデータブロックには、「ワークフローをトリガー」ボタンを追加できます。

ブロックへのアクションボタン追加_操作パネル

ブロックへのアクションボタン追加_カレンダー

ブロックへのアクションボタン追加_ガントチャート

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

ボタンへのワークフロー紐付け_操作パネル

紐付けるワークフローの選択_コンテキストなし

#単一レコード

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

ブロックへのアクションボタン追加_フォーム

ブロックへのアクションボタン追加_テーブル行

ブロックへのアクションボタン追加_詳細

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

ボタンへのワークフロー紐付け

紐付けるワークフローの選択

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

ボタンクリックによるトリガー結果

#複数レコード

v.1.6.0+

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

ブロックへのアクションボタン追加_テーブル

「コンテキストなし」を選択した場合、それはグローバルイベントとなり、コンテキストなしタイプのワークフローのみを紐付けることができます。

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

複数レコードのワークフロー選択

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

複数レコード選択なしの場合のトリガー不可

#例

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

まず、「サンプル」コレクションと「検査記録」コレクションを作成し、「サンプル」コレクションに基本的なテストデータを入力します。

例_サンプルコレクション

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

例_ワークフローの作成

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

例_トリガー設定

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

例_ビジネスロジックの編成

ヒント

「応答メッセージ」ノードは、同期カスタムアクションイベントで使用でき、クライアントに提示メッセージを返すために利用されます。非同期モードでは使用できません。

ワークフローを設定して有効化したら、テーブル画面に戻り、テーブルのアクション列に「ワークフローをトリガー」ボタンを追加します。

例_アクションボタンの追加

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

例_ワークフロー紐付けポップアップを開く

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

例_ワークフローの選択

提出後、ボタンのテキストを「検査提出」などの操作名に変更すれば、設定プロセスは完了です。

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

例_指標が検査提出基準を満たさない

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

例_検査提出成功

これで、簡単なカスタムアクションイベントが完了しました。同様に、注文処理やレポート提出など、複雑な操作を伴うビジネスにおいても、カスタムアクションイベントを利用して実現できます。

#外部からの呼び出し

カスタムアクションイベントのトリガーは、ユーザーインターフェースからの操作に限定されず、HTTP API 呼び出しによってもトリガーできます。特に、カスタムアクションイベントは、すべてのコレクション操作に対してワークフローをトリガーする新しい操作タイプ「trigger」を提供しており、NocoBaseの標準アクションAPIを使用して呼び出すことができます。

例で示したボタンによってトリガーされるワークフローは、次のように呼び出すことができます。

curl -X POST -H 'Authorization: Bearer <your token>' -H 'X-Role: <roleName>' \
  "http://localhost:3000/api/samples:trigger/<:id>?triggerWorkflows=workflowKey"

この操作は単一レコードを対象としているため、既存のデータに対して呼び出す際は、データ行のIDを指定し、URLの<:id>部分を置き換える必要があります。

フォームに対して呼び出す場合(新規作成や更新など)、新規データ作成用のフォームではIDを渡す必要はありませんが、実行コンテキストデータとして送信するデータを渡す必要があります。

curl -X POST -H 'Authorization: Bearer <your token>' -H 'X-Role: <roleName>' -d \
  '{
    "title": "Sample 1",
    "indicator": 91
  }'
  "http://localhost:3000/api/samples:trigger?triggerWorkflows=workflowKey"

更新フォームの場合、データ行のIDと更新するデータの両方を渡す必要があります。

curl -X POST -H 'Authorization: Bearer <your token>' -H 'X-Role: <roleName>' -d \
  '{
    "title": "Sample 1",
    "indicator": 91
  }'
  "http://localhost:3000/api/samples:trigger/<:id>?triggerWorkflows=workflowKey"

IDとデータが同時に渡された場合、まずIDに対応するデータ行がロードされ、次に渡されたデータオブジェクトのプロパティを使用して元のデータ行が上書きされ、最終的なトリガーデータコンテキストが生成されます。

注意

関連データが渡された場合も上書きされます。特に、関連データ項目のプリロードが設定されている場合は、関連データが予期せず上書きされないよう、渡されるデータの取り扱いに注意が必要です。

また、URLパラメーターtriggerWorkflowsはワークフローのキーであり、複数のワークフローはカンマで区切られます。このキーは、ワークフローキャンバス上部のワークフロー名にマウスをホバーすると確認できます。

ワークフロー_キーの確認方法

上記の呼び出しが成功すると、対応するsamplesコレクションのカスタムアクションイベントがトリガーされます。

ヒント

外部からの呼び出しもユーザーの身元に基づく必要があるため、HTTP API を介して呼び出す際は、通常のインターフェースから送信されるリクエストと同様に、認証情報を提供する必要があります。これには、Authorizationリクエストヘッダーまたはtokenパラメーター(ログイン時に取得したトークン)、およびX-Roleリクエストヘッダー(ユーザーの現在のロール名)が含まれます。

この操作で1対1の関連データ(1対多は現在サポートされていません)のイベントをトリガーする必要がある場合、パラメーターで!を使用して関連フィールドのトリガーデータを指定できます。

curl -X POST -H 'Authorization: Bearer <your token>' -H 'X-Role: <roleName>' \
  "http://localhost:3000/api/posts:trigger/<:id>?triggerWorkflows=workflowKey!category"

上記の呼び出しが成功すると、対応するcategoriesコレクションのカスタムアクションイベントがトリガーされます。

ヒント

HTTP API を介してアクション後のイベントをトリガーする際も、ワークフローの有効化状態やコレクション設定が一致しているかを確認する必要があります。そうでない場合、呼び出しが成功しない、またはエラーが発生する可能性があります。