第 6 章:ワークフロー — システムに自動で働いてもらう
前の章でシステムに権限を追加し、ロールごとに異なるコンテンツが表示されるようになりました。しかし、すべての操作はまだ手動です。新しいチケットが来ても自分で確認しに行く必要があり、ステータスが変わっても誰にも通知されません。
この章で は、NocoBase のワークフローを使ってシステムに自動で働いてもらいます。条件判断と自動更新ノードを設定して、チケットステータスの自動遷移と作成日時の自動記録を実現します。
6.1 ワークフロー(Workflow)とは
ワークフローとは、自動化された「もし……ならば……」ルールのことです。
たとえるなら、スマートフォンのアラームです。毎朝 8 時に鳴るように設定すれば、最もシンプルなワークフローの完成です。条件が満たされた(8 時になった)ら、自動的に実行する(アラームが鳴る)。
NocoBase のワークフローも同じ考え方です。

- トリガー:ワークフローの入口。たとえば「誰かが新しいチケットを作成した」「あるデータが更新された」
- 条件判断:任意のフィルタリングステップ。たとえば「担当者が空でないときだけ続行」
- アクション実行:実際に作業を行うステップ。たとえば「通知を送信」「フィールドを更新」
ワークフローのアクションは複数のノードを連結でき、よく使われるノードタイプは以下の通りです。
- フロー制御:条件判 断、並列分岐、ループ、遅延
- データ操作:データ追加、データ更新、データ検索、データ削除
- 通知と外部連携:通知、HTTP リクエスト、演算
本チュートリアルでは最もよく使われるいくつかのノードだけを使います。組み合わせ方を覚えれば、ほとんどの場面に対応できるようになります。
トリガータイプ一覧
NocoBase はワークフロー作成時に選択できる複数のトリガータイプを提供しています。
本チュートリアルではデータテーブルイベントとカスタムアクションイベントの 2 種類のトリガーを使います。他のタイプも使い方は似ているので、覚えれば応用が利きます。
NocoBase のワークフローは組み込みプラグインのため、追加インストール不要ですぐに使えます。
6.2 シナリオ 1:新規チケットの自動通知
要件:誰かが新しいチケットを作成し、担当者を指定した場合、システムが担当者に自動的にアプリ内メッセージを送信し、「新しい仕事が来ました」と知らせる。
ステップ 1:ワークフローを作成
右上のプラグイン設定メニューを開き、ワークフロー管理 に入ります。

新規作成 をクリックし、ダイアログで以下を設定します。
- 名前:「新規チケット担当者通知」と入力
- トリガータイプ:データテーブルイベント を選択

送信後、リスト内の 設定 リンクをクリックしてフロー編集画面に入ります。
ステップ 2:トリガーの設定
上部のトリガーカードをクリックし、設定ドロワーを開きます。
-
データテーブル:メインデータソース / 「チケット」を選択
-
トリガータイミング:「データの追加または更新後」を選択
-
変更されたフィールド:「担当者(Assignee)」にチェック——担当者フィールドが変更されたときだけトリガーし、他のフィールドの変更による不要な通知を防ぎます(データ追加時はすべてのフィールドが「変更あり」と見なされるため、新規チケット作成時もトリガーされます)
-
以下の条件を満たした場合のみトリガー:モードを「グループ内のいずれかの条件」に設定し、2 つの条件を追加:
assignee_idが空でないAssignee / IDが空でない
なぜ 2 つの条件が必要か?トリガー時にフォームには外部キー(assignee_id)だけがあってリレーション先のオブジェクトがまだ読み込まれていない場合や、リレーション先のオブジェクトはあるが外部キーフィールドが空の場合があります。2 つの条件を OR 関係にすることで、担当者が指定されていれば確実にトリガーされます。
-
リレーションデータのプリロード:「Assignee」にチェック——後続の通知ノードで担当者の情報を使用するため、トリガーで事前に読み込む必要があります

保存をクリックします。これで、トリガー自体に条件判断が含まれており、担当者が空でないときだけトリガーされるため、追加の条件判断ノードは不要です。
ステップ 3:通知ノードの追加
トリガー下部の + をクリックし、通知 ノードを選択します。

通知ノードの設定を開くと、最初の項目は 通知チャネル の選択ですが、まだチャネルを作成していないため、ドロップダウンリストは空です。まずチャネルを作成しましょう。

ステップ 4:通知チャネルの作成
NocoBase は複数の通知チャネルタイプをサポートしています。
本チュートリアルでは最もシンプルなアプリ内通知チャネルを使います。
- 右上のプラグイン設定を開き、通知管理 に入ります
- 新規チャネル をクリックします

- チャネルタイプで アプリ内通知 を選択し、チャネル名(例:「システムアプリ内通知」)を入力します
- 保存します

ステップ 5:通知ノードの設定
ワークフロー編集ページに戻り、通知ノードの設定を開きます。
通知ノードには以下の設定項目があります。
- 通知チャネル:先ほど作成した「システムアプリ内通知」を選択
- 受信者:「ユーザーを検索」をクリックし → 「id = トリガー変数/トリガーデータ/担当者/ID」を設定
- タイトル:通知タイトルを入力します。例:「新しいチケットが届きました」。変数の挿入にも対応して おり、チケットタイトルを追加できます:
新規チケット:{{トリガーデータ / タイトル}} - 内容:通知本文を入力します。同様に変数を挿入してチケットの優先度や説明などのフィールドを参照できます

