把刚才那张表接上审批流
一句话:给第 01 章那张表补两列回写状态,用 SIMPLE 设计器点着搭一棵审批树(受理 → 按样品类型分流 → 复核 → 抄送),部署,换一个没有数据模型权限的普通员工去发起,再换回来逐级审批。走完以后,那条业务记录上的 process_status 变成了 2。这一章是首页视频的第 03 章。
演示环境里已经有成品
用 admin / admin123 登录,工作流程 → 流程管理 → 流程模型 里的 样品检测审批(流程标识 doc_sample_approval,状态「已部署」)就是这一章的成品。点行内「设计」能看到那棵 SIMPLE 树;审批中心 → 流程实例 里能看到那条走完的实例。
功能在哪
| 页面 | 菜单路径 | 这一章用它干什么 |
|---|---|---|
| 数据模型 ★ | 基础设施 → 数据管理 → 数据模型 | 给业务表补两列流程回写字段 |
| 流程模型 | 工作流程 → 流程管理 → 流程模型 | 新建模型、绑表单、SIMPLE 设计器搭树、发布 |
| 发起流程 | 工作流程 → 审批中心 → 发起流程 | 用普通员工的身份发起一条 |
| 待办任务 | 工作流程 → 审批中心 → 待办任务 | 逐级审批 |
| 数据查看 ★ | 基础设施 → 数据管理 → 数据查看 | 核对 process_status 真的回写了 |
前置条件
- 必须先做完第 01 章:这一章的流程表单直接绑它,不重新画一遍;
- 两个账号:一个有
bpm:model:create/update/deploy与infra:data-model:update权限的(演示环境用租户管理员docadmin),一个只有bpm:process-instance:create与bpm:task:query的普通员工(演示环境用salesman01); - 第 01 章那张表里,「样品类型」必须是必填字段——这是分支条件能配的前提,第 01 章那段需求里已经写死了这一条。
这一章要搭的审批树
常用操作
第 1 步:确认这张表有没有流程回写的两列
流程要往业务表写「这条记录挂着哪个实例、审批到哪一步了」,靠的是两列:
| 列 | 含义 |
|---|---|
process_instance_id | 流程实例编号 |
process_status | 流程状态码(2 就是审批通过) |
去 基础设施 → 数据管理 → 数据模型,按表名搜第 01 章那张表,看列清单里有没有这两列。
- 已经有了 → 跳过这一步。本轮实测就是这种情况:AI 建表时已经带上了,平台检测到
flowReady=true就不再动它。 - 没有 → 行内点「设计」,点「快速添加」,在下拉里选「流程字段」,然后点「保 存」。做对了弹含「成功」的提示。
「保存」会真的执行 ALTER TABLE
这不是预览。而且没有变化就别去碰它——平台检测到两列已在时会跳过,但如果你手动改了别的字段再保存,那也会一并落库。
第 2 步:新建流程模型
进 工作流程 → 流程管理 → 流程模型,点「新建模型」,填基本信息:
| 字段 | 填什么 |
|---|---|
| 流程标识 | doc_sample_approval |
| 流程名称 | 样品检测审批 |
| 流程分类 | 日常管理 |
| 流程类型 | SIMPLE 设计器 |

SIMPLE 设计器和 BPMN 有什么区别
SIMPLE 是「点着搭」的:左边发起人、右边结束,中间的节点靠加号一个个插。BPMN 是画 XML 图的。SIMPLE 那棵树在发布这一步被编译成 BPMN,条件也编译成一段 JUEL 表达式——所以你会在流程定义里看到 BPMN XML,那是编译产物,不是你画的原文。
第 3 步:绑第 01 章那张表单
上方是个步骤条(步骤条本身可以点,没有「下一步」按钮)。点「表单设计」:
| 字段 | 填什么 |
|---|---|
| 表单类型 | 在线表单 |
| 在线表单 | 实验室样品登记(第 01 章那张,以你实例里实际的名称为准) |

选「在线表单」的意思是不用把表单再画一遍——直接复用第 01 章 AI 建的那张,字段、校验、控件全都跟着来。
第 4 步:进流程设计,认识那棵树
点步骤条的「流程设计」。画布上初始只有「发起人」和「结束」两块,中间一个加号。

整个设计过程就是不断地点加号、选节点类型、改名字、配属性。
设计器里没有「保存」按钮
找不到不是漏了,是本来就没有。所有改动都落在同一份内存数据上,要保存得回顶部那个「保 存」(第 8 步)。
第 5 步:加第一个审批节点「主管受理」
- 鼠标悬停在「发起人」下方的加号上(弹层是 hover 触发的,鼠标一移开就收);
- 弹层里选「审批人」;
- 点新节点的标题,标题变成输入框,改成
主管受理,点别处让它失焦; - 点节点的主体(不是标题),右侧滑出配置抽屉;
- 「审批人设置」选「指定成员」;
- 「指定用户」选
文档租户管理员; - 先点一下当前页面别处,把还开着的下拉收起来,再点抽屉里的「确 定」。

