主题
流程设计 PRD
文档信息
| 项目 | 内容 |
|---|---|
| 产品名称 | PMForge - 流程设计 |
| 文档版本 | v2.0 |
| 创建日期 | 2026-09-19 |
| 最后更新 | 2026-09-24 |
| 文档状态 | 评审中 |
| 优先级 | P0 |
一、功能概述
1.1 功能定位
流程设计模块是 PMForge 工作流系统的"流程工厂"——企业里所有审批流程都从这里诞生。如果把工作流比作一条公路网,那流程设计就是规划并建造这些公路的地方。
本模块提供两种互补的设计工具:
- BPMN 设计器:面向专业人员的"标准工具箱",支持 BPMN 2.0 国际标准,适合构建包含并行网关、会签、子流程等复杂逻辑的企业级流程
- 仿钉钉设计器:面向业务人员的"积木拼装台",通过拖拽节点、配置条件即可搭建审批流程,10 分钟内完成一个基础审批流
两种设计器产出的流程最终都会被 Flowable 引擎执行,用户无需关心底层技术差异。
1.2 目标用户
| 用户类型 | 使用场景 | 核心诉求 |
|---|---|---|
| 流程管理员 | 日常设计和维护公司审批流程 | 设计工具好用、流程发布快、版本可控 |
| 业务管理员 | 偶尔需要配置简单的部门审批流程 | 不需要技术背景也能搭建流程 |
| 系统管理员 | 导入外部标准流程文件、管理全局流程资产 | 兼容行业标准、流程资产可迁移 |
| 普通用户(发起端) | 在前台选择流程并填写表单发起申请 | 找到流程快、表单好填、提交顺畅 |
1.3 业务价值
- 降低流程配置门槛:仿钉钉设计器让非技术人员也能独立完成 80% 的审批流程配置,减少对开发团队的依赖
- 标准化流程资产:基于 BPMN 2.0 国际标准,流程定义可在不同系统间迁移,避免厂商锁定
- 版本安全可控:已发布版本不可篡改,修改自动生成新版本,出问题可一键回滚到历史版本
- 动态表单减少开发:拖拽式表单设计器覆盖常见业务字段类型,新增审批表单无需写代码
- 双设计器互补:简单流程用仿钉钉快速搭建,复杂流程用 BPMN 精细设计,各取所需
1.4 功能范围
| 功能分类 | 功能项 | 说明 |
|---|---|---|
| BPMN 设计器 | 流程图绘制 | 拖拽节点、连线、配置属性 |
| BPMN 设计器 | 导入/导出 | 支持标准 BPMN XML 文件导入导出 |
| BPMN 设计器 | 流程校验 | 发布前自动检查流程完整性 |
| 仿钉钉设计器 | 可视化设计 | 拖拽节点搭建审批链路 |
| 仿钉钉设计器 | 审批人配置 | 6 种审批人类型 + 3 种审批方式 |
| 仿钉钉设计器 | 条件分支 | 基于表单字段/发起人属性走不同路径 |
| 流程模型管理 | 模型 CRUD | 创建、编辑、复制、删除流程模型 |
| 流程模型管理 | 版本管理 | 发布、版本对比、版本回滚 |
| 流程模型管理 | 分类管理 | 树形分类组织流程模型 |
| 表单管理 | 表单设计器 | 拖拽组件构建动态表单 |
| 表单管理 | 节点字段权限 | 按流程节点配置字段的可见/可编辑/隐藏 |
| 流程发起(用户端) | 分类浏览 | 按分类查找可发起的流程 |
| 流程发起(用户端) | 表单填写 | 填写动态表单并提交申请 |
| 流程发起(用户端) | 流程预览 | 提交前预览审批走向和审批人 |
二、用户场景
2.1 用户角色
| 角色 | 描述 | 核心诉求 |
|---|---|---|
| 流程设计员 | 负责设计和维护流程的管理员 | 设计工具高效、校验及时、发布顺畅 |
| 业务管理员 | 偶尔配置简单审批流程的部门管理者 | 零代码搭建、所见即所得 |
| 普通用户 | 在前台发起流程申请的员工 | 快速找到流程、表单好填、提交有反馈 |
2.2 使用场景
场景1:HR 用仿钉钉设计器创建请假流程
- 用户:HR 部门流程管理员小王
- 场景:公司上线新系统,小王需要把现有的请假审批搬到线上 → 进入「流程设计 > 流程模型」→ 点击「创建模型」→ 填写名称"请假申请流程"、选择分类"人事管理"→ 选择「仿钉钉设计器」→ 界面默认显示"发起人"节点 → 点击"+"添加"审批人"节点,设置为"直属领导",审批方式选"或签" → 添加"条件分支",条件设为"请假天数 > 3 天" → 在条件分支下添加"部门经理审批"节点 → 添加"抄送人"节点,设置为"HR 部门" → 绑定已创建好的请假表单 → 点击「发布」→ 流程立即生效,员工可在前台发起请假申请
- 期望:10 分钟内完成流程搭建并发布,不需要写任何代码
场景2:IT 人员导入外部 BPMN 标准流程
- 用户:IT 运维人员小李
- 场景:咨询公司交付了一套标准 BPMN 2.0 采购流程文件 → 小李进入「流程模型」→ 创建模型选择「BPMN 设计器」→ 点击工具栏「导入」按钮 → 选择本地 .bpmn 文件 → 系统自动解析并在画布渲染流程图 → 检查各节点配置 → 点击「流程校验」→ 系统提示"校验通过" → 保存并发布
- 期望:标准文件导入后无需大量修改即可使用
场景3:流程管理员设计复杂采购审批流程
- 用户:流程管理员小张
- 场景:采购部需要一个含并行会签和条件分支的复杂流程 → 小张选择「BPMN 设计器」→ 绘制流程图:开始事件 → 部门初审 → 并行网关(分两支)→ 分支1:财务经理审批 → 分支2:会计审核 → 两支汇聚 → 排他网关(金额判断)→ 金额 > 10 万走总经理审批 → 金额 ≤ 10 万直接结束 → 配置财务会签节点为"并行多实例,所有实例完成" → 绑定采购申请表单,配置各节点字段权限 → 保存并校验通过 → 发布
- 期望:BPMN 设计器支持完整的建模能力,复杂流程一次配置成功
场景4:普通员工发起报销流程
- 用户:普通员工小陈
- 场景:小陈出差回来需要报销 → 登录前台进入「我的流程 > 发起流程」→ 左侧看到流程分类列表 → 点击"财务管理" → 右侧显示"差旅报销"流程 → 点击「发起申请」→ 系统渲染报销表单 → 填写出差地点、时间、交通费、住宿费 → 上传发票照片 → 系统自动计算报销总额 → 点击「提交」→ 弹出流程预览:"直属领导审批 → 财务审核 → 出纳付款" → 确认提交 → 流程进入审批,小陈可在"我发起的"中查看进度
- 期望:表单清晰好填,提交前能预览审批路径,提交后能跟踪进度
场景5:流程管理员升级流程版本
- 用户:流程管理员小王
- 场景:请假流程已发布运行,现在需要新增一个"HR 备案"节点 → 小王在模型列表找到"请假申请流程" → 点击「编辑」进入设计器 → 在末尾添加"抄送人"节点设为"HR 部门" → 点击「发布」→ 系统自动生成版本 2 → 正在进行中的流程仍按版本 1 走完 → 新发起的流程走版本 2 → 小王在「版本历史」中可查看版本 1 和版本 2 的差异对比
- 期望:升级不影响进行中的流程,新旧版本并行运行
场景6:表单管理员创建动态表单
- 用户:表单管理员小刘
- 场景:新入职的小刘需要为"物品领用申请"创建表单 → 进入「表单管理」→ 点击「创建表单」→ 进入表单设计器 → 从左侧组件库拖拽"单选框"(物品类别)、"数字输入框"(数量)、"多行输入框"(用途说明)、"文件上传"(附件)→ 配置每个字段的必填规则和校验规则 → 点击「预览」查看效果 → 保存 → 在流程模型中绑定该表单 → 配置各审批节点的字段权限(发起人可编辑全部,审批人只读数量,行政可编辑发放数量)
- 期望:拖拽式操作,5 分钟完成表单创建
场景7:流程校验发现设计错误
- 用户:流程管理员小张
- 场景:小张设计完一个流程后点击「校验」→ 系统提示 3 个错误:①"用户任务'财务审核'未配置审批人" ②"条件分支缺少条件表达式" ③"存在死循环路径:节点 A → 节点 B → 节点 A" → 小张点击第一个错误项,画布自动定位到"财务审核"节点 → 配置审批人 → 逐个修复所有错误 → 再次校验通过 → 发布
- 期望:校验结果清晰,点击错误可直接定位到问题节点
2.3 用户故事
| 编号 | 用户故事 | 验收标准 | 优先级 |
|---|---|---|---|
| US-01 | 作为流程管理员,我希望通过仿钉钉设计器快速搭建审批流程 | ① 支持拖拽添加审批人/抄送人/条件分支节点 ② 6 种审批人类型可选 ③ 从创建到发布 ≤ 10 分钟 | P0 |
| US-02 | 作为流程管理员,我希望通过 BPMN 设计器设计复杂流程 | ① 支持用户任务/网关/子流程等全部 BPMN 节点 ② 支持导入导出标准 XML ③ 属性面板可配置会签/条件表达式 | P0 |
| US-03 | 作为流程管理员,我希望流程发布前自动校验完整性 | ① 校验开始/结束事件是否完整 ② 校验审批人是否配置 ③ 校验条件分支是否有死循环 ④ 错误可点击定位 | P0 |
| US-04 | 作为流程管理员,我希望管理流程版本并安全回滚 | ① 每次发布版本号自动递增 ② 已发布版本不可修改 ③ 支持版本对比 ④ 回滚生成新版本 | P1 |
| US-05 | 作为表单管理员,我希望拖拽创建动态表单 | ① 支持 15+ 种组件 ② 拖拽排序 ③ 配置校验规则 ④ 预览效果 | P0 |
| US-06 | 作为普通用户,我希望在前台快速找到流程并提交申请 | ① 按分类浏览 ② 关键字搜索 ③ 表单渲染 ≤ 0.5 秒 ④ 提交前预览审批路径 | P0 |
| US-07 | 作为流程管理员,我希望按节点配置表单字段权限 | ① 每个节点独立配置 ② 支持可见/可编辑/隐藏/必填 ③ 隐藏字段数据保留但不展示 | P1 |
三、功能需求
3.1 BPMN 设计器
3.1.1 功能描述
基于 bpmn-js 库实现的专业 BPMN 2.0 标准流程设计器。左侧为节点工具栏,中间为无限画布,右侧为属性面板。支持完整的流程建模能力,包括节点创建、连线配置、属性设置、流程导入导出和校验。适合需要并行网关、多实例会签、子流程等高级特性的复杂流程设计。
3.1.2 操作流程
创建新流程:
1. 进入流程模型列表页,点击「创建模型」
2. 填写模型基本信息(名称、标识、分类、描述)
3. 选择设计器类型为「BPMN 设计器」
4. 系统打开 BPMN 设计器界面
5. 从左侧工具栏拖拽节点到中间画布区域:
a. 开始事件(流程起点,有且仅有一个)
b. 用户任务(审批节点,需配置审批人和任务名称)
c. 排他网关(条件分支,走且只走一条路径)
d. 并行网关(并行分支,所有分支同时执行)
e. 结束事件(流程终点,至少一个)
6. 通过节点连接点创建顺序流连线
7. 点击节点,在右侧属性面板配置详细信息
8. 点击「保存」保存流程设计
9. 点击「发布」发布流程导入已有流程:
1. 在设计器工具栏点击「导入」按钮
2. 选择本地 BPMN XML 文件(.bpmn 或 .xml 格式)
3. 系统解析文件并在画布渲染流程图
4. 检查并调整节点配置
5. 保存并发布流程校验:
1. 完成流程设计后,点击「校验」按钮
2. 系统检查流程完整性:
a. 是否有且仅有一个开始事件
b. 是否有至少一个结束事件
c. 所有节点是否都有连线连接(无孤立节点)
d. 用户任务是否配置了审批人
e. 条件分支是否配置了条件表达式
f. 是否存在死循环路径
3. 校验通过:显示绿色"校验通过"提示
4. 校验失败:红色列出所有错误项,点击错误项画布自动定位到问题节点3.1.3 界面线框图

