Skip to content

表单接入审批流 ​

一句话:把一张表单从「能填」变成「要走审批」——流程表单 → 流程模型四步 → 发布 → 员工发起 → 主管审批,端到端走完一遍。读完约 20 分钟,全程只用五个页面。

演示环境里已经有成品,先看效果再动手

流程模型「文档演示-请假申请」(标识 doc_leave_demo)就是本篇的成品状态:它绑定内置的「请假」流程表单(请假人 / 请假时间 / 请假原因),流程图是「发起人 → 部门审批 → 抄送财务 → 结束」。三个账号登录各看一段:salesman01 / admin123 在 我的流程 里有 4 条自己发起的实例(2 通过 / 1 拒绝 / 1 审批中);docadmin / admin123 在 待办任务 里还剩 1 条在办、已办任务 里有 3 条处理记录;docsales / admin123 在 抄送我的 里有 2 条只读抄送。照下面六步在自己租户里复刻一遍即可。

先对齐三个概念 ​

概念是什么发布/发起后变成什么
流程表单只服务于流程的表单,由 BPM 表单设计器产出被模型引用,发起时渲染给发起人填
流程模型「表单 + 流程图 + 更多设置」装配出的母版发布一次 = 产生一个流程定义版本
流程实例员工发起一次 = 一个实例带状态(审批中/通过/拒绝/已取消)与审批时间线

三者是 1 : 1 : N 的关系:一张表单可以被多个模型引用,一个模型可以被发起无数次。

表单来源有三种,在线表单也能挂审批流

模型第二步的表单来源是流程表单(本篇)、在线表单(从零搭建一个应用里表单设计的产物)与业务表单(开发写死路由的业务页面)三选一。选在线表单时,发起页渲染的就是那张在线表单,提交后数据照旧落在它绑定的业务表上,同时创建一个流程实例——「业务表 + 审批」不需要再画一张流程表单。三者的差别与取舍见流程模型第二步。

功能在哪 ​

页面菜单路径本教程用它干什么
流程表单工作流程 → 流程管理 → 流程表单画那张要被审批的表单
流程模型工作流程 → 流程管理 → 流程模型四步装配母版并发布
发起流程工作流程 → 审批中心 → 发起流程员工入口:选流程、填表单、看审批预测
待办任务工作流程 → 审批中心 → 待办任务审批人入口:通过/拒绝/转办/加签/退回
我的流程工作流程 → 审批中心 → 我的流程发起人入口:看进度、催办、取消

常用操作 ​

第 1 步:建流程表单 ​

  1. 打开 流程表单,点「新增」——注意它不是弹窗,而是整页跳到表单设计器;
  2. 左侧控件区拖入输入框/日期/多行文本等控件,右侧配标签、必填、占位提示;
  3. 点「保存」,在对话框里填表单名、状态、备注。

本教程的示例表单只有三个字段:请假人 / 请假时间 / 请假原因——字段越少,后面流程图越好讲。演示环境直接复用了内置的「请假」流程表单,不必新建。

表单设计器整页:新增不是弹窗,而是跳到设计器(租户管理员视角)

流程表单与在线表单是两套东西

流程表单的产物是一段表单 schema,只被 BPM 渲染;它没有自己的菜单、没有列表页、不参与权限资源登记。想要「列表 + 增删改查 + 权限」的业务表,走数据模型 + 表单设计。

第 2 步:建模型,第一步填基本信息 ​

回到 流程模型,点「新建模型」,进入四步向导。第一步决定「这条流程是谁的、谁能发起」:

  • 流程标识(key):全局唯一,发布后不可改;
  • 流程分类:决定发起页里它出现在哪个分类面板下;
  • 谁可以发起:留空 = 所有人可发起;填了角色/部门 = 只有命中的人能在发起页看到它;
  • 流程管理员:能改这条模型的人,建议填岗位而不是个人。

第一步基本信息:流程标识、名称、分类、图标、描述、流程类型、可见性、谁可以发起、流程管理员

第 3 步:第二步绑定表单 ​

这一步就是「表单接入审批流」的接点。表单类型三选一:

表单类型选它的理由要准备什么
流程表单表单只为这条流程服务(本教程)第 1 步建好的表单,下拉选中即可
业务表单已有开发好的业务页面(如 OA 请假)「表单提交路由」与「表单查看地址」两个路由
在线表单想要「业务表 + 列表 + 权限 + 审批」一套齐活,不想再画一张流程表单一张已发布的表单设计产物,且它绑定的主表合格(见下面那条警告)

