
NocoBaseで申請・承認フローを作成する
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
やりたいこと
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となり、レコード追加のノードは実行されません。