3.1.4 业务规则
| 规则编号 | 规则描述 | 为什么这样设计 |
|---|---|---|
| R-01 | 支持的节点类型:事件类(开始/结束/中间事件)、任务类(用户任务/服务任务/脚本任务)、网关类(排他/并行/包含/事件网关)、子流程、泳道 | 覆盖 BPMN 2.0 标准核心元素,满足企业级复杂流程建模需求 |
| R-02 | 用户任务必须配置任务名称和审批人设置 | 没有审批人的任务节点无法执行,发布前校验会拦截 |
| R-03 | 排他网关的每个出口分支必须配置条件表达式 | 排他网关需要根据条件选择路径,无条件会导致流程无法流转 |
| R-04 | 流程标识(Key)全局唯一,格式:小写字母开头,只含字母/数字/下划线,3~50 字符 | 标识是流程在系统中的"身份证号",唯一性保证数据不冲突 |
| R-05 | 流程标识创建后不可修改 | 已发布的流程实例通过标识关联定义,修改标识会导致关联断裂 |
| R-06 | 多实例任务需配置完成条件:所有实例完成 / 任意实例完成 / 达到指定数量 | 会签场景下需要明确"几个人通过才算通过"的规则 |
| R-07 | 单个流程最大节点数 ≤ 100 个 | 超过 100 节点的流程维护成本极高,建议拆分为子流程 |
3.1.5 接口列表
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 保存 BPMN 流程设计 | POST | /admin-api/bpmn/designer/save | 保存流程设计 XML |
| 获取流程设计数据 | GET | /admin-api/bpmn/designer/ | 获取 BPMN XML 和模型信息 |
| 导入 BPMN 文件 | POST | /admin-api/bpmn/designer/import | 上传并解析 BPMN XML 文件 |
| 导出 BPMN 文件 | GET | /admin-api/bpmn/designer/{modelId}/export | 下载 BPMN XML 文件 |
| 流程校验 | POST | /admin-api/bpmn/designer/{modelId}/validate | 校验流程完整性,返回错误列表 |
| 获取节点属性 | GET | /admin-api/bpmn/designer/{modelId}/node/ | 获取单个节点的配置属性 |
| 保存节点属性 | PUT | /admin-api/bpmn/designer/{modelId}/node/ | 保存单个节点的配置属性 |
3.2 仿钉钉设计器
3.2.1 功能描述
提供类似钉钉/飞书的可视化拖拽式流程设计器。界面从上到下纵向排列节点,每个节点之间通过"+"按钮添加新节点。节点类型精简为 4 种:发起人、审批人、抄送人、条件分支。通过"选择 > 配置"两步操作即可完成流程搭建,让没有技术背景的业务管理员也能独立配置审批流程。
3.2.2 操作流程
创建审批流程:
1. 在流程模型列表点击「创建模型」,选择「仿钉钉设计器」
2. 系统打开可视化设计界面,默认显示"发起人"节点
3. 点击「发起人」节点,配置发起人范围(指定部门/角色/全员)
4. 点击节点下方的「+」按钮,弹出节点选择菜单
5. 选择「审批人」节点,配置审批人类型和审批方式
6. 继续添加后续节点,构建完整流程链路
7. 点击「添加条件分支」创建条件分支(自动生成两个并列分支)
8. 为每个条件分支配置触发条件和分支内的审批节点
9. 配置完成后点击「预览」查看流程图
10. 点击「发布」按钮发布流程配置审批人:
1. 点击「审批人」节点,右侧弹出配置面板
2. 选择审批人类型(6 种):
a. 指定人员:直接选择具体人员(最多 20 人)
b. 指定角色:选择角色,该角色的所有成员审批
c. 部门负责人:自动获取发起人的部门负责人
d. 多级部门负责人:逐级审批到第 N 级部门负责人(1~10 级)
e. 表单字段:从表单中的"人员选择"字段读取审批人
f. 发起人自选:发起流程时由发起人手动选择审批人
3. 选择审批方式(3 种):
a. 或签:任意一人审批即可通过
b. 会签:所有人都审批通过才通过
c. 依次审批:按顺序逐一审批
4. 配置审批人为空时的处理方式:
a. 自动转交管理员
b. 自动通过
c. 自动拒绝配置条件分支:
1. 点击「添加条件分支」按钮
2. 系统自动创建两个条件分支(默认分支 + 条件分支)
3. 点击条件分支,配置触发条件:
a. 选择条件类型:表单字段 / 发起人属性(部门、职级等)
b. 配置条件表达式:字段 操作符 值(如"请假天数 > 3")
c. 支持多条件组合(且/或)
4. 为每个条件分支添加后续审批节点
5. 必须有一个默认分支(不满足任何条件时走此分支)
6. 条件优先级从上到下,先匹配的先执行3.2.3 界面线框图

