---
pkg: '@nocobase/plugin-workflow-manual'
---

# 手動処理

## 概要

業務プロセスにおいて、意思決定を完全に自動化できない場合があります。そのような場合、「手動処理ノード」を使用することで、一部の意思決定を人間に委ねることができます。

手動処理ノードが実行されると、まずワークフロー全体の実行が一時停止し、担当ユーザーに「ToDoタスク」が生成されます。ユーザーがタスクを提出すると、選択されたステータスに基づいて、ワークフローを「続行」するか、「待機」を続けるか、または「終了」するかが決定されます。この機能は、承認プロセスなどのシナリオで非常に役立ちます。

## インストール

このプラグインは組み込み済みのため、インストールは不要です。

## ノードの作成

ワークフロー設定画面で、ワークフロー内のプラス（「+」）ボタンをクリックし、「手動処理」ノードを追加します。

![作成人工节点](https://static-docs.nocobase.com/4dd259f1aceeaf9b825abb4b257df909.png)

## ノードの設定

### 担当者

手動処理ノードでは、ToDoタスクの実行者としてユーザーを指定する必要があります。ToDoタスクのリストは、ページにブロックを追加する際に設定でき、各ノードのタスクポップアップの内容は、ノードのインターフェース設定で構成する必要があります。

ユーザーを直接選択するか、変数を使用してコンテキストからユーザーデータの主キーまたは外部キーを選択します。

![人工节点_配置_负责人_选择变量](https://static-docs.nocobase.com/22fbca3b8e21fda3a831019037001445.png)

:::info{title=ヒント}
現在、手動処理ノードの担当者オプションは複数ユーザーに対応していません。この機能は将来のバージョンでサポートされる予定です。
:::

### ユーザーインターフェースの設定

ToDoアイテムのインターフェース設定は、手動処理ノードの核となる部分です。「ユーザーインターフェースを設定」ボタンをクリックすると、独立した設定ポップアップが開きます。通常のページと同様に、WYSIWYG（見たまま編集）方式で設定できます。

![人工节点_节点配置_界面配置](https://static-docs.nocobase.com/fd360168c879743cf22d57440cd2590f.png)

#### タブ

タブは、異なるコンテンツを区別するために使用できます。例えば、承認用のフォーム提出に1つのタブ、却下用のフォーム提出に別のタブ、または関連データの詳細表示などに利用でき、自由に設定可能です。

#### ブロック

サポートされているブロックタイプは、主に「データブロック」と「フォームブロック」の2種類です。その他に、Markdownはヒント情報などの静的コンテンツに主に使用されます。

##### データブロック

データブロックでは、トリガーデータまたは任意のノード処理結果を選択でき、ToDo担当者に関連するコンテキスト情報を提供するために使用されます。例えば、ワークフローがフォームイベントによってトリガーされる場合、トリガーデータの詳細ブロックを作成できます。これは通常のページの詳細設定と同様で、トリガーデータ内の任意のフィールドを選択してデータを表示できます。

![人工节点_节点配置_界面配置_数据区块_触发器](https://static-docs.nocobase.com/675c3e58a1a4f45db310a72c2d0a404c.png)

ノードデータブロックも同様に、上流ノードからのデータ結果を詳細として表示できます。例えば、上流の計算ノードの結果を、担当者のToDoタスクのコンテキスト参照情報として利用できます。

![人工节点_节点配置_界面配置_データ区块_节点数据](https://static-docs.nocobase.com/a583e26e508e954b47e5ddff80d998c4.png)

:::info{title=ヒント}
インターフェース設定時にはワークフローが未実行の状態であるため、データブロックには具体的なデータは表示されません。特定のワークフローインスタンスに関連するデータは、ワークフローがトリガーされて実行された後にのみ、ToDoポップアップ画面で確認できます。
:::

##### フォームブロック

ToDoインターフェースには、ワークフローを続行するかどうかの最終決定を処理するために、少なくとも1つのフォームブロックを設定する必要があります。フォームを設定しない場合、プロセスが中断された後に続行できなくなります。フォームブロックには以下の3つのタイプがあります。

- カスタムフォーム
- データ新規作成フォーム
- データ更新フォーム

![人工节点_节点配置_界面配置_表单类型](https://static-docs.nocobase.com/2d068f3012ab07e32a265405492104a8.png)

データ新規作成フォームとデータ更新フォームでは、ベースとなる**コレクション**を選択する必要があります。ToDoユーザーがフォームを提出すると、フォーム内の値を使用して指定された**コレクション**のデータが新規作成または更新されます。カスタムフォームでは、**コレクション**に紐付かない一時的なフォームを自由に定義でき、ToDoユーザーが提出したフィールド値は後続のノードで使用できます。

フォームの送信ボタンは、以下の3つのタイプに設定できます。

- 送信してワークフローを続行
- 送信してワークフローを終了
- フォーム値のみを一時保存

![人工节点_节点配置_界面配置_表单ボタン](https://static-docs.nocobase.com/6b45995b14152e85a821dff6f6e3189a.png)

これら3つのボタンは、ワークフロー処理における3つのノードステータスを表します。提出後、ノードのステータスは「完了」、「却下」、または「待機中」のいずれかに変更されます。ワークフロー全体のその後の処理の流れを決定するためには、フォームで最初の2つのうち少なくとも1つを設定する必要があります。

「ワークフローを続行」ボタンでは、フォームフィールドへの値の割り当てを設定できます。

![人工节点_节点配置_界面配置_表单ボタン_設定表单値](https://static-docs.nocobase.com/2cec2d4e2957f068877e616dec3b56dd.png)

![人工节点_节点配置_界面配置_表单ボタン_設定表单値弹窗](https://static-docs.nocobase.com/5ff51b60c76cdb76e6f1cc95dc3d8640.png)

ポップアップを開くと、フォームの任意のフィールドに値を割り当てることができます。フォームが提出されると、この値がフィールドの最終値として使用されます。これは、データをレビューする際に特に役立ちます。フォーム内で複数の異なる「ワークフローを続行」ボタンを使用し、各ボタンでステータスのようなフィールドに異なる列挙値を設定することで、異なるデータ値を使用して後続のワークフロー実行を続行する効果を実現できます。

## ToDoブロック

手動処理を行うには、ToDoタスクを表示するためのToDoリストをページに追加する必要があります。これにより、関係者はこのリストを通じて手動処理ノードの具体的なタスク処理に進むことができます。

### ブロックの追加

ページ内のブロックから「ワークフローToDo」を選択し、ToDoリストブロックを追加できます。

![人工节点_追加待办区块](https://static-docs.nocobase.com/198b417454cd73b704267bf30fe5e647.png)

ToDoリストブロックの例：

![人工节点_待办列表](https://static-docs.nocobase.com/cfefb0d2c6a91c5c9dfa550d6b220f34.png)

### ToDoの詳細

その後、関係者は対応するToDoタスクをクリックしてToDoポップアップを開き、手動処理を行うことができます。

![人工节点_待办详情](https://static-docs.nocobase.com/ccfd0533deebff6b3f6ef4408066e688.png)

## 例

### 記事のレビュー

一般ユーザーが投稿した記事は、管理者の承認を経て初めて「公開済み」ステータスに更新されるとします。もしワークフローが却下された場合、記事は「下書き」状態（非公開）のままになります。このプロセスは、手動処理ノードの更新フォームを使用して実装できます。

「記事の新規作成」によってトリガーされる**ワークフロー**を作成し、手動処理ノードを追加します。

<figure>
  <img alt="人工节点_示例_文章审核_流程编排" src="https://github.com/nocobase/nocobase/assets/525658/2021bf42-f372-4f69-9c84-5a786c061e0e" width="360" />
</figure>

手動処理ノードで担当者を管理者に設定します。インターフェース設定では、トリガーデータに基づくブロックを追加し、新規作成された記事の詳細を表示するようにします。

<figure>
  <img alt="人工节点_示例_文章审核_节点配置_详情区块" src="https://github.com/nocobase/nocobase/assets/525658/c61d0aac-23cb-4387-b60e-ce3cc7bf1c24" width="680" />
</figure>

設定インターフェースで、データ更新フォームに基づくブロックを追加し、記事**コレクション**を選択します。これは管理者が承認するかどうかを決定するために使用され、承認後には後続の他の設定に基づいて対応する記事が更新されます。フォームを追加すると、デフォルトで「ワークフローを続行」ボタンが表示されます。これを「承認」とみなし、さらに「ワークフローを終了」ボタンを却下用として追加します。

<figure>
  <img alt="人工节点_示例_文章审核_节点配置_表单と操作" src="https://github.com/nocobase/nocobase/assets/525658/4baaf41e-3d81-4ee8-a038-29db05e0d99f" width="673" />
</figure>

ワークフローを続行する際、記事のステータスを更新する必要があります。これには2つの設定方法があります。1つは、記事のステータスフィールドをフォームに直接表示し、操作者が選択できるようにする方法です。この方法は、フィードバックの提供など、能動的なフォーム入力が必要な状況に適しています。

<figure>
  <img alt="人工节点_示例_文章审核_节点配置_表单フィールド" src="https://github.com/nocobase/nocobase/assets/525658/82ea4e0e-25fc-4921-841e-e1a2782a87d1" width="668" />
</figure>

操作者の作業を簡素化するため、もう1つの方法は、「ワークフローを続行」ボタンでフォーム値の割り当てを設定することです。割り当てで「ステータス」フィールドを追加し、値を「公開済み」と設定すると、操作者がボタンをクリックした際に記事が「公開済み」ステータスに更新されることを意味します。

<figure>
  <img alt="人工节点_示例_文章审核_节点配置_表单割り当て" src="https://github.com/nocobase/nocobase/assets/525658/0340bd9f-8323-4e4f-bc5a-8f81be3d6736" width="711" />
</figure>

次に、フォームブロックの右上にある設定メニューから、更新するデータのフィルター条件を選択します。ここでは「記事」**コレクション**を選択し、フィルター条件を「ID `と等しい` トリガー変数 / トリガーデータ / ID」とします。

<figure>
  <img alt="人工节点_示例_文章审核_节点配置_表单条件" src="https://github.com/nocobase/nocobase/assets/525658/da004055-0262-49ae-88dd-3844f3c92e28" width="1020" />
</figure>

最後に、各ブロックのタイトル、関連するボタンのテキスト、およびフォームフィールドのヒントテキストを変更して、インターフェースをより使いやすくすることができます。

<figure>
  <img alt="人工节点_示例_文章审核_节点配置_最終表单" src="https://github.com/nocobase/nocobase/assets/525658/21db5f6b-690b-49c1-8259-4f7b8874620d" width="678" />
</figure>

設定パネルを閉じ、「送信」ボタンをクリックしてノード設定を保存すると、**ワークフロー**の設定は完了です。この**ワークフロー**を有効にすると、新しい記事が作成された際に自動的にトリガーされます。管理者はToDoタスクリストからこの**ワークフロー**の処理が必要であることを確認でき、クリックして表示するとToDoタスクの詳細を見ることができます。

<figure>
  <img alt="人工节点_示例_文章审核_待办リスト" src="https://github.com/nocobase/nocobase/assets/525658/4e1748cd-6a07-4045-82e5-286826607826" width="1363" />
</figure>

<figure>
  <img alt="人工节点_示例_文章审核_待办詳細" src="https://github.com/nocobase/nocobase/assets/525658/65f01fb1-8cb0-45f8-ac21-ec8ab59be449" width="680" />
</figure>

管理者は記事の詳細に基づいて手動で判断し、その記事を公開できるかどうかを決定できます。公開できる場合は「承認」ボタンをクリックすると、記事は「公開済み」ステータスに更新されます。公開できない場合は「却下」ボタンをクリックすると、記事は「下書き」状態のままになります。

## 休暇申請の承認

従業員が休暇を申請する場合、上司の承認を経て初めて有効となり、該当従業員の休暇データが差し引かれるとします。また、承認または却下にかかわらず、リクエストノードを通じてSMS APIを呼び出し、従業員に関連する通知SMSを送信します（「[HTTPリクエスト](#_HTTP_請求)」セクションを参照）。このシナリオは、手動処理ノードのカスタムフォームを使用して実装できます。

「休暇申請の新規作成」によってトリガーされる**ワークフロー**を作成し、手動処理ノードを追加します。これは以前の記事レビュープロセスと似ていますが、ここでは担当者が上司です。インターフェース設定では、トリガーデータに基づくブロックを追加して新規休暇申請の詳細を表示し、さらにカスタムフォームに基づくブロックを追加して上司が承認するかどうかを決定できるようにします。カスタムフォームには、承認ステータスを示すフィールドと却下理由のフィールドを追加します。

<figure>
  <img alt="人工节点_示例_请假审批_节点配置" src="https://github.com/nocobase/nocobase/assets/525658/ef3bc7b8-56e8-4a4e-826e-ffd0b547d1b6" width="675" />
</figure>

記事レビュープロセスとは異なり、上司の承認結果に基づいて後続のプロセスを続行する必要があるため、ここでは「ワークフローを続行」ボタンのみを提出用として設定し、「ワークフローを終了」ボタンは使用しません。

同時に、手動処理ノードの後には、条件判断ノードを使用して上司が休暇申請を承認したかどうかを判断できます。承認されたブランチでは、休暇を差し引くデータ処理を追加し、ブランチの終了後には、従業員にSMS通知を送信するためのリクエストノードを追加します。これにより、以下の完全な**ワークフロー**が完成します。

<figure>
  <img alt="人工节点_示例_请假审批_流程編排" src="https://github.com/nocobase/nocobase/assets/525658/733f68da-e44f-4172-9772-a287ac2724f2" width="593" />
</figure>

その条件判断ノードの条件設定は、「手動処理ノード / カスタムフォームデータ / 承認フィールドの値が『承認済み』であるか」となります。

<figure>
  <img alt="人工节点_示例_请假审批_条件判断" src="https://github.com/nocobase/nocobase/assets/525658/57b972f0-a3ce-4f33-8d40-4272ad205c20" width="678" />
</figure>

リクエスト送信ノード内のデータでは、手動処理ノードの対応するフォーム変数を使用して、承認と却下のSMSコンテンツを区別することもできます。これで**ワークフロー**全体の構成が完了です。**ワークフロー**を有効にした後、従業員が休暇申請フォームを提出すると、上司はToDoタスクで承認処理を行うことができます。操作は基本的に記事レビュープロセスと同様です。