选中后下方会实时渲染表单预览——绑没绑对,一眼就能看出来,不用等到发起时才发现问题。

选「在线表单」时,下拉里灰着标「不可用」的那些是怎么回事

下拉只列已发布的在线表单;不合格的会灰着选不动,并标「不可用」。把鼠标悬停上去能看到具体原因——平台原样给出,不合并成一句「不可用」,就是为了让你知道去补哪一列。最常见的一条是主表缺流程回写列,或者列在而类型不对:

  • process_instance_id:字符串型,长度不小于 64(平台把流程实例编号回写进这一列);
  • process_status:整数型(TINYINT / INT / LONG;建成 STRING 不合格)——平台往里写的是流程状态码。

去数据模型把这张表打开,「快速添加 → 流程字段」可以一键补齐缺的列。🔴 列已存在但类型不对时,那次点击会跳过(它按列名判存在),此时页面顶部有一条常驻红色提示说明差在哪;按提示改类型/长度再点「保存」(会执行 ALTER TABLE)。

这两列类型不合格不会在建表、存草稿、发布表单时报任何错——一路绿灯,直到这一步才被拒。所以让 AI 助手建「之后要走审批」的表时,一次就把这两列按上面的类型建出来,比事后改表省事得多(datamodel_create 的工具说明里写明了这一点)。

第二步表单设计:表单类型三选一,下方表单预览实时渲染所选流程表单

第 4 步:第三步画流程图 ​

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

第三步 SIMPLE 设计器:发起人→部门审批→抄送财务→结束,节点之间有蓝色加号按钮

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

审批节点抽屉审批人页签:审批人设置 15 种方式、多人审批方式、审批人拒绝时

审批人解析为空 = 实例卡死在该节点

「部门主管」这类方式在发起时才解析:如果发起人没有上级主管,节点会找不到审批人。演示环境里请优先用「指定成员/角色」,排障时看流程详情页的时间线停在哪一步。

第 5 步:发布,然后才算数 ​

第四步「更多设置」按需填(流程 ID 规则、监听器、自动去重等),保存后回列表点「发布」。发布一次产生一个流程定义版本;「更多 → 历史」能看到全部版本并恢复到任意一版。

改模型不影响在办实例

已发起的实例跑在它发起时的那个版本上;改模型 + 重新发布只影响之后发起的实例。所以「我改了审批人怎么不生效」先问一句:你看的是新实例还是老实例。

流程定义页:历史版本列表,行内有恢复与权限配置两个操作

第 6 步:发起 → 审批 → 归档 ​

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

发起流程第二步:左侧表单加右侧审批流程预测时间线,底部发起与取消

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

流程图页签:SIMPLE 模型渲染为卡片图,带缩放工具条

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

审批详情页:底部操作条给出通过、拒绝、评论、抄送、转办、委派、加签、退回

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

通过弹层:审批意见加附件上传,绿色通过按钮确认

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

已办任务列表:我处理完的任务归档,操作列给撤回与历史

流程详情页:发起人视角看到表单内容、右侧审批时间线(发起人→部门审批→结束)与右上角审批中印章;底部操作条只有取消

视角对照 ​

视角在这条流程里看到什么
发起人 salesman01发起页能选到它;我的流程里有实例与进度;审批中可取消
审批人 docadmin待办任务里有一条待处理;处理后归档到已办任务
抄送人 docsales抄送我的里一条只读记录,无审批动作
租户管理员(流程管理员)流程模型/流程实例管理页可改模型、看全部实例、清理历史

进阶 ​

常见问题 ​

Q:发起页里看不到我新建的流程? A:三个可能:没发布;第一步「谁可以发起」没包含当前用户的角色/部门;流程分类在发起页被折叠了。按这个顺序查。

Q:绑了表单,发起时却是空白? A:第二步的预览是实时渲染的,预览有内容而发起时空白,多半是发布版本与模型当前编辑不一致——重新发布一次。

Q:审批人点不了「通过」? A:看是不是会签在等其他人:多人审批方式=会签时,要所有人都同意节点才走。或签则任一人即可。

Q:发起人想反悔怎么办? A:审批中状态在 我的流程 详情底部有「取消」;已经通过的实例不能取消,只能由管理员在流程实例页处理或走业务上的补偿流程。

Q:抄送和审批有什么区别? A:抄送只产生一条只读记录(抄送我的),不阻塞流程、没有动作按钮;审批是流程节点,不处理流程就停在那里。

相关页面 ​