Skip to content

把刚才那张表接上审批流 ​

一句话:给第 01 章那张表补两列回写状态,用 SIMPLE 设计器点着搭一棵审批树(受理 → 按样品类型分流 → 复核 → 抄送),部署,换一个没有数据模型权限的普通员工去发起,再换回来逐级审批。走完以后,那条业务记录上的 process_status 变成了 2。这一章是首页视频的第 03 章。

演示环境里已经有成品

用 admin / admin123 登录,工作流程 → 流程管理 → 流程模型 里的 样品检测审批(流程标识 doc_sample_approval,状态「已部署」)就是这一章的成品。点行内「设计」能看到那棵 SIMPLE 树;审批中心 → 流程实例 里能看到那条走完的实例。

功能在哪 ​

页面菜单路径这一章用它干什么
数据模型 ★基础设施 → 数据管理 → 数据模型给业务表补两列流程回写字段
流程模型工作流程 → 流程管理 → 流程模型新建模型、绑表单、SIMPLE 设计器搭树、发布
发起流程工作流程 → 审批中心 → 发起流程用普通员工的身份发起一条
待办任务工作流程 → 审批中心 → 待办任务逐级审批
数据查看 ★基础设施 → 数据管理 → 数据查看核对 process_status 真的回写了

前置条件 ​

  1. 必须先做完第 01 章:这一章的流程表单直接绑它,不重新画一遍;
  2. 两个账号:一个有 bpm:model:create/update/deploy 与 infra:data-model:update 权限的(演示环境用租户管理员 docadmin),一个只有 bpm:process-instance:create 与 bpm:task:query 的普通员工(演示环境用 salesman01);
  3. 第 01 章那张表里,「样品类型」必须是必填字段——这是分支条件能配的前提,第 01 章那段需求里已经写死了这一条。

这一章要搭的审批树 ​

常用操作 ​

第 1 步:确认这张表有没有流程回写的两列 ​

流程要往业务表写「这条记录挂着哪个实例、审批到哪一步了」,靠的是两列:

列含义
process_instance_id流程实例编号
process_status流程状态码(2 就是审批通过)

去 基础设施 → 数据管理 → 数据模型,按表名搜第 01 章那张表,看列清单里有没有这两列。

  • 已经有了 → 跳过这一步。本轮实测就是这种情况:AI 建表时已经带上了,平台检测到 flowReady=true 就不再动它。
  • 没有 → 行内点「设计」,点「快速添加」,在下拉里选「流程字段」,然后点「保 存」。做对了弹含「成功」的提示。

「保存」会真的执行 ALTER TABLE

这不是预览。而且没有变化就别去碰它——平台检测到两列已在时会跳过,但如果你手动改了别的字段再保存,那也会一并落库。

第 2 步:新建流程模型 ​

进 工作流程 → 流程管理 → 流程模型,点「新建模型」,填基本信息:

字段填什么
流程标识doc_sample_approval
流程名称样品检测审批
流程分类日常管理
流程类型SIMPLE 设计器

新建模型:流程类型选「SIMPLE 设计器」——仿钉钉那种点着搭的(租户管理员视角)

SIMPLE 设计器和 BPMN 有什么区别

SIMPLE 是「点着搭」的:左边发起人、右边结束,中间的节点靠加号一个个插。BPMN 是画 XML 图的。SIMPLE 那棵树在发布这一步被编译成 BPMN,条件也编译成一段 JUEL 表达式——所以你会在流程定义里看到 BPMN XML,那是编译产物,不是你画的原文。

第 3 步:绑第 01 章那张表单 ​

上方是个步骤条(步骤条本身可以点,没有「下一步」按钮)。点「表单设计」:

字段填什么
表单类型在线表单
在线表单实验室样品登记(第 01 章那张,以你实例里实际的名称为准)

表单设计:表单类型选「在线表单」,直接绑第 01 章那张(租户管理员视角)

选「在线表单」的意思是不用把表单再画一遍——直接复用第 01 章 AI 建的那张,字段、校验、控件全都跟着来。

第 4 步:进流程设计,认识那棵树 ​

点步骤条的「流程设计」。画布上初始只有「发起人」和「结束」两块,中间一个加号。

流程设计:左边发起人、右边结束,中间那个加号就是全部操作(租户管理员视角)

整个设计过程就是不断地点加号、选节点类型、改名字、配属性。

设计器里没有「保存」按钮

找不到不是漏了,是本来就没有。所有改动都落在同一份内存数据上,要保存得回顶部那个「保 存」(第 8 步)。