3.2.4 业务规则
| 规则编号 | 规则描述 | 为什么这样设计 |
|---|---|---|
| R-01 | 发起人节点有且仅有一个,必须作为流程起点 | 流程必须有明确的发起入口 |
| R-02 | 条件分支最多支持 10 个并列条件 | 过多条件分支会导致维护困难,建议拆分流程 |
| R-03 | 条件分支必须有一个默认分支(兜底) | 防止所有条件都不满足时流程"无路可走" |
| R-04 | 指定人员最多可选择 20 人 | 超过 20 人的审批场景应使用角色或部门方式 |
| R-05 | 多级部门负责人支持 1~10 级 | 覆盖绝大多数企业的组织架构层级 |
| R-06 | 表单字段类型的审批人要求表单中有"人员选择"组件 | 审批人来源必须可解析到具体用户 |
| R-07 | 审批人为空时的处理方式必须在设计时配置 | 运行时审批人为空是常见异常,需提前定义兜底策略 |
| R-08 | 超时审批支持多级处理(如 24 小时提醒 → 48 小时自动转交) | 分级处理比单一动作更灵活,给审批人缓冲时间 |
| R-09 | 条件可基于表单字段值或发起人属性(部门、职级等) | 覆盖"金额大小走不同审批"和"不同部门走不同领导"两大常见场景 |
3.2.5 仿钉钉设计器 JSON 结构
仿钉钉设计器的流程数据以 JSON 格式存储在 bpm_model.model_json 字段中,结构如下:
json
{
"nodes": [
{
"id": "node_start",
"type": "start",
"name": "发起人",
"config": {
"range": "all"
}
},
{
"id": "node_approver_1",
"type": "approver",
"name": "直属领导审批",
"config": {
"approverType": "leader",
"approvalMethod": "or",
"timeout": 24,
"timeoutAction": "remind",
"emptyAction": "autoTransfer"
}
},
{
"id": "node_condition_1",
"type": "condition",
"name": "请假天数判断",
"config": {
"conditions": [
{
"id": "branch_1",
"name": "超过3天",
"expression": "leaveDays > 3",
"isDefault": false,
"nodes": [
{
"id": "node_approver_2",
"type": "approver",
"name": "部门经理审批",
"config": {
"approverType": "multiLevelLeader",
"leaderLevel": 2,
"approvalMethod": "or"
}
}
]
},
{
"id": "branch_default",
"name": "3天以内",
"expression": "",
"isDefault": true,
"nodes": []
}
]
}
},
{
"id": "node_cc_1",
"type": "cc",
"name": "HR备案",
"config": {
"ccType": "role",
"ccRoles": ["HR"]
}
},
{
"id": "node_end",
"type": "end",
"name": "结束"
}
]
}节点类型说明:
| type 值 | 节点名称 | config 核心字段 |
|---|---|---|
| start | 发起人 | range: all / dept / role / user |
| approver | 审批人 | approverType, approvalMethod, timeout, timeoutAction, emptyAction |
| condition | 条件分支 | conditions 数组(含 expression, isDefault, nodes) |
| cc | 抄送人 | ccType, ccRoles / ccUsers / ccDepts |
| end | 结束 | 无配置 |
审批人类型(approverType)对照:
| 值 | 类型 | 补充字段 |
|---|---|---|
| user | 指定人员 | ccUsers: [userId1, userId2] |
| role | 指定角色 | ccRoles: [roleKey1, roleKey2] |
| leader | 部门负责人 | leaderLevel: 1 |
| multiLevelLeader | 多级部门负责人 | leaderLevel: 1~10 |
| formField | 表单字段 | formFieldKey: "field_xxx" |
| initiatorSelect | 发起人自选 | 发起时弹出人员选择框 |
审批方式(approvalMethod)对照:
| 值 | 方式 | 说明 |
|---|---|---|
| or | 或签 | 任一人通过即可 |
| and | 会签 | 所有人通过才算通过 |
| sequential | 依次审批 | 按顺序逐一审批 |
3.2.6 接口列表
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 保存仿钉钉流程设计 | POST | /admin-api/bpm/visual-designer/save | 保存 JSON 格式流程设计 |
| 获取仿钉钉流程设计 | GET | /admin-api/bpm/visual-designer/ | 获取 JSON 设计数据 |
| 预览流程图 | POST | /admin-api/bpm/visual-designer/{modelId}/preview | 生成流程图预览 |
| 校验流程设计 | POST | /admin-api/bpm/visual-designer/{modelId}/validate | 校验完整性 |
| 获取可用审批人类型 | GET | /admin-api/bpm/visual-designer/approver-types | 获取系统支持的审批人类型列表 |
| 转换设计器类型 | POST | /admin-api/bpm/visual-designer/{modelId}/convert | 将仿钉钉 JSON 转换为 BPMN XML |
3.3 流程模型管理
3.3.1 功能描述
提供流程模型的全生命周期管理,包括模型的创建、编辑、复制、删除、发布、版本管理、回滚等功能,同时支持流程分类管理,便于组织和检索流程模型。
流程模型是流程的"设计图纸",发布后变成"施工完成的公路"(流程定义),用户发起的每一次审批是公路上跑的"车"(流程实例)。
3.3.2 操作流程
模型列表管理:
1. 进入「流程设计 > 流程模型」页面
2. 系统展示所有流程模型列表,支持筛选:
a. 按流程分类筛选(树形下拉)
b. 按模型状态筛选(草稿/已发布/已废弃)
c. 按模型名称关键字搜索
d. 按创建时间范围筛选
3. 列表展示字段:模型名称、模型标识、分类、状态、版本、设计器类型、创建人、创建时间
4. 支持操作:编辑、复制、删除、发布、查看版本历史创建流程模型:
1. 点击「创建模型」按钮
2. 填写基本信息:
a. 模型名称(必填,2~50 字符)
b. 模型标识(必填,全局唯一,创建后不可修改)
c. 所属分类(必填,下拉选择)
d. 流程描述(选填,最大 500 字符)
e. 设计器类型(必填,BPMN 设计器 / 仿钉钉设计器)
3. 点击「确定」,系统创建模型并跳转到设计器页面发布流程模型:
1. 在模型列表点击「发布」按钮
2. 系统自动校验流程完整性(同流程校验规则)
3. 校验通过:
a. 首次发布:版本号设为 1
b. 更新发布:版本号自动 +1
c. 生成新的流程定义(ProcessDefinition)
d. 更新模型状态为"已发布"
4. 校验失败:提示错误信息,需修正后再发布版本管理:
1. 在模型列表点击「版本历史」
2. 展示该模型的所有版本列表:版本号、发布时间、发布人、备注
3. 标记当前使用版本
4. 支持版本对比:选择两个版本,查看流程设计差异
5. 支持版本回滚:选择历史版本回滚
a. 回滚后生成新版本(版本号递增)
b. 流程设计内容与回滚目标版本一致
c. 正在进行中的实例不受影响流程分类管理:
1. 进入「流程设计 > 流程分类」页面
2. 展示分类树形结构
3. 支持操作:
a. 新增分类:填写分类名称、排序号、父级分类
b. 编辑分类:修改分类名称、排序号
c. 删除分类:分类下无模型时才能删除
d. 调整排序:拖拽调整分类顺序3.3.3 界面线框图