怎么判断这一步配成功了:抽屉关掉了
点「确 定」之后抽屉关闭才算成功。抽屉没关 = 配置没通过校验(审批人没选上,或者节点显示名还是空的),此时界面上不会有红色错误提示——只有「抽屉还开着」这一个信号。
下拉面板会压住「确 定」按钮
多选下拉选完之后面板是开着的,位置可能正好压在抽屉底部的「确 定」上,点了没反应。先点一下页面空白处收起面板再点确定。
第 6 步:加条件分支,按样品类型分流
- 悬停「主管受理」下方的加号 → 选「条件分支」;
- 点新出现的「条件1」那一块,右侧滑出抽屉;
- 「配置方式」选「条件规则」;
- 条件组第一行:左值下拉选
样品类型; - 中间的比较符是「等于」,默认就是它,不用点;
- 右值填
水质; - 点「确 定」,同样以「抽屉关闭」为成功标志。

左值下拉里只有「必填字段」能选
非必填字段在下拉里是灰的,鼠标移上去会有 tooltip:「表单字段非必填时不能作为流程分支条件」。所以第 01 章那段需求里特意写了「样品类型必须是必填项」——那时候不写,这一步就配不出来。
判定用的是字段的 required 标记,不是它挂了哪些校验规则。
右值要填「库里实际存的值」,不是界面上显示的标签
条件会被编译成 JUEL 表达式,比较的是原始值。如果你的字段是个字典下拉、界面显示「水质」而库里存的是 1,那右值就得填 1,填「水质」永远不命中,而且不会报错——流程会安静地走默认分支。
不确定就去数据查看 ★ 里翻一行真实数据看看那一列存的到底是什么。本轮实测「样品类型」是单选、库里存的就是「水质」两个字,所以右值填 水质。
第 7 步:在命中的那条分支里加「技术负责人复核」
- 悬停「条件1」分支内部的加号 → 选「审批人」;
- 改名
技术负责人复核; - 同第 5 步配:审批人设置
指定成员、指定用户文档租户管理员。
不命中的那条分支(默认分支)什么都不加,空着——空分支会直接往下合流。

改过名字之后,别再按旧名字找节点
节点标题一旦改掉,界面上就没有「审批人」这三个字了。要再打开它的配置,按位置找(第几个节点),或者按当前显示的名字找。
第 8 步:合流之后加一个抄送
悬停合流处(两条分支汇合之后的那个加号)→ 选「抄送」→ 改名 抄送销售 → 「抄送人设置」选 指定成员 → 指定用户选 文档行级权限销售 → 点当前页收起下拉 → 「确 定」。

抄送不需要人点,流程走到那儿自动发一条到被抄送人的「抄送我的」。
第 9 步:保存
点页面顶部的「保 存」。做对了弹提示:
新建成功,可点击【发布】按钮,进行发布模型
第 10 步:回列表发布
保存后自动跳回流程模型列表。在「搜索流程」框里输入 样品检测审批,按回车(这个搜索框没有「搜索」按钮,只认回车),行内点「发布」,弹出的确认框点「确 定」。
做对了弹「发布成功」。服务端要把 SIMPLE 树编译成 BPMN,慢的时候要十几秒,别急着再点一次。

为什么保存和发布是两步
新建态的编辑页里根本没有「发布」按钮——那个按钮的显示条件是「编辑已有模型」。所以平台本来就是两段式:先保存拿到模型,再回列表发布。这不是绕路。
第 11 步:换普通员工发起
退出 docadmin,用 salesman01 / admin123 登录(租户「启凌智搭」)。进 工作流程 → 审批中心 → 发起流程:
- 在「请输入流程名称」框里填
样品检测审批; - 点那张流程卡片,进入发起页。右侧那条时间线是平台预测的——它已经把「主管受理 → 条件分支 → 技术负责人复核 → 抄送」画给你看了;
- 填必填字段(本轮 4 个):
| 字段 | 填什么 |
|---|---|
| 样品名称 | 出厂水样-2026-002 |
| 送检单位 | 城西自来水厂 |
| 送检日期 | 今天 |
| 样品类型 | 水质 ← 必须填这个,正好命中第 6 步那条分支 |
- 点「发 起」。做对了弹「发起流程成功」。

为什么要换一个「没有数据模型权限」的账号来发起
这才是真实场景:填表的人不该有建表、改模型的权限。salesman01 只有 bpm:process-instance:create 与 bpm:task:query,他能发起、能看自己的任务,但看不到数据模型菜单。用超管发起等于什么都没证明。
发起页的表单校验失败,界面上一个字都不弹
发起页的提交逻辑里,校验失败只往浏览器控制台写一条 warning 然后 return——没有 toast、没有红字。所以「没看到『发起流程成功』」就是没发起,别当成网络慢在那儿干等。按 F12 打开控制台能看到具体哪个字段没过。
第 12 步:换回来,逐级审批
退出 salesman01,用 docadmin / admin123 重新登录。进 工作流程 → 审批中心 → 待办任务:
- 在「请输入任务名称」填
主管受理,点「搜索」——本轮实测命中 1 条; - 行内点「办理」。
「办理」跳到的是流程实例详情页
地址栏上带着 taskId,页面是那条实例的详情(表单内容 + 审批时间线),不是一个独立的「任务页」。审批操作按钮在页面底部。
- 点底部那个绿色按钮(默认文案是「通过」);
- 弹层里的意见框填
样品信息齐全,同意进入技术复核; - 点弹层里那个绿色按钮。做对了弹「审批通过成功」。


