NocoBaseで申請・承認フローを作成する

2024.04.25

やりたいこと

NocoBaseで作成したアプリケーションで管理しているユーザー向けに、ライセンスや見積もりなどを申請できる仕組み(ワークフロー)を用意したい。

そのフローでは、途中で承認者による手動承認がしたい。

どう対応すればいいの?

ワークフローの手動ノードを利用することで、思決定権限の一部を手動処理に引き渡すことができます。

ケース例

ソフトウェアの利用申請のワークフローを作ってみます。

申請者がフォームから内容を送信 -> 承認者によって決定される

という流れにしてみます。

コレクションの作成

コレクションを作成し、そこへの入力フォーム作ることで対応していきます。

データソースの設定画面で、 コレクションの作成をクリックし、新規コレクションを作成します。

申請に必要な情報のフィールドを作成します。

今回は 申請ライセンス名 と 利用開始予定日 を追加しました。

送信フォームの作成(トリガー)

手動ノードのトリガーとなる 申請フォームを作成します。

ページ編集画面の ブロックを追加 からフォームを選択し、先ほど作成したコレクションを選択します

フィールドの設定 から コレクションに追加したフィールド(申請ライセンス名 と 利用開始予定日) をフォームに表示させます

ワークフローをトリガーするためのボタンを追加します。

操作の設定から カスタマイズ->Submit to workflow を選択し、フォームに追加します。

承認ワークフローの作成

申請フォームからボタンを押された時に起動するワークフローを作成します.

ワークフローの設定画面で、追加をクリックして作成します。

トリガータイプ: Post action Event にし、Execute mode: Asynchronously にします。

Post action Event は

データの追加、更新、削除、Submit to workflowなど、アクションボタンやAPIを介して開始されたリクエストの完了後にトリガーされます。アクション完了後のデータ処理、通知送信などに適しているものです。

作成後、設定画面に遷移し、トリガーの設定を行います。

Collectionは作成したコレクションを選択します。

トリガーモードですが、 Local modeを選択しました。

  • Local mode: このワークフローにバインドされたアクションの完了後にトリガーされる。
  • Global mode: 以下のアクションの完了後にトリガーされる。
    • Create record action
    • Update record action

次に+をおして、Manualノードを追加します

Assignees には申請を対応するNocoBase上のユーザーを設定したり、トリガーフィールドから送られたデータを利用することができます。

申請フォームに承認者というフィールドを追加し、そこで選択された人を担当に割り当てることもできそうですね。

User Interface では手動で処理するためのフォームの作成を行います。

上記画像では、ブロックの追加でトリガーされたデータを表示させています。

Custom formを追加して、現在のワークフローを続行するか、終了させるかを決定するボタンを追加します。

今回は続行ボタンが押されたらレコードを追加する処理を行うようにしました。

トリガーで送られてきたデータ(申請ライセンス名 と 利用開始予定日)と、承認済みフラグをTrueにする といった内容です。

最後にこのワークフローを有効にしておきます。

そうしないと申請フォームからこのワークフローをトリガーできません。

送信フォームからワークフローを呼び出せるようにする

作成した申請フォームのSubmit to worklowボタンのメニューを表示します

Bind workflows をクリックします。

先ほど作成した申請・承認フローと名前をつけたワークフローを選択し、送信ボタンを押して設定完了です。

ワークフローの履歴を見れるブロック

送信されたワークフローを確認できるブロックをページに作成します

Workflow todos というブロックを追加すると、一覧が見れる画面が作成できます。

動作確認

では、実際に申請してみましょう。

申請フォーム

作成した申請フォームから送信します。

ワークフローの設定画面

ワークフローの設定画面で、Executedの数が増えているはずです。

手動ノードがフロー内にあるため、送信した段階では状態が処理中となっています。

Workflow todos の画面

先ほど作成した送信されたワークフローを確認できるブロックを確認すると、送信したワークフローが登録されています。

表示をクリックすると、User Interfaceで作成したフォームが表示されます。

内容を承認したいので、Continue the processを押して次のノードに送ります。

状態はResolvedに変更されました。

ワークフローの設定画面

ワークフローの実行履歴を確認してみましょう。

手動ノードのあとにレコード追加のノードが実行されて、レコードが追加されていました。

User Interfaceで作成したフォームで、Terminate the processを押して申請を却下した場合、

状態がRejectedとなり、レコード追加のノードは実行されません。