3.3.4 业务规则
| 规则编号 | 规则描述 | 为什么这样设计 |
|---|---|---|
| R-01 | 模型标识全局唯一,格式:小写字母开头,只含小写字母/数字/下划线,3~50 字符 | 标识是流程在引擎中的唯一 ID,重复会导致引擎部署冲突 |
| R-02 | 草稿状态的模型不能在前台发起流程 | 未完成设计的流程不应暴露给用户 |
| R-03 | 同一模型可有多个已发布版本,但只有一个"最新版本"用于新实例 | 新旧版本并行运行,进行中的实例按原版本走完 |
| R-04 | 版本号自动递增(1, 2, 3...),历史版本不可修改 | 保证版本链的完整性和可追溯性 |
| R-05 | 版本回滚实际是创建一个新版本,内容复制自目标历史版本 | 不破坏版本递增序列,同时达到回滚效果 |
| R-06 | 已发布的模型不能直接删除,需先"废弃" | 防止误删正在使用的流程 |
| R-07 | 废弃后 7 天才能删除(冷却期) | 给误操作留出恢复窗口 |
| R-08 | 删除前校验:有运行中的流程实例则不允许删除 | 进行中的流程需要关联的定义数据来继续流转 |
| R-09 | 复制模型时,新模型标识默认为"原标识_copy",名称为"原名称_副本" | 方便快速基于已有流程创建类似流程 |
3.3.5 模型状态流转