认按钮要认颜色,不要认文字
审批按钮的显示名可以被节点的按钮配置改掉(改成「同意」「批准」都行),但颜色类名不会变。找不到「通过」两个字时,找那个绿色的主按钮。
- 回待办任务,搜
技术负责人复核——这一步是整章唯一的分流证据:本轮实测命中 1 条。搜不到就说明第 6 步的条件没命中,流程直接走默认分支合流、抄送、结束了,待办里什么都不会有; - 同法审批,意见填
检测结果符合要求,同意,弹「审批通过成功」。

抄送那一步不用人点,流程走到那儿自动发。用 docsales 登录能在 审批中心 → 抄送我的 里看到。
第 13 步:核对状态真的回写了
进 基础设施 → 数据管理 → 数据查看,选中第 01 章那个数据模型,切到「原始数据」模式:
- 「字段」下拉选
id; - 「关键字」填那条记录的 id(本轮实测是
2112051921953529856;不知道 id 就先用「样品名称」搜出厂水样-2026-002); - 点搜索。
本轮实测:表头共 21 个,process_instance_id 在第 13 列、process_status 在第 14 列,值是 2——2 就是审批通过。

别在「展示模式」的列表页找这两列,永远找不到
process_status 与 process_instance_id 是系统列,不在表单的字段映射里。所以表单运行时那个「展示模式」的列表页永远不显示它们——不是权限问题,也不是没回写。只有数据查看的「原始数据」模式才看得到。
同理,教程和视频里都只会说「状态码是 2」,不会说「列表页显示审批通过」——界面上根本没有那句话。
视角对照
| 视角 | 表现 |
|---|---|
超管 admin | 什么都能做,但不要用它演审批:它有全部权限,证明不了「按角色分流」 |
租户管理员 docadmin | 本章的建模者与两级审批人。有 bpm:model:* 与 infra:data-model:update |
普通员工 salesman01 | 只能发起与看自己的任务;没有数据模型菜单,看不到第 13 步那张原始数据表 |
行级权限用户 docsales | 本章的抄送人,在「抄送我的」里收到一条 |
进阶
- 流程模型:SIMPLE 与 BPMN 两种设计器、版本、部署与挂起;
- 待办任务 / 已办任务 / 抄送我的:审批中心的三个入口分别看什么;
- 流程表达式:JUEL 表达式能写什么、内置变量有哪些;
- 表单接入审批流:同一件事的另一条走法(场景教程版);
- 第 02 章:手动搭一条会自己醒过来的 AI 流程:另一种「自动化」——不靠人审批,靠表单事件触发 AI 流程。两章可以叠在同一张表上。
常见问题
Q:编辑页里找不到「发布」按钮? A:新建态就是没有。先点「保 存」,回列表再点行内的「发布」。这是平台本来的两段式。
Q:条件分支的左值下拉里,我要的字段是灰的? A:那个字段不是必填。回表单设计 ★ 把它改成必填、重新发布,再回来配条件。这也是第 01 章那段需求里预先写死「样品类型必须必填」的原因。
Q:审批走完了,但流程没走「技术负责人复核」那一支? A:条件没命中。九成是右值填的是界面标签、而库里存的是另一个值(见第 6 步的 danger)。去数据查看的原始数据模式翻一行真实数据,看那一列实际存的是什么,回来改右值、重新发布。
Q:待办里搜不到任务? A:按顺序排:① 你登录的账号是不是那个节点指定的审批人;② 任务名称搜的是不是节点名(本轮是 主管受理 / 技术负责人复核);③ 上一级审批通过了没有——没通过的话下一级任务还没生成;④ 流程是不是真的部署了(模型列表里状态得是「已部署」)。
Q:点了「确 定」抽屉不关,也没有报错? A:配置没通过校验。最常见是审批人没真选上(下拉面板被点空白处关掉之前,勾选没生效)。把抽屉里的项重新选一遍,注意选完之后下拉面板还开着,先点页面别处收起它再点确定。
Q:提示只闪了一下没看清? A:Element Plus 的消息提示只活 3 秒。想核对文案就去操作日志 里查那条请求,或者按 F12 看网络面板的返回值。
Q:想改已经部署的流程模型? A:回模型列表点「设计」改,改完再「发布」一次,会生成新版本。已经在跑的实例继续按旧版本走完,新发起的才用新版本。
Q:删掉流程模型能清干净吗? A:不能全清。删除模型只会删模型行、把流程定义置为「挂起」,act_re_procdef 里的部署记录删不掉(整个 BPM 模块没有 deleteDeployment 调用)。挂起的定义不能发起、不进「发起流程」列表,无害。要清实例和任务得先调「清理流程数据」再删模型——顺序反了会留下孤儿实例。