(次のステップでチケットのアドレスを取得します。ダイアログを閉じる前に、必ず保存してください!)
- デスクトップ版詳細ページ:チケット詳細ページの URL パスを入力します。取得方法:フロントエンドで任意のチケットの詳細ポップアップを開き、ブラウザのアドレスバーのパスをコピーします。形式は
/admin/camcwbox2uc/view/d8f8e122d37/filterbytk/353072988225540のようになります。パスを設定欄に貼り付け、filterbytk/以降の数字がチケット ID なので、この部分をトリガーデータの ID 変数に置き換えます(変数セレクター → トリガーデータ → ID をクリック)。設定後、ユーザーが通知リストでこの通知をクリックすると、対応するチケットの詳細ページに直接ジャンプし、同時に既読としてマークされます


- 送信失敗時も続行:任意。チェックを入れると、通知の送信に失敗してもワークフローが中断されません
通知送信後、担当者はページ右上の 通知センター でこのメッセージを確認で きます。未読のものには赤い点が表示されます。通知をクリックするとチケット詳細ページにジャンプし、完全な情報を確認できます。
ステップ 6:テストと有効化
シナリオ 1 の完全なフローはわずか 2 ノードです:トリガー(条件フィルタ付き)→ 通知。シンプルで直接的です。
すぐに有効化せず、まずテストしましょう。ワークフローには手動実行機能があり、指定したデータでフローが正しく動作するかテストできます。
- 右上の 実行 ボタンをクリックします(有効化スイッチではありません)
- 既存のチケットデータをトリガーデータとして選択します
チケット選択欄に id が表示される場合は、データソース > データテーブル > チケット で「タイトル」列をタイトルフィールドに設定してください
-
実行をクリックすると、ワークフローが実行され、コピーされた新しいバージョンに自動的に切り替わります

-
右上の三点メニューをクリックし、「実行履歴」を選択します。先ほどの実行記録が表示されるはずです。クリックして確認すると、トリガーの状況、各ノードの実行詳細、パラメータなどの実行の詳細が確認できます。


- 先ほどのチケットは Alice 宛てだったようです。Alice のアカウントに切り替えてみると、通知を受信できました!

クリックすると対象チケットのページにジャンプし、同時に通知が自動的に既読としてマークされます。

フローに問題がないことを確認したら、右上の 有効化/無効化 スイッチをクリックして、ワークフローを有効状態に切り替えます。

注意:ワークフローは一度実行されると(手動実行を含む)、読み取り専用状態(グレー表示)になり、編集できなくなります。変更が必要な場合は、右上の 「新しいバージョンにコピー」 をクリックし、新しいバージョンで編集を続けてください。古いバージョンは自動的に無効化されます。

チケットページに戻り、新しいチケットを作成して担当者を選択します。その後、担当者のアカウントでログインし、通知センターを確認すると、新しい通知が届いているはずです。

おめでとうございます、最初の自動化フローが動き始めました!
6.3 シナリオ 2:ステータス変更時に完了日時を自動記録
要件:チケットのステータスが「完了」に変更されたとき、システムが「完了日時」フィールドに現在の時刻を自動入力する。手動で記録する必要がなく、忘れることもありません。
チケットテーブルに「完了日時」フィールドをまだ作成していない場合は、先に データテーブル管理 → チケット で 日付 タイプのフィールドを追加し、「完了日時」と名付けてください。具体的な手順は第 2 章のフィールド作成方法を参照してください。ここでは省略します。
ステップ 1:ワークフローを新規作成
ワークフロー管理ページに戻り、新規作成をクリックします。
- 名前:「チケット完了時の自動時刻記録」と入力
- トリガータイプ:カスタムアクションイベント を選択(ユーザーがこのワークフローに紐づけられたボタンをクリックしたときにトリガー)
- 実行モード:同期
同期と非同期について:
- 非同期:操作後、他の作業を続けることができ、ワークフローが自動実行されてから結果が通知されます
- 同期:操作後、画面は待機状態になり、ワークフローの実行が完了してから他の作業ができます

ステップ 2:トリガーの設定
トリガーの設定を開きます。
- データテーブル:「チケット」を選択
- 実行モード:単行モード を選択(毎回クリックされた 1 件のチケットだけを処理)

ステップ 3:条件判断の追加
データテーブルイベントトリガーとは異なり、自分で条件判断ノードを追加する必要があります。

今後の拡張がしやすいように、「"はい"と"いいえ"でそれぞれ続行」を選択することをお勧めします。
- 条件:トリガーデータ → ステータス が 完了 と等しくない(つまり、まだ完了していないチケットだけが通過し 、既に完了したものは重複処理されません)

ステップ 4:データ更新ノードの追加
条件判断の「はい」分岐で + をクリックし、データ更新 ノードを選択します。