3.3.6 接口列表
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 分页查询模型列表 | GET | /admin-api/bpm/model/page | 分页查询流程模型 |
| 获取模型详情 | GET | /admin-api/bpm/model/ | 获取模型详细信息 |
| 创建模型 | POST | /admin-api/bpm/model/create | 创建新的流程模型 |
| 更新模型 | PUT | /admin-api/bpm/model/update | 更新模型基本信息 |
| 复制模型 | POST | /admin-api/bpm/model/{id}/copy | 复制流程模型 |
| 删除模型 | DELETE | /admin-api/bpm/model/ | 删除流程模型 |
| 发布模型 | POST | /admin-api/bpm/model/{id}/deploy | 发布为流程定义 |
| 废弃模型 | POST | /admin-api/bpm/model/{id}/deprecate | 废弃流程模型 |
| 获取版本历史 | GET | /admin-api/bpm/model/{id}/versions | 获取版本列表 |
| 版本对比 | POST | /admin-api/bpm/model/{id}/compare | 对比两个版本差异 |
| 版本回滚 | POST | /admin-api/bpm/model/{id}/rollback/ | 回滚到指定版本 |
| 分页查询分类 | GET | /admin-api/bpm/category/page | 分页查询流程分类 |
| 获取分类树 | GET | /admin-api/bpm/category/tree | 获取分类树形结构 |
| 创建分类 | POST | /admin-api/bpm/category/create | 创建流程分类 |
| 更新分类 | PUT | /admin-api/bpm/category/update | 更新流程分类 |
| 删除分类 | DELETE | /admin-api/bpm/category/ | 删除流程分类 |
3.4 表单管理
3.4.1 功能描述
提供动态表单设计器,通过拖拽方式快速构建流程表单。表单组件分为三类:
- 基础组件(7 种):单行输入、多行输入、数字输入、单选框、多选框、下拉选择、级联选择
- 高级组件(6 种):日期选择、日期范围、时间选择、人员选择、部门选择、文件上传/图片上传/富文本
- 布局组件(4 种):分组、栅格布局(2/3/4 列)、分割线、说明文字
表单可与流程模型绑定,并为每个流程节点配置字段权限(可见/可编辑/隐藏/必填),实现"同一张表单,不同节点看到不同内容"。
3.4.2 操作流程
创建动态表单:
1. 进入「流程设计 > 表单管理」页面
2. 点击「创建表单」按钮
3. 填写表单基本信息:
a. 表单名称(必填)
b. 表单标识(必填,唯一标识)
c. 表单描述(选填)
4. 进入表单设计器界面
5. 左侧显示组件库,中间为表单画布,右侧为属性面板
6. 从组件库拖拽组件到画布
7. 点击组件,在右侧属性面板配置:
a. 字段标签(显示给用户的名称)
b. 字段标识(程序使用的字段名)
c. 是否必填 + 校验失败提示语
d. 默认值
e. 校验规则(最大值/最小值/正则等)
f. 选项配置(选择器组件的选项来源:手动 / 数据字典)
8. 拖拽调整组件顺序
9. 点击「预览」查看表单效果
10. 点击「保存」保存表单表单与流程绑定 + 节点字段权限:
1. 在流程模型编辑页面,选择绑定的表单
2. 进入「节点表单配置」页面
3. 表格形式展示:行=表单字段,列=流程节点
4. 每个交叉格可设置权限:
a. 可见(该节点审批人能看到该字段)
b. 可编辑(该节点审批人可以修改该字段)
c. 隐藏(该节点审批人看不到该字段,但数据保留)
d. 必填(该节点审批人必须填写该字段)
5. 发起人节点默认可编辑所有字段
6. 配置完成后保存3.4.3 界面线框图
表单设计器:
节点表单权限配置:
3.4.4 业务规则
| 规则编号 | 规则描述 | 为什么这样设计 |
|---|---|---|
| R-01 | 表单标识全局唯一,创建后不可修改 | 表单标识用于数据存储和接口调用,修改会导致历史数据无法关联 |
| R-02 | 字段标识表单内唯一,格式同模型标识 | 字段标识是表单数据的 Key,重复会导致数据覆盖 |
| R-03 | 不能使用系统保留字作为字段标识(如 id, createTime, tenantId 等) | 避免与系统字段冲突导致数据异常 |
| R-04 | 必填组件必须配置校验提示语 | 用户需要明确知道"为什么提交失败" |
| R-05 | 文件上传组件必须配置文件类型限制和大小限制 | 防止上传恶意文件或超大文件占用存储 |
| R-06 | 单个表单最大字段数 ≤ 50 个 | 超过 50 个字段的表单用户体验极差,建议拆分 |
| R-07 | 隐藏字段在表单中不显示,但数据保留 | 某些信息只对特定节点可见,但完整数据需要保留用于审计 |
| R-08 | 选项来源支持手动配置和数据字典两种方式 | 简单选项手动配置即可,通用选项(如省市区)使用数据字典统一管理 |
3.4.5 接口列表
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 分页查询表单列表 | GET | /admin-api/bpm/form/page | 分页查询动态表单 |
| 获取表单详情 | GET | /admin-api/bpm/form/ | 获取表单设计和基本信息 |
| 创建表单 | POST | /admin-api/bpm/form/create | 创建新的动态表单 |
| 更新表单 | PUT | /admin-api/bpm/form/update | 更新表单设计 |
| 复制表单 | POST | /admin-api/bpm/form/{id}/copy | 复制动态表单 |
| 删除表单 | DELETE | /admin-api/bpm/form/ | 删除动态表单 |
| 预览表单 | POST | /admin-api/bpm/form/{id}/preview | 预览表单效果 |
| 获取表单字段列表 | GET | /admin-api/bpm/form/{id}/fields | 获取所有字段定义 |
| 保存节点表单权限 | POST | /admin-api/bpm/model/{modelId}/node/{nodeId}/form-permission | 保存字段权限配置 |
| 获取节点表单权限 | GET | /admin-api/bpm/model/{modelId}/node/{nodeId}/form-permission | 获取字段权限配置 |
3.5 流程发起(用户前台)
3.5.1 功能描述
用户前台提供流程发起入口,用户可以按分类浏览可发起的流程,选择具体流程后填写表单并提交。系统自动匹配审批人、生成流程实例并启动审批流转。提交前支持流程预览(查看审批路径和审批人),提交后自动跳转到"我发起的"列表跟踪进度。
3.5.2 操作流程
1. 登录用户前台,进入「我的流程 > 发起流程」
2. 页面左侧展示流程分类树,右侧展示分类下的流程列表
3. 点击分类,右侧显示该分类下所有已发布的流程
4. 支持关键字搜索流程名称
5. 找到目标流程,点击「发起申请」
6. 系统渲染流程表单(根据表单设计 JSON 动态生成)
7. 用户填写表单内容
8. 必填字段未填写时,提交时红色提示
9. 如流程配置了"发起人自选审批人",弹出人员选择框
10. 点击「提交」
11. 系统校验表单数据
12. 校验通过后弹出「流程预览」对话框:
a. 显示审批路径:节点1(审批人) → 节点2(审批人) → ...
b. 显示每个节点的审批人姓名
13. 确认无误后点击「确定提交」
14. 系统生成流程实例(编号格式:FLOW + 年月日 + 4 位序号)
15. 流程进入第一个审批节点,审批人收到待办通知
16. 提交成功,跳转到「我发起的」页面3.5.3 界面线框图