第 5 步:加第一个审批节点「主管受理」 ​

  1. 鼠标悬停在「发起人」下方的加号上(弹层是 hover 触发的,鼠标一移开就收);
  2. 弹层里选「审批人」;
  3. 点新节点的标题,标题变成输入框,改成 主管受理,点别处让它失焦;
  4. 点节点的主体(不是标题),右侧滑出配置抽屉;
  5. 「审批人设置」选「指定成员」;
  6. 「指定用户」选 文档租户管理员;
  7. 先点一下当前页面别处,把还开着的下拉收起来,再点抽屉里的「确 定」。

「主管受理」节点:审批人设置=指定成员,指定用户=文档租户管理员(租户管理员视角)

怎么判断这一步配成功了:抽屉关掉了

点「确 定」之后抽屉关闭才算成功。抽屉没关 = 配置没通过校验(审批人没选上,或者节点显示名还是空的),此时界面上不会有红色错误提示——只有「抽屉还开着」这一个信号。

下拉面板会压住「确 定」按钮

多选下拉选完之后面板是开着的,位置可能正好压在抽屉底部的「确 定」上,点了没反应。先点一下页面空白处收起面板再点确定。

第 6 步:加条件分支,按样品类型分流 ​

  1. 悬停「主管受理」下方的加号 → 选「条件分支」;
  2. 点新出现的「条件1」那一块,右侧滑出抽屉;
  3. 「配置方式」选「条件规则」;
  4. 条件组第一行:左值下拉选 样品类型;
  5. 中间的比较符是「等于」,默认就是它,不用点;
  6. 右值填 水质;
  7. 点「确 定」,同样以「抽屉关闭」为成功标志。

条件规则:左值=样品类型、比较符=等于、右值=水质(租户管理员视角)

左值下拉里只有「必填字段」能选

非必填字段在下拉里是灰的,鼠标移上去会有 tooltip:「表单字段非必填时不能作为流程分支条件」。所以第 01 章那段需求里特意写了「样品类型必须是必填项」——那时候不写,这一步就配不出来。

判定用的是字段的 required 标记,不是它挂了哪些校验规则。

右值要填「库里实际存的值」,不是界面上显示的标签

条件会被编译成 JUEL 表达式,比较的是原始值。如果你的字段是个字典下拉、界面显示「水质」而库里存的是 1,那右值就得填 1,填「水质」永远不命中,而且不会报错——流程会安静地走默认分支。

不确定就去数据查看 ★ 里翻一行真实数据看看那一列存的到底是什么。本轮实测「样品类型」是单选、库里存的就是「水质」两个字,所以右值填 水质。

第 7 步:在命中的那条分支里加「技术负责人复核」 ​

  1. 悬停「条件1」分支内部的加号 → 选「审批人」;
  2. 改名 技术负责人复核;
  3. 同第 5 步配:审批人设置 指定成员、指定用户 文档租户管理员。

不命中的那条分支(默认分支)什么都不加,空着——空分支会直接往下合流。

条件1 分支里是「技术负责人复核」;不命中的那条空着,直接合流(租户管理员视角)

改过名字之后,别再按旧名字找节点

节点标题一旦改掉,界面上就没有「审批人」这三个字了。要再打开它的配置,按位置找(第几个节点),或者按当前显示的名字找。

第 8 步:合流之后加一个抄送 ​

悬停合流处(两条分支汇合之后的那个加号)→ 选「抄送」→ 改名 抄送销售 → 「抄送人设置」选 指定成员 → 指定用户选 文档行级权限销售 → 点当前页收起下拉 → 「确 定」。

整棵树搭完:发起人 → 主管受理 → 条件分支(技术负责人复核)→ 抄送销售 → 结束(租户管理员视角)

抄送不需要人点,流程走到那儿自动发一条到被抄送人的「抄送我的」。

第 9 步:保存 ​

点页面顶部的「保 存」。做对了弹提示:

新建成功,可点击【发布】按钮,进行发布模型

第 10 步:回列表发布 ​

保存后自动跳回流程模型列表。在「搜索流程」框里输入 样品检测审批,按回车(这个搜索框没有「搜索」按钮,只认回车),行内点「发布」,弹出的确认框点「确 定」。

做对了弹「发布成功」。服务端要把 SIMPLE 树编译成 BPMN,慢的时候要十几秒,别急着再点一次。

发布成功:SIMPLE 树在这一步被编译成 BPMN,条件编译成 JUEL 表达式(租户管理员视角)

为什么保存和发布是两步

新建态的编辑页里根本没有「发布」按钮——那个按钮的显示条件是「编辑已有模型」。所以平台本来就是两段式:先保存拿到模型,再回列表发布。这不是绕路。

第 11 步:换普通员工发起 ​

