表单接入审批流
一句话:把一张表单从「能填」变成「要走审批」——流程表单 → 流程模型四步 → 发布 → 员工发起 → 主管审批,端到端走完一遍。读完约 20 分钟,全程只用五个页面。
演示环境里已经有成品,先看效果再动手
流程模型「文档演示-请假申请」(标识 doc_leave_demo)就是本篇的成品状态:它绑定内置的「请假」流程表单(请假人 / 请假时间 / 请假原因),流程图是「发起人 → 部门审批 → 抄送财务 → 结束」。三个账号登录各看一段:salesman01 / admin123 在 我的流程 里有 4 条自己发起的实例(2 通过 / 1 拒绝 / 1 审批中);docadmin / admin123 在 待办任务 里还剩 1 条在办、已办任务 里有 3 条处理记录;docsales / admin123 在 抄送我的 里有 2 条只读抄送。照下面六步在自己租户里复刻一遍即可。
先对齐三个概念
| 概念 | 是什么 | 发布/发起后变成什么 |
|---|---|---|
| 流程表单 | 只服务于流程的表单,由 BPM 表单设计器产出 | 被模型引用,发起时渲染给发起人填 |
| 流程模型 | 「表单 + 流程图 + 更多设置」装配出的母版 | 发布一次 = 产生一个流程定义版本 |
| 流程实例 | 员工发起一次 = 一个实例 | 带状态(审批中/通过/拒绝/已取消)与审批时间线 |
三者是 1 : 1 : N 的关系:一张表单可以被多个模型引用,一个模型可以被发起无数次。
表单来源有三种,在线表单也能挂审批流
模型第二步的表单来源是流程表单(本篇)、在线表单(从零搭建一个应用里表单设计的产物)与业务表单(开发写死路由的业务页面)三选一。选在线表单时,发起页渲染的就是那张在线表单,提交后数据照旧落在它绑定的业务表上,同时创建一个流程实例——「业务表 + 审批」不需要再画一张流程表单。三者的差别与取舍见流程模型第二步。
功能在哪
| 页面 | 菜单路径 | 本教程用它干什么 |
|---|---|---|
| 流程表单 | 工作流程 → 流程管理 → 流程表单 | 画那张要被审批的表单 |
| 流程模型 | 工作流程 → 流程管理 → 流程模型 | 四步装配母版并发布 |
| 发起流程 | 工作流程 → 审批中心 → 发起流程 | 员工入口:选流程、填表单、看审批预测 |
| 待办任务 | 工作流程 → 审批中心 → 待办任务 | 审批人入口:通过/拒绝/转办/加签/退回 |
| 我的流程 | 工作流程 → 审批中心 → 我的流程 | 发起人入口:看进度、催办、取消 |
常用操作
第 1 步:建流程表单
- 打开 流程表单,点「新增」——注意它不是弹窗,而是整页跳到表单设计器;
- 左侧控件区拖入输入框/日期/多行文本等控件,右侧配标签、必填、占位提示;
- 点「保存」,在对话框里填表单名、状态、备注。
本教程的示例表单只有三个字段:请假人 / 请假时间 / 请假原因——字段越少,后面流程图越好讲。演示环境直接复用了内置的「请假」流程表单,不必新建。

流程表单与在线表单是两套东西
流程表单的产物是一段表单 schema,只被 BPM 渲染;它没有自己的菜单、没有列表页、不参与权限资源登记。想要「列表 + 增删改查 + 权限」的业务表,走数据模型 + 表单设计。
第 2 步:建模型,第一步填基本信息
回到 流程模型,点「新建模型」,进入四步向导。第一步决定「这条流程是谁的、谁能发起」:
- 流程标识(key):全局唯一,发布后不可改;
- 流程分类:决定发起页里它出现在哪个分类面板下;
- 谁可以发起:留空 = 所有人可发起;填了角色/部门 = 只有命中的人能在发起页看到它;
- 流程管理员:能改这条模型的人,建议填岗位而不是个人。