- データテーブル:「チケット」を選択
- フィルタ条件:ID がトリガーデータ → ID と等しい(現在のチケットだけを更新するように)
- フィールド値:
- ステータス = 完了
- 完了日時 = システム変数 / システム時刻

このように 1 つのノードで「ステータス変更」と「時刻記録」の 2 つの作業を同時に完了でき、ボタンに個別のフィールド値を設定する必要はありません。
ステップ 5:「完了」アクションボタンの作成
ワークフローの設定は完了しましたが、「カスタムアクションイベント」は具体的なアクションボタンに紐づける必要があります。チケット一覧の操作列に専用の「完了」 ボタンを作成しましょう。
- UI エディターモードに入り、チケットテーブルの操作列で 「+」 をクリックし、「ワークフローをトリガー」 アクションボタンを選択します

- ボタンの設定項目をクリックし、タイトルを 「完了」 に変更し、完了に関連するアイコン(チェックマークのアイコンなど)を選択します

- ボタンに連動ルールを設定します:チケットのステータスが既に「完了」の場合、このボタンを非表示にします(完了済みのチケットに「完了」を再度クリックする必要はありません)
- 条件:現在のデータ → ステータス が 完了 と等しい
- アクション:非表示

- ボタンの設定項目内の 「ワークフローを紐づけ」 を開き、先ほど作成した「チケット完了時の自動時刻記録」ワークフローを選択します

ステップ 6:イベントフローのリフレッシュ設定
ボタンは作成できましたが、クリッ クしてもテーブルが自動的にリフレッシュされません。ユーザーはステータスの変化を見ることができません。ボタンのイベントフローを設定して、ワークフロー実行完了後にテーブルを自動リフレッシュさせましょう。
- ボタンの設定項目内の 2 番目のイナズマ記号(⚡)をクリックし、イベントフロー 設定を開きます
- トリガーイベントを設定します:
- トリガーイベント:クリック を選択
- 実行タイミング:すべてのフロー完了後 を選択
- 「ステップを追加」 をクリックし、「ターゲットブロックをリフレッシュ」 を選択します

- 現在のページのチケットテーブルを見つけ、その設定メニューを開いて、最下部の 「UID をコピー」 を選択し、UID をリフレッシュステップのターゲットブロックに貼り付けます

これで、「完了」ボタンをクリックした後、ワークフローの実行が完了するとテーブルが自動的にリフレッシュされ、ステータスと完了日時の変化をすぐに確認できます。
ステップ 7:有効化とテスト
ワークフロー管理ページに戻り、「チケット完了時の自動時刻記録」ワークフローを有効 化します。
ステータスが「対応中」のチケットを開き、操作列の 「完了」 ボタンをクリックします。以下を確認できます。
- チケットの「完了日時」フィールドに現在の時刻が自動入力されている
- テーブルが自動リフレッシュされ、「完了」ボタンがこのチケットから消えている(連動ルールが有効になった)

便利だと思いませんか?これがワークフローの 2 つ目のよくある使い方——データの自動更新です。「カスタムアクションイベント + ボタン紐づけ」の方法で、特定のボタンをクリックしたときだけワークフローが実行されるという正確なトリガーメカニズムを実現しました。
6.4 実行履歴の確認
ワークフローは何回実行されましたか?エラーは発生していませんか?NocoBase がすべて記録しています。
ワークフロー管理リストで、各ワークフローの横に 実行回数 の数字リンクがあります。クリックすると、各実行の詳細な記録が表示されます。
- 実行ステータス:成功(緑)か失敗(赤)か、一目瞭然
- トリガー日時:いつトリガーされたか
- ノード詳細:クリックすると各ノードの実行結果が確認できます

ある回の実行が失敗した場合、詳細をクリ ックするとどのノードで問題が発生したか、具体的なエラーメッセージが確認できます。これはワークフローのデバッグに最も重要なツールです。

まとめ
この章ではシンプルだけど実用的な 2 つのワークフローを作成しました。
- 新規チケット通知(データテーブルイベントトリガー):新規作成または担当者変更後に自動通知、手動で連絡する必要なし
- 完了日時の自動記録(カスタムアクションイベントトリガー):「完了」ボタンクリック後に日時を自動入力、人為的な記入漏れを防止
2 つのワークフローでそれぞれ異なるトリガー方式を紹介しましたが、設定にかかった時間は合計 10 分にも満たないでしょう。それだけでシステムが自動で作業してくれるようになりました。NocoBase はさらに多くのノードタイプ(HTTP リクエスト、演算、ループなど)をサポートしていますが、入門としてはこれらの組み合わせを押さえれば、ほとんどの場面に対応できます。
次の章のプレビュー
システムが自動で働けるようになりましたが、まだ「全体を俯瞰する視点」が足りません。チケットは全部で何件?どの分類が最も多い?毎日何件追加されている?次の章ではチャートブロックでデータダッシュボードを構築し、全体を一目で把握できるようにします。
関連リソース
- ワークフロー概要 — ワークフローのコア概念と利用シーン
- データテーブルイベントトリガー — データ変更トリガーの設定
- データ更新ノード — データ自動更新の設定



