流程中心使用手册
一、概述
流程中心基于 Warm-Flow v1.8.0 工作流引擎,提供完整的业务流程审批能力。支持自定义流程设计、多节点审批、或签/会签/票签等多种协作方式,以及灵活的审批人分配策略。
功能模块
| 模块 | 路径 | 说明 |
|---|---|---|
| 流程分类 | bpm/flow-category |
管理流程的分类目录(树形结构) |
| 流程定义 | bpm/flow-definition |
流程的创建、编辑、发布、激活管理 |
| 我的待办 | bpm/flow-todo |
当前用户的待审批任务列表 |
| 我的发起 | bpm/flow-my |
当前用户发起的流程实例列表 |
| 流程实例 | bpm/flow-instance-manage |
管理员视角的所有流程实例 |
二、流程分类
流程分类采用树形结构,用于对流程定义进行分组管理。
操作说明
- 新增分类:点击"新增"按钮,填写分类名称、上级分类、排序号
- 编辑分类:点击分类行的"编辑"按钮
- 删除分类:点击分类行的"删除"按钮(存在子分类或已关联流程定义时不可删除)
建议:按业务模块建立分类,如"行政审批"、"财务审批"、"采购审批"、"人事审批"等。
三、流程定义
流程定义是整个审批流程的核心配置,包含流程的基本信息、审批节点设计、审批人分配等。
3.1 流程定义列表
列表展示所有流程定义,支持按流程编码、名称、版本、分类、发布状态、激活状态筛选。
关键字段说明:
| 字段 | 说明 |
|---|---|
| 流程编码 | 系统自动生成或手动指定的唯一编码 |
| 流程名称 | 流程的显示名称 |
| 分类 | 所属流程分类 |
| 版本 | 流程版本号 |
| 发布状态 | 未发布 / 已发布 / 已过期 |
| 激活状态 | 已激活 / 已停用 |
3.2 新建流程定义
- 点击"新增"按钮
- 填写流程名称、选择分类
- 流程编码可手动输入或点击"生成编码"自动生成
- 在流程设计器中设计审批节点
- 为每个审批节点配置审批人
- 保存
3.3 流程设计器
流程设计器支持可视化的节点配置:
- 开始节点:流程的起点
- 审批节点:需要审批的节点,可配置审批人、协作方式
- 结束节点:流程的终点
每个审批节点可配置:
- 审批人类型:用户、角色、部门
- 协作方式:或签、会签、票签(详见下方说明)
- 流转条件:通过/驳回后的流转路径
3.4 发布与激活
| 操作 | 说明 |
|---|---|
| 发布 | 将流程定义标记为"已发布",业务模块才能引用该流程发起审批 |
| 停用 | 将已发布的流程标记为"已过期",不再接受新的发起 |
| 激活 | 已发布的流程需要激活后才能真正使用 |
| 停用(激活) | 暂停流程使用,不影响已在审批中的实例 |
3.5 复制流程
点击"复制"按钮可基于当前流程创建新版本,便于流程迭代升级。
四、审批协作方式
系统支持三种审批协作方式,在流程设计器中为每个审批节点配置。
4.1 或签(NORMAL)
任一人审批即可通过。
- 节点分配给多个审批人时,只要其中一人审批通过,该节点即通过
- 适用于需要快速决策、任意审批人均可代表团队意见的场景
- 可执行操作:通过、退回
示例:部门请假审批分配给部门经理和副经理,其中一人审批即可。
4.2 会签(ALL)
所有人都必须审批通过。
- 节点分配给多个审批人时,所有人都审批通过后,该节点才通过
- 任一审批人退回则节点退回
- 适用于需要全体确认的重要决策
- 可执行操作:通过、退回
示例:重大项目立项审批需要所有部门负责人签字确认。
4.3 票签(VOTE)
按比例投票决定是否通过。
- 节点设置通过比例阈值,审批人投票"赞成"或"反对"
- 达到通过比例后自动流转
- 适用于需要多数表决的决策场景
- 可执行操作:赞成、反对
示例:委员会评审,设定 60% 通过率,6 人中 4 人赞成即通过。
五、审批人分配
在流程设计器中为每个审批节点分配审批人,支持三种类型:
| 类型 | 格式 | 说明 |
|---|---|---|
| 用户 | {userId} |
指定具体用户作为审批人 |
| 角色 | role:{roleId} |
拥有该角色的所有用户均可审批(通常配合或签使用) |
| 部门 | dept:{deptId} |
属于该部门的所有用户均可审批 |
同一节点可混合配置多种类型的审批人。系统在运行时会将角色和部门自动解析为具体的用户列表。
六、审批操作
6.1 操作入口
- 我的待办 (
bpm/flow-todo):查看并处理待审批的任务 - 我的发起 (
bpm/flow-my):查看自己发起的流程,可进行撤回操作
6.2 审批操作类型
| 操作 | 说明 | 使用场景 |
|---|---|---|
| 通过 | 同意当前节点的审批,流程流转到下一节点 | 所有审批节点(通用) |
| 退回 | 不同意当前节点的审批,退回给发起人或上一节点 | 或签、会签模式 |
| 反对 | 投票反对(仅票签模式) | 票签模式 |
| 撤回 | 发起人撤回整个流程 | 我的发起列表,仅"审批中"状态可撤回 |
| 终止 | 管理员强制终止流程实例 | 流程实例管理 |
6.3 审批对话框
点击审批按钮后弹出审批对话框,包含三个标签页:
- 详情:显示当前流程实例的基本信息和业务数据
- 流程图:可视化展示流程进度,当前节点高亮显示
- 审批历史:列出所有已完成节点的审批记录
审批时需填写审批意见(必填),系统提供常用意见快捷标签。
七、流程实例状态说明
| 状态码 | 状态名称 | 说明 |
|---|---|---|
| 0 | 待提交 | 实例已创建但未提交 |
| 1 | 审批中 | 流程正在审批过程中 |
| 2 | 已通过 | 全部审批节点通过 |
| 4 | 已终止 | 管理员手动终止 |
| 5 | 已作废 | 流程被取消作废 |
| 6 | 已撤回 | 发起人撤回 |
| 8 | 已完成 | 流程正常结束 |
| 9 | 已退回 | 审批被退回 |
| 10 | 已失效 | 流程失效 |
| 11 | 已驳回 | 审批被驳回 |
八、示例流程:请假审批
下面通过一个完整的请假审批流程演示系统的使用。
8.1 业务场景
某公司请假审批规则:
- 员工提交请假申请
- 直属上级审批(或签:部门经理或副经理任一审批)
- 请假天数 ≤ 3 天:直属上级通过后直接结束
- 请假天数 > 3 天:直属上级通过后还需人事部门审批(会签:所有人事专员确认)
- 任意节点退回则流程回到发起人
8.2 流程设计
[开始] → [直属上级审批(或签)] → {≤3天} → [结束]
↓
{>3天}
↓
[人事审批(会签)]
↓
[结束]
8.3 操作步骤
准备工作:设置部门主管(实现"发起人的直属上级"动态审批)
本系统通过 SpEL 表达式 实现"发起人的直属上级"精确匹配。原理:
- 每个部门在"部门管理"中指定一名主管用户
- 审批节点使用 SpEL 表达式:
#{@supervisorService.getSupervisor(#initiator)} - 流程发起时,系统根据发起人所属部门自动找到其主管,仅该主管能审批
- 进入 系统管理 > 部门管理
- 编辑每个部门,在"主管"字段中选择该部门的主管用户
- 保存后立即生效,无需修改流程定义
与角色方案的区别:角色方案下 A 部门主管也能看到 B 部门员工的申请。本方案精确匹配发起人所属部门的主管,避免了跨部门审批问题。
步骤一:创建流程分类
- 进入 流程中心 > 流程分类
- 点击"新增"
- 填写:分类名称 = "行政审批",排序号 = 1
- 保存
步骤二:设计流程定义
进入 流程中心 > 流程定义
点击"新增"
填写流程信息:
- 流程名称:
员工请假审批 - 分类:选择"行政审批"
- 点击"生成编码"自动生成流程编码
- 流程名称:
在流程设计器中设计节点:
节点一:直属上级审批
- 节点名称:直属上级审批
- 审批人类型:手动输入 SpEL 表达式
- 审批人表达式:
#{@supervisorService.getSupervisor(#initiator)} - 流转条件:
- 通过 + 请假天数 ≤ 3 → 流向结束节点
- 通过 + 请假天数 > 3 → 流向人事审批节点
- 退回 → 流向发起人
表达式说明:
@supervisorService是系统内置的 Spring Bean,#initiator是启动流程时传入的发起人用户 ID。系统运行时自动调用getSupervisor()方法,返回发起人所属部门的主管 ID。节点二:人事审批
- 节点名称:人事审批
- 协作方式:会签
- 审批人类型:选择"用户"
- 审批人:搜索并选择"张三"、"李四"(人事专员)
- 流转条件:
- 通过 → 流向结束节点
- 退回 → 流向发起人
保存流程定义
步骤三:发布并激活流程
- 在流程定义列表中,点击刚创建的流程的"发布"按钮
- 确认发布
- 点击"激活"按钮,将流程设为激活状态
步骤四:发起请假审批(业务系统)
- 员工在业务系统中填写请假申请单
- 选择审批流程"员工请假审批"
- 填写请假天数、请假事由等信息
- 提交申请
步骤五:直属上级审批
- 直属上级登录系统,进入 流程中心 > 我的待办
- 找到该请假审批任务,点击"审批"
- 查看详情和流程图,确认请假信息
- 选择操作:
- 通过:同意请假,填写审批意见"同意请假申请"
- 退回:不同意,填写退回原因
- 如果通过且请假天数 > 3 天,流程自动流转到人事审批节点
步骤六:人事审批(如需要)
- 人事专员登录系统,进入 我的待办
- 由于节点配置为会签,所有人事专员都需要审批
- 张三审批通过后,任务状态变为等待李四审批
- 李四审批通过后,流程结束
- 如果任一专员退回,流程退回到发起人
步骤七:查看审批历史
- 流程参与者可随时查看审批进度
- 点击流程实例进入详情
- 切换到"审批历史"标签页
- 可以看到每个节点的审批人、审批时间、审批意见
8.4 流程图示例
┌──────────┐
│ 开始 │
└────┬─────┘
│ 员工提交请假申请
▼
┌──────────────┐
│ 直属上级审批 │ ← SpEL动态解析(发起人所属部门主管)
└──┬───────┬───┘
│ │
通过(≤3天) 通过(>3天)
│ │
│ ▼
│ ┌──────────┐
│ │ 人事审批 │ ← 会签(张三、李四都需审批)
│ └────┬─────┘
│ │
│ 通过 │ 退回
│ │ │
▼ ▼ ▼
┌──────────────┐
│ 结束 │ (退回时重新发起)
└──────────────┘
九、常用操作速查
| 需求 | 操作路径 |
|---|---|
| 新建流程 | 流程定义 → 新增 → 设计节点 → 保存 → 发布 → 激活 |
| 停用流程 | 流程定义 → 找到流程 → 停用(激活状态切换) |
| 废弃流程 | 流程定义 → 找到流程 → 设为过期 |
| 审批任务 | 我的待办 → 找到任务 → 审批 → 通过/退回 |
| 撤回申请 | 我的发起 → 找到实例 → 撤回 |
| 查看进度 | 我的发起/待办 → 点击实例 → 流程图标签页 |
| 查看历史 | 点击实例 → 审批历史标签页 |
| 终止流程 | 流程实例管理 → 找到实例 → 终止 |
十、业务模块审批流程配置
系统支持为以下业务模块配置审批流程,在各自模块的"参数设置"中开启:
| 业务模块 | 参数设置路径 | 说明 |
|---|---|---|
| 采购订单 | sc/config 采购参数设置 |
开启后,采购订单创建时自动发起审批流程 |
| 采购收货单 | sc/config 采购参数设置 |
开启后,采购收货单创建时自动发起审批流程 |
| 采购退货单 | sc/config 采购参数设置 |
开启后,采购退货单创建时自动发起审批流程 |
| 销售订单 | sc/saleConfig 销售参数设置 |
开启后,销售订单创建时自动发起审批流程 |
| 销售出库单 | sc/saleConfig 销售参数设置 |
开启后,销售出库单创建时自动发起审批流程 |
| 销售退货单 | sc/saleConfig 销售参数设置 |
开启后,销售退货单创建时自动发起审批流程 |
| 零售出库单 | sc/retailConfig 零售参数设置 |
开启后,零售出库单创建时自动发起审批流程 |
| 零售退货单 | sc/retailConfig 零售参数设置 |
开启后,零售退货单创建时自动发起审批流程 |
| 盘点单 | sc/takeStockConfig 盘点参数设置 |
开启后,盘点单创建时自动发起审批流程 |
| 供应商结算单 | settle/config 供应商结算参数设置 |
开启后,供应商结算单创建时自动发起审批流程 |
| 供应商对账单 | settle/config 供应商结算参数设置 |
开启后,供应商对账单创建时自动发起审批流程 |
| 供应商费用单 | settle/config 供应商结算参数设置 |
开启后,供应商费用单创建时自动发起审批流程 |
| 供应商预付款单 | settle/config 供应商结算参数设置 |
开启后,供应商预付款单创建时自动发起审批流程 |
| 客户结算单 | customer/settle/config 客户结算参数设置 |
开启后,客户结算单创建时自动发起审批流程 |
| 客户对账单 | customer/settle/config 客户结算参数设置 |
开启后,客户对账单创建时自动发起审批流程 |
| 客户费用单 | customer/settle/config 客户结算参数设置 |
开启后,客户费用单创建时自动发起审批流程 |
| 客户预付款单 | customer/settle/config 客户结算参数设置 |
开启后,客户预付款单创建时自动发起审批流程 |
配置方法
- 先在 流程中心 > 流程定义 中创建并发布一个审批流程
- 进入对应模块的 参数设置 页面
- 将"是否开启审批流程"设为是
- 点击"审批流程"输入框,搜索并选择已发布的流程
- 保存
审批流程工作原理
- 用户在业务模块中创建单据(如销售订单)
- 系统检查该模块是否开启了审批流程
- 如果开启,自动发起审批流程实例,将单据提交到流程的第一个审批节点
- 审批人在 我的待办 中处理审批任务
- 审批通过 → 系统回调对应的
BpmBizListener,自动执行单据的审核通过逻辑 - 审批退回 → 单据状态变为"审核拒绝",用户可修改后重新提交
注意:开启审批流程后,单据不再支持手动"审核通过/拒绝"操作,必须通过流程审批来完成。
参数页面与业务模块对应关系
一个参数设置页面可能包含多个业务模块的审批开关:
| 参数页面 | 包含的审批模块 |
|---|---|
采购参数设置 (sc/config) |
采购订单、采购收货单、采购退货单 |
销售参数设置 (sc/saleConfig) |
销售订单、销售出库单、销售退货单 |
零售参数设置 (sc/retailConfig) |
零售出库单、零售退货单 |
盘点参数设置 (sc/takeStockConfig) |
盘点单 |
供应商结算参数设置 (settle/config) |
供应商结算单、供应商对账单、供应商费用单、供应商预付款单 |
客户结算参数设置 (customer/settle/config) |
客户结算单、客户对账单、客户费用单、客户预付款单 |
十一、常见问题
Q:发布后的流程能否修改?
A:不能直接修改已发布且被使用的流程。建议使用"复制"功能创建新版本,修改后重新发布,旧版本可设为过期。
Q:会签模式下,某个审批人长期不处理怎么办?
A:目前需要管理员在流程实例管理中手动催办或终止。后续版本将支持超时自动提醒和自动流转功能。
Q:审批人离职了怎么办?
A:如果审批人配置为"角色"或"部门"类型,只需调整角色成员或部门成员即可生效,无需修改流程定义。如果是按"用户"指定的审批人,则需要修改流程定义。
Q:如何实现"发起人的直属上级"作为审批人?
A:使用 SpEL 动态表达式。先在部门管理中为每个部门设置主管用户,然后在流程审批节点中输入表达式 #{@supervisorService.getSupervisor(#initiator)}。发起流程时传入 initiator 变量(发起人用户ID),系统会自动根据发起人所属部门找到其主管并分配审批任务。此方式精确匹配发起人本部门的主管,不会出现跨部门审批问题。
Q:能否在审批节点设置条件分支?
A:支持。在流程设计器中可以为每个审批节点的"通过"和"退回"设置不同的流转目标,并配置条件表达式(如请假天数阈值)。