点击「发起申请」后进入表单页面:

3.5.4 业务规则
| 规则编号 | 规则描述 | 为什么这样设计 |
|---|---|---|
| R-01 | 只展示状态为"已发布"的流程 | 草稿和已废弃的流程不应暴露给用户 |
| R-02 | 根据流程发起人配置过滤用户无权发起的流程 | 某些流程仅限特定部门或角色发起 |
| R-03 | 禁用的流程分类不显示 | 分类禁用意味着该分类下流程暂停使用 |
| R-04 | 提交时自动生成流程实例编号(格式:FLOW + 年月日 + 4 位序号) | 唯一编号便于追溯和沟通 |
| R-05 | 提交后流程状态为"进行中",不可修改表单数据 | 审批中的表单数据需要保持一致性 |
| R-06 | 支持表单数据暂存为草稿 | 复杂表单可能需要分多次填写 |
| R-07 | 审批人匹配优先级:发起人自选 > 流程变量指定 > 角色匹配 > 部门领导 > 岗位匹配 | 越精确的指定方式优先级越高 |
3.5.5 接口列表
| 接口名称 | 请求方式 | 接口路径 | 说明 |
|---|---|---|---|
| 获取流程分类树 | GET | /app-api/bpm/flow/categories | 获取可发起的流程分类树 |
| 获取分类下流程列表 | GET | /app-api/bpm/flow/list | 获取指定分类下的已发布流程 |
| 获取流程表单 | GET | /app-api/bpm/flow/{modelId}/form | 获取表单设计和字段权限 |
| 提交流程 | POST | /app-api/bpm/flow/start | 提交表单并创建流程实例 |
| 暂存流程草稿 | POST | /app-api/bpm/flow/draft | 暂存表单数据 |
| 获取流程预览 | POST | /app-api/bpm/flow/{modelId}/preview | 预览审批路径和审批人 |
四、非功能需求
4.1 性能需求
| 指标项 | 指标要求 | 说明 |
|---|---|---|
| BPMN 设计器加载时间 | ≤ 2 秒 | 含 bpmn-js 库初始化和 XML 解析渲染 |
| 仿钉钉设计器加载时间 | ≤ 1 秒 | JSON 解析和节点渲染 |
| 流程保存响应时间 | ≤ 1 秒 | 保存设计数据到数据库 |
| 流程发布响应时间 | ≤ 3 秒 | 含流程编译和 Flowable 引擎部署 |
| 表单渲染时间 | ≤ 0.5 秒 | 动态表单从 JSON 到可交互界面 |
| 流程校验响应时间 | ≤ 2 秒 | 含所有校验规则执行 |
| 并发设计支持 | ≥ 20 人 | 同时在线设计流程的管理员数量 |
| 流程节点数上限 | ≤ 100 个 | 单个流程的最大节点数 |
| 表单字段数上限 | ≤ 50 个 | 单个表单的最大字段数 |
4.2 安全需求
| 安全项 | 安全要求 | 实现方式 |
|---|---|---|
| 权限控制 | 只有授权用户才能设计和发布流程 | RBAC 权限模型,15 个细粒度权限标识 |
| 版本保护 | 已发布版本不可被篡改 | 版本数据只读存储,修改生成新版本 |
| 操作审计 | 记录所有设计和发布操作 | 操作日志记录操作人、时间、操作类型、变更内容 |
| 表单数据保护 | 表单数据按节点字段权限控制 | 字段级权限校验,审批人只能看到授权字段 |
| 数据隔离 | 不同租户的流程设计数据完全隔离 | 多租户架构,SQL 层自动拼接 tenant_id 条件 |
4.3 兼容性需求
| 兼容项 | 兼容要求 | 说明 |
|---|---|---|
| 浏览器兼容 | Chrome 80+、Firefox 75+、Edge 80+ | 支持主流现代浏览器 |
| 分辨率兼容 | 1920×1080 及以上 | 设计器界面适配高分辨率 |
| BPMN 标准 | BPMN 2.0 | 导入导出符合 BPMN 2.0 规范 |
| Flowable 版本 | 6.8.0 | 基于 Flowable 6.8.0 引擎部署 |
| 移动端适配 | 暂不支持 | 设计器操作复杂,仅在 PC 端使用;用户端表单填写后续支持移动端 |
五、数据设计
5.1 核心数据表
本模块涉及 3 个核心数据表:
| 表名 | 说明 | 核心字段 |
|---|---|---|
| bpm_model | 流程模型表 | 存储模型基本信息、设计数据(BPMN XML 或仿钉钉 JSON)、版本状态 |
| bpm_form | 动态表单表 | 存储表单设计 JSON 配置 |
| bpm_category | 流程分类表 | 存储分类树形结构 |
5.2 表关系

