---
pkg: '@nocobase/plugin-workflow-manual'
title: "人工处理"
description: "人工处理节点：将流程决策权交给用户，生成待办任务，支持审批、继续/等待/终止流程。"
keywords: "工作流,人工处理,审批,待办,人机协同,NocoBase"
---

# 人工处理

## 介绍

当业务流程不能完全自动化决策时，可以通过人工节点，将部分决策权交给人工处理。

人工节点在执行到时会先中断整个流程的执行，生成对应用户的待办任务，在用户提交后根据所选的状态决定继续流程、继续等待还是终止流程。在需要进行流程审批等场景会非常有用。

## 安装

内置插件，无需安装。

## 创建节点

在工作流配置界面中，点击流程中的加号（“+”）按钮，添加“人工处理”节点：

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

## 配置节点

### 负责人

人工节点需要指定一个用户，作为待办任务的执行者。待办任务的列表可以在页面添加区块时添加，每个节点的任务弹窗内容需要在节点中进行界面配置。

选定一个用户，或者通过变量选择上下文中的用户数据的主键或外键。

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

:::info{title=提示}
目前人工节点的负责人选项暂不支持针对多人处理，会在未来的版本中支持。
:::

### 配置用户界面

待办事项的界面配置是人工节点的核心内容，可以通过点击“配置用户界面”按钮弹窗打开独立配置，和普通页面一样，可以所见即所得地配置：

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

#### 标签页

标签页可以用于区分不同的内容，例如一个标签页用于通过的表单提交，另一个标签页用于拒绝的表单提交，或者用于展示相关数据的详情等，可自由配置。

#### 区块

支持的区块类型主要有两大类，数据区块和表单区块，另外的 Markdown 主要用于提示信息等静态内容。

##### 数据区块

数据区块可选择触发器数据或任意的节点处理结果，用于提供给待办负责人相关的上下文信息。例如工作流是表单事件触发的，即可以创建一个触发数据的详情区块，与普通页面的详情配置一致，可任选触发数据内有的字段进行数据展示：

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

节点数据区块类似，可以选择上游节点中的数据结果作为详情展示。例如上游一个计算节点的结果，作为负责人待办的上下文参考信息：

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

:::info{title=提示}
由于配置界面时工作流都处于未执行的状态，所以数据区块中都是没有具体数据显示的，只有当工作流被触发执行后，在待办弹窗界面中才可看到具体流程的相关数据。
:::

##### 表单区块

待办界面中至少需要配置一个表单区块，作为工作流是否继续执行的最终决策处理，不配置表单会导致流程中断后无法继续。表单区块有三种类型，分别是：

- 自定义表单
- 新增数据表单
- 更新数据表单

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

新增数据表单和更新数据表单需要选择基于的数据表，待办用户提交后会使用表单内的值新增或更新特定数据表的数据。自定义表单则可以自由定义一个数据表无关的临时表单，待办用户提交后的字段值可以在后续节点中使用。

表单的提交按钮可以配置三种类型，分别是：

- 提交后继续流程
- 提交后终止流程
- 仅暂存表单值

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

三个按钮代表流程处理中三种节点状态，提交后该节点的状态修改为“完成”、“拒绝”或继续处于“等待”的状态，一个表单至少要配置前两者之一，以决定整个流程的后续处理流向。

在“继续流程”按钮上可以配置对表单字段的赋值：

![人工节点_节点配置_界面配置_表单按钮_设置表单值](https://static-docs.nocobase.com/2cec2d4e2957f068877e616dec3b56dd.png)

![人工节点_节点配置_界面配置_表单按钮_设置表单值弹窗](https://static-docs.nocobase.com/5ff51b60c76cdb76e6f1cc95dc3d8640.png)

打开弹窗后可以对表单任意字段进行赋值，表单提交后将会以该值作为字段的终值。通常在对一些数据进行审核时比较有用，可以在表单中使用多个不同的“继续流程”按钮，每个按钮对类似状态的字段设置不同的枚举值，以达到继续后续流程执行且使用不同数据值的效果。

## 待办区块

对于人工处理来说，还需要在页面中添加待办列表，用于展示待办任务，相关人员才可以通过该列表进入人工节点的具体任务处理。

### 添加区块

可以从页面中的区块中选择“工作流待办”，添加待办列表的区块：

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

待办列表区块示例：

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

### 待办详情

之后相关人员可以点击对应的待办任务，进入待办弹窗，进行人工处理：

![人工节点_待办详情](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>

针对继续流程时，我们需要更新文章的状态，这里有两种配置方式，一种是直接在表单中展示文章状态的字段，供操作者选择，这种方式更适合于一些需要主动填写表单的情况，例如反馈意见等：

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

为了简化操作者的操作，另一种方式是在“继续流程”按钮上配置表单赋值，赋值中增加一个“状态”字段，值为“已发布”，则代表操作者点击按钮后，文章将会更新为已发布状态：

<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>

关闭配置面板，点击提交按钮保存节点配置后，工作流就配置完成了。启用该工作流以后，在新增文章时，会自动触发该工作流，管理员可以从待办任务列表中看到该工作流需要处理，点击查看后可以看到待办任务的详情：

<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>

管理员可以根据文章详情进行人工判断，该文章是否可以发布，如果可以的话，点击“通过”按钮，文章将会更新为已发布状态，如果不可以的话，点击“拒绝”按钮，文章将会保持草稿状态。

## 请假审批

假设员工需要请假，需要经过主管审批通过后才能生效，并核销对应员工的假期数据。而且不管通过或拒绝，都将会通过请求节点调用短信接口，发送相关的的通知短信给员工（见 [HTTP 请求](#_HTTP_请求) 部分）。这个场景可以使用人工节点中的自定义表单来实现。

创建一个由“新增请假”触发的工作流，并增加一个人工节点，与之前的文章审核流程类似，只是这里的负责人是主管，配置界面中增加一个基于触发数据的区块，用于展示新增请假的详情，再增加一个基于自定义表单的区块，用于主管决定是否通过审核，自定义表单中增加一个是否通过的字段，以及一个拒绝理由的字段：

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

与文章审核流程不同，由于我们需要根据主管审批的结果继续后续的流程，所以这里我们只配置一个“继续流程”按钮，作为提交使用，而不使用“终止流程”按钮。

同时在人工节点之后，我们可以通过一个条件判断节点来判断主管是否通过了该请假申请，通过的分支中增加核销假期的数据处理，并在分支结束后增加一个请求节点，用于发送短信通知员工，就得到以下完整的流程：

<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>

发送请求节点里的数据也可以使用人工节点中相应的表单变量，以区分通过和拒绝的短信内容。这样就完成了整个流程的配置，在开启工作流后，当员工提交请假申请的表单后，主管即可在待办任务中进行审批处理，操作基本与文章审核流程类似。