退出 docadmin,用 salesman01 / admin123 登录(租户「启凌智搭」)。进 工作流程 → 审批中心 → 发起流程:

  1. 在「请输入流程名称」框里填 样品检测审批;
  2. 点那张流程卡片,进入发起页。右侧那条时间线是平台预测的——它已经把「主管受理 → 条件分支 → 技术负责人复核 → 抄送」画给你看了;
  3. 填必填字段(本轮 4 个):
字段填什么
样品名称出厂水样-2026-002
送检单位城西自来水厂
送检日期今天
样品类型水质 ← 必须填这个,正好命中第 6 步那条分支
  1. 点「发 起」。做对了弹「发起流程成功」。

发起页:普通员工视角,必填字段已填,样品类型=水质(普通员工视角)

为什么要换一个「没有数据模型权限」的账号来发起

这才是真实场景:填表的人不该有建表、改模型的权限。salesman01 只有 bpm:process-instance:create 与 bpm:task:query,他能发起、能看自己的任务,但看不到数据模型菜单。用超管发起等于什么都没证明。

发起页的表单校验失败,界面上一个字都不弹

发起页的提交逻辑里,校验失败只往浏览器控制台写一条 warning 然后 return——没有 toast、没有红字。所以「没看到『发起流程成功』」就是没发起,别当成网络慢在那儿干等。按 F12 打开控制台能看到具体哪个字段没过。

第 12 步:换回来,逐级审批 ​

退出 salesman01,用 docadmin / admin123 重新登录。进 工作流程 → 审批中心 → 待办任务:

  1. 在「请输入任务名称」填 主管受理,点「搜索」——本轮实测命中 1 条;
  2. 行内点「办理」。

「办理」跳到的是流程实例详情页

地址栏上带着 taskId,页面是那条实例的详情(表单内容 + 审批时间线),不是一个独立的「任务页」。审批操作按钮在页面底部。

  1. 点底部那个绿色按钮(默认文案是「通过」);
  2. 弹层里的意见框填 样品信息齐全,同意进入技术复核;
  3. 点弹层里那个绿色按钮。做对了弹「审批通过成功」。

待办任务里躺着一条「主管受理」(租户管理员视角)

审批意见弹层:填意见 → 点绿色按钮通过(租户管理员视角)

认按钮要认颜色,不要认文字

审批按钮的显示名可以被节点的按钮配置改掉(改成「同意」「批准」都行),但颜色类名不会变。找不到「通过」两个字时,找那个绿色的主按钮。

  1. 回待办任务,搜 技术负责人复核——这一步是整章唯一的分流证据:本轮实测命中 1 条。搜不到就说明第 6 步的条件没命中,流程直接走默认分支合流、抄送、结束了,待办里什么都不会有;
  2. 同法审批,意见填 检测结果符合要求,同意,弹「审批通过成功」。

条件命中了:待办里换成了「技术负责人复核」(租户管理员视角)

抄送那一步不用人点,流程走到那儿自动发。用 docsales 登录能在 审批中心 → 抄送我的 里看到。

第 13 步:核对状态真的回写了 ​

进 基础设施 → 数据管理 → 数据查看,选中第 01 章那个数据模型,切到「原始数据」模式:

  1. 「字段」下拉选 id;
  2. 「关键字」填那条记录的 id(本轮实测是 2112051921953529856;不知道 id 就先用「样品名称」搜 出厂水样-2026-002);
  3. 点搜索。

本轮实测:表头共 21 个,process_instance_id 在第 13 列、process_status 在第 14 列,值是 2——2 就是审批通过。

原始数据视图:process_status = 2,审批状态真的回写到了业务表(租户管理员视角)

别在「展示模式」的列表页找这两列,永远找不到

process_status 与 process_instance_id 是系统列,不在表单的字段映射里。所以表单运行时那个「展示模式」的列表页永远不显示它们——不是权限问题,也不是没回写。只有数据查看的「原始数据」模式才看得到。

同理,教程和视频里都只会说「状态码是 2」,不会说「列表页显示审批通过」——界面上根本没有那句话。

视角对照 ​

视角表现
超管 admin什么都能做,但不要用它演审批:它有全部权限,证明不了「按角色分流」
租户管理员 docadmin本章的建模者与两级审批人。有 bpm:model:* 与 infra:data-model:update
普通员工 salesman01只能发起与看自己的任务;没有数据模型菜单,看不到第 13 步那张原始数据表
行级权限用户 docsales本章的抄送人,在「抄送我的」里收到一条

进阶 ​

常见问题 ​

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 调用)。挂起的定义不能发起、不进「发起流程」列表,无害。要清实例和任务得先调「清理流程数据」再删模型——顺序反了会留下孤儿实例。

相关页面 ​