- bpm_category 自关联:parent_id 指向自身 id,支持多级分类
- bpm_model 与 bpm_category:多对一,一个分类下可有多个模型
- bpm_model 与 bpm_form:多对一,一个表单可被多个模型复用
5.3 bpm_model 表(流程模型表)
| 字段名 | 类型 | 长度 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|---|
| id | BIGINT | 20 | 是 | 自增 | 主键 |
| model_key | VARCHAR | 100 | 是 | - | 流程标识(全局唯一) |
| model_name | VARCHAR | 100 | 是 | - | 流程名称 |
| category_id | BIGINT | 20 | 是 | - | 所属分类 ID |
| description | VARCHAR | 500 | 否 | NULL | 流程描述 |
| form_id | BIGINT | 20 | 否 | NULL | 绑定表单 ID |
| designer_type | TINYINT | 1 | 是 | 1 | 设计器类型(1-BPMN / 2-仿钉钉) |
| bpmn_xml | LONGTEXT | - | 否 | NULL | BPMN XML 内容(designer_type=1 时有值) |
| model_json | LONGTEXT | - | 否 | NULL | 仿钉钉 JSON 内容(designer_type=2 时有值) |
| status | TINYINT | 1 | 是 | 0 | 状态(0-草稿 / 1-已发布 / 2-已废弃) |
| current_version | INT | 11 | 是 | 1 | 当前版本号 |
| created_by | BIGINT | 20 | 是 | - | 创建人 ID |
| created_time | DATETIME | - | 是 | CURRENT_TIMESTAMP | 创建时间 |
| updated_by | BIGINT | 20 | 是 | - | 更新人 ID |
| updated_time | DATETIME | - | 是 | CURRENT_TIMESTAMP | 更新时间 |
| deleted | TINYINT | 1 | 是 | 0 | 删除标记 |
| tenant_id | BIGINT | 20 | 是 | - | 租户 ID |
索引设计:
- UNIQUE INDEX
uk_model_key_tenant(model_key, tenant_id) — 租户内标识唯一 - INDEX
idx_category_id(category_id) — 按分类查询 - INDEX
idx_status(status) — 按状态筛选
5.4 bpm_form 表(动态表单表)
| 字段名 | 类型 | 长度 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|---|
| id | BIGINT | 20 | 是 | 自增 | 主键 |
| form_key | VARCHAR | 100 | 是 | - | 表单标识(全局唯一) |
| form_name | VARCHAR | 100 | 是 | - | 表单名称 |
| description | VARCHAR | 500 | 否 | NULL | 表单描述 |
| form_config | LONGTEXT | - | 是 | - | 表单设计 JSON 配置 |
| status | TINYINT | 1 | 是 | 1 | 状态(0-禁用 / 1-启用) |
| created_by | BIGINT | 20 | 是 | - | 创建人 ID |
| created_time | DATETIME | - | 是 | CURRENT_TIMESTAMP | 创建时间 |
| updated_by | BIGINT | 20 | 是 | - | 更新人 ID |
| updated_time | DATETIME | - | 是 | CURRENT_TIMESTAMP | 更新时间 |
| deleted | TINYINT | 1 | 是 | 0 | 删除标记 |
| tenant_id | BIGINT | 20 | 是 | - | 租户 ID |
索引设计:
- UNIQUE INDEX
uk_form_key_tenant(form_key, tenant_id) — 租户内标识唯一
5.5 bpm_category 表(流程分类表)
| 字段名 | 类型 | 长度 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|---|
| id | BIGINT | 20 | 是 | 自增 | 主键 |
| category_name | VARCHAR | 50 | 是 | - | 分类名称 |
| parent_id | BIGINT | 20 | 是 | 0 | 父级分类 ID(0 为顶级) |
| sort_order | INT | 11 | 是 | 0 | 排序号 |
| status | TINYINT | 1 | 是 | 1 | 状态(0-禁用 / 1-启用) |
| created_by | BIGINT | 20 | 是 | - | 创建人 ID |
| created_time | DATETIME | - | 是 | CURRENT_TIMESTAMP | 创建时间 |
| updated_by | BIGINT | 20 | 是 | - | 更新人 ID |
| updated_time | DATETIME | - | 是 | CURRENT_TIMESTAMP | 更新时间 |
| deleted | TINYINT | 1 | 是 | 0 | 删除标记 |
| tenant_id | BIGINT | 20 | 是 | - | 租户 ID |
索引设计:
- INDEX
idx_parent_id(parent_id) — 树形查询 - INDEX
idx_sort_order(sort_order) — 排序查询
5.6 数据字典
| 字段 | 值 | 含义 |
|---|---|---|
| designer_type | 1 | BPMN 设计器 |
| designer_type | 2 | 仿钉钉设计器 |
| status(model) | 0 | 草稿 |
| status(model) | 1 | 已发布 |
| status(model) | 2 | 已废弃 |
| status(form/category) | 0 | 禁用 |
| status(form/category) | 1 | 启用 |
| approvalMethod | or | 或签(任一人通过即可) |
| approvalMethod | and | 会签(所有人通过才算通过) |
| approvalMethod | sequential | 依次审批(按顺序逐一) |
| approverType | user | 指定人员 |
| approverType | role | 指定角色 |
| approverType | leader | 部门负责人 |
| approverType | multiLevelLeader | 多级部门负责人 |
| approverType | formField | 表单字段 |
| approverType | initiatorSelect | 发起人自选 |
六、跨模块联动
6.1 联动关系总览
| 关联模块 | 联动方式 | 数据流向 | 说明 |
|---|---|---|---|
| 用户管理(01-01) | 读取用户数据 | 用户模块 → 流程设计 | 审批人选择器、发起人范围配置依赖用户列表 |
| 部门管理(01-02) | 读取部门数据 | 部门模块 → 流程设计 | "部门负责人"和"多级部门负责人"审批人类型依赖部门层级和负责人配置 |
| 角色管理(01-03) | 读取角色数据 | 角色模块 → 流程设计 | "指定角色"审批人类型依赖角色列表和角色-用户关联 |
| 岗位管理(01-04) | 读取岗位数据 | 岗位模块 → 流程设计 | 岗位可作为审批人匹配条件 |
| 数据字典(01-06) | 读取字典数据 | 字典模块 → 表单管理 | 表单选择器组件的选项可来源于数据字典 |
| 租户管理(01-07) | 数据隔离 | 租户模块 → 流程设计 | 所有流程数据按 tenant_id 隔离 |
| 通知模块 | 发送通知 | 流程设计 → 通知模块 | 流程发布/版本变更时通知相关管理员 |
| 日志审计(01-08) | 写入操作日志 | 流程设计 → 日志模块 | 记录所有设计、发布、版本操作 |
| 流程管理(03-02) | 发布流程定义 | 流程设计 → 流程管理 | 模型发布后生成流程定义,供流程管理模块使用 |
| 我的流程(03-03) | 提供流程入口 | 流程设计 → 我的流程 | 用户端按分类展示已发布流程供发起 |
6.2 关键联动流程
审批人解析流程:
表单数据字典联动:
6.3 数据一致性要求
| 场景 | 一致性要求 | 处理方式 |
|---|---|---|
| 用户被禁用/删除 | 该用户作为审批人配置的节点需标记异常 | 流程管理模块在解析审批人时检测并触发告警 |
| 部门被删除 | "部门负责人"类型的审批人无法解析 | 运行时走"审批人为空"的兜底策略 |
| 角色被删除 | "指定角色"类型的审批人无法解析 | 同上 |
| 表单被流程引用后删除 | 流程实例的表单数据无法渲染 | 限制删除:被流程引用的表单不允许删除,只能禁用 |
| 分类被删除 | 分类下的流程失去归属 | 限制删除:分类下有模型时不允许删除 |
七、附录
7.1 名词解释
| 名词 | 英文 | 通俗解释 |
|---|---|---|
| BPMN | Business Process Model and Notation | 业务流程建模与标注——一种国际通用的"流程画图标准",就像地图有统一的图例符号一样,BPMN 规定了流程图中每种图形代表什么含义 |
| 流程模型 | Process Model | 流程的"设计图纸"——管理员在系统中画的流程图,还没正式启用 |
| 流程定义 | Process Definition | 流程的"正式版本"——模型发布后变成的东西,相当于图纸审批通过后可以施工了 |
| 流程实例 | Process Instance | 一次具体的流程执行——用户提交一次请假申请,就产生了一个流程实例。就像"公路"是定义,每辆跑的"车"是实例 |
| 节点 | Node / Element | 流程图中的"站点"——审批人、条件判断、抄送等都是节点 |
| 网关 | Gateway | 流程图中的"岔路口"——控制流程走哪条路径。排他网关=只走一条路,并行网关=同时走多条路 |
| 会签 | Counter Sign | "所有人签字才算通过"——比如 3 个评委都要同意,类似答辩全票通过 |
| 或签 | Or Sign | "任一人签字就算通过"——比如 3 个评委任一同意即可,类似抢答 |
| 依次审批 | Sequential Approval | "排队签字"——A 签完 B 签,B 签完 C 签,有先后顺序 |
| 条件分支 | Conditional Branch | "根据条件走不同路径"——请假超过 3 天走部门经理审批,3 天以内直接通过 |
| 并行分支 | Parallel Branch | "同时分头执行"——财务审核和会计审核同时进行,都完成后再继续 |
| 流程标识 | Process Key | 流程的"身份证号"——全局唯一的英文标识,创建后不能改 |
| 动态表单 | Dynamic Form | 管理员自己拖拽创建的表单——不需要程序员写代码,像搭积木一样拼装表单字段 |
| 节点表单权限 | Node Form Permission | 同一张表单在不同审批节点展示不同内容——发起人能编辑,审批人只能看,某些字段对特定节点隐藏 |
| 仿钉钉设计器 | Visual Designer | 模仿钉钉审批的可视化流程设计工具——从上往下排列节点,拖拽即可搭建,适合非技术人员 |
| Flowable | Flowable Engine | 开源的工作流引擎——负责"跑"流程的底层软件,PMForge 基于 Flowable 6.8.0 构建 |
7.2 权限标识
| 权限标识 | 权限名称 | 说明 |
|---|---|---|
| bpm:model:create | 创建流程模型 | 创建新的流程模型 |
| bpm:model:update | 编辑流程模型 | 编辑模型信息和流程设计 |
| bpm:model:delete | 删除流程模型 | 删除流程模型 |
| bpm:model:deploy | 发布流程模型 | 发布为流程定义 |
| bpm:model:query | 查询流程模型 | 查看模型列表和详情 |
| bpm:model:copy | 复制流程模型 | 复制流程模型 |
| bpm:form:create | 创建动态表单 | 创建新的动态表单 |
| bpm:form:update | 编辑动态表单 | 编辑表单设计 |
| bpm:form:delete | 删除动态表单 | 删除动态表单 |
| bpm:form:query | 查询动态表单 | 查看表单列表和详情 |
| bpm:category:create | 创建流程分类 | 创建新的流程分类 |
| bpm:category:update | 编辑流程分类 | 编辑分类信息 |
| bpm:category:delete | 删除流程分类 | 删除流程分类 |
| bpm:category:query | 查询流程分类 | 查看分类列表 |
| bpm:flow:start | 发起流程 | 用户前台发起流程 |
7.3 错误码
| 错误码 | 说明 | 处理建议 |
|---|---|---|
| BPM_MODEL_KEY_EXISTS | 流程标识已存在 | 更换一个唯一的流程标识 |
| BPM_MODEL_NOT_FOUND | 流程模型不存在 | 检查模型 ID 是否正确 |
| BPM_MODEL_HAS_RUNNING_INSTANCES | 流程模型有运行中的实例,无法删除 | 先终止或等待所有运行中实例完成 |
| BPM_MODEL_NOT_DEPLOYABLE | 流程校验不通过,无法发布 | 根据校验错误列表逐一修复 |
| BPM_FORM_KEY_EXISTS | 表单标识已存在 | 更换一个唯一的表单标识 |
| BPM_FORM_IN_USE | 表单被流程引用,无法删除 | 先解除流程与表单的绑定关系 |
| BPM_CATEGORY_HAS_MODELS | 分类下有流程模型,无法删除 | 先移除或迁移分类下的所有模型 |
| BPM_DESIGNER_VALIDATE_FAIL | 流程设计校验失败 | 检查错误列表:开始/结束事件、审批人配置、条件表达式等 |
7.4 接口汇总
| 模块 | 接口数量 | 路径前缀 |
|---|---|---|
| BPMN 设计器 | 7 | /admin-api/bpmn/designer/ |
| 仿钉钉设计器 | 6 | /admin-api/bpm/visual-designer/ |
| 流程模型管理 | 11 | /admin-api/bpm/model/ |
| 流程分类管理 | 5 | /admin-api/bpm/category/ |
| 表单管理 | 10 | /admin-api/bpm/form/ |
| 流程发起(用户端) | 6 | /app-api/bpm/flow/ |
| 合计 | 45 | - |
7.5 修订记录
| 版本 | 日期 | 修订人 | 修订内容 |
|---|---|---|---|
| v1.0 | 2026-09-24 | PMForge 产品团队 | 初稿创建 |
| v2.0 | 2026-09-19 | PMForge 产品团队 | 增强用户场景(命名角色+详细步骤)、新增验收标准、新增界面线框图、新增跨模块联动章节、新增名词解释(含通俗类比)、新增错误码定义、补充索引设计和数据字典 |
文档结束