第 3 步:第二步绑定表单
这一步就是「表单接入审批流」的接点。表单类型三选一:
| 表单类型 | 选它的理由 | 要准备什么 |
|---|---|---|
| 流程表单 | 表单只为这条流程服务(本教程) | 第 1 步建好的表单,下拉选中即可 |
| 业务表单 | 已有开发好的业务页面(如 OA 请假) | 「表单提交路由」与「表单查看地址」两个路由 |
| 在线表单 | 想要「业务表 + 列表 + 权限 + 审批」一套齐活,不想再画一张流程表单 | 一张已发布的表单设计产物,且它绑定的主表合格(见下面那条警告) |
选中后下方会实时渲染表单预览——绑没绑对,一眼就能看出来,不用等到发起时才发现问题。
选「在线表单」时,下拉里灰着标「不可用」的那些是怎么回事
下拉只列已发布的在线表单;不合格的会灰着选不动,并标「不可用」。把鼠标悬停上去能看到具体原因——平台原样给出,不合并成一句「不可用」,就是为了让你知道去补哪一列。最常见的一条是主表缺流程回写列,或者列在而类型不对:
process_instance_id:字符串型,长度不小于 64(平台把流程实例编号回写进这一列);process_status:整数型(TINYINT / INT / LONG;建成 STRING 不合格)——平台往里写的是流程状态码。
去数据模型把这张表打开,「快速添加 → 流程字段」可以一键补齐缺的列。🔴 列已存在但类型不对时,那次点击会跳过(它按列名判存在),此时页面顶部有一条常驻红色提示说明差在哪;按提示改类型/长度再点「保存」(会执行 ALTER TABLE)。
这两列类型不合格不会在建表、存草稿、发布表单时报任何错——一路绿灯,直到这一步才被拒。所以让 AI 助手建「之后要走审批」的表时,一次就把这两列按上面的类型建出来,比事后改表省事得多(datamodel_create 的工具说明里写明了这一点)。

第 4 步:第三步画流程图
SIMPLE 设计器(仿钉钉)默认给「发起人 → 结束」。点两个节点之间的蓝色加号插入节点:本教程插一个审批节点(部门审批)和一个抄送节点(抄送财务)。

点审批节点打开抽屉,「审批人」页签是整条流程里最要紧的配置:审批人设置 15 种方式(指定成员 / 角色 / 部门主管 / 发起人自选 / 表单内联系人……)、多人审批方式(会签/或签/依次)、审批人拒绝时(终止流程或退回)。

审批人解析为空 = 实例卡死在该节点
「部门主管」这类方式在发起时才解析:如果发起人没有上级主管,节点会找不到审批人。演示环境里请优先用「指定成员/角色」,排障时看流程详情页的时间线停在哪一步。
第 5 步:发布,然后才算数
第四步「更多设置」按需填(流程 ID 规则、监听器、自动去重等),保存后回列表点「发布」。发布一次产生一个流程定义版本;「更多 → 历史」能看到全部版本并恢复到任意一版。
改模型不影响在办实例
已发起的实例跑在它发起时的那个版本上;改模型 + 重新发布只影响之后发起的实例。所以「我改了审批人怎么不生效」先问一句:你看的是新实例还是老实例。

第 6 步:发起 → 审批 → 归档
发起人(salesman01)打开 发起流程:左侧分类、右侧流程卡片墙,点进「文档演示-请假申请」后左边填表单、右边实时给出审批流程预测时间线(谁将审批、预计顺序),点「发起」。

发起后在 我的流程 里能看到这个实例;切「流程图」页签,SIMPLE 模型被渲染成卡片图,当前走到哪一步高亮在哪。

审批人(docadmin)打开 待办任务,点进详情:底部操作条给出通过、拒绝、评论、抄送、转办、委派、加签、退回八种动作。

点「通过」,填审批意见(可带附件)确认:

审批通过后:实例从待办消失、进入审批人的 已办任务;发起人的 我的流程 里状态变为通过,详情页右侧时间线从「发起人 → 部门审批 → 结束」逐节点点亮;被抄送的 docsales 在 抄送我的 里收到一条只读记录。


视角对照
| 视角 | 在这条流程里看到什么 |
|---|---|
发起人 salesman01 | 发起页能选到它;我的流程里有实例与进度;审批中可取消 |
审批人 docadmin | 待办任务里有一条待处理;处理后归档到已办任务 |
抄送人 docsales | 抄送我的里一条只读记录,无审批动作 |
| 租户管理员(流程管理员) | 流程模型/流程实例管理页可改模型、看全部实例、清理历史 |
进阶
- 流程模型:BPMN 设计器(第三步可切换)、导入导出、停用与清理;
- 流程表单:设计器控件与校验的完整清单;
- 待办任务:转办/委派/加签/退回四种非常规动作的区别;
- 流程实例:管理端视角的全部实例与取消;
- 流程监听器 与 流程表达式:在节点前后挂自定义逻辑。
常见问题
Q:发起页里看不到我新建的流程? A:三个可能:没发布;第一步「谁可以发起」没包含当前用户的角色/部门;流程分类在发起页被折叠了。按这个顺序查。
Q:绑了表单,发起时却是空白? A:第二步的预览是实时渲染的,预览有内容而发起时空白,多半是发布版本与模型当前编辑不一致——重新发布一次。
Q:审批人点不了「通过」? A:看是不是会签在等其他人:多人审批方式=会签时,要所有人都同意节点才走。或签则任一人即可。
Q:发起人想反悔怎么办? A:审批中状态在 我的流程 详情底部有「取消」;已经通过的实例不能取消,只能由管理员在流程实例页处理或走业务上的补偿流程。
Q:抄送和审批有什么区别? A:抄送只产生一条只读记录(抄送我的),不阻塞流程、没有动作按钮;审批是流程节点,不处理流程就停在那里。
