Skip to content

待办管理 PRD

文档信息

项目内容
产品名称PMForge - 待办管理
文档版本v2.0
创建日期2026-09-19
最后更新2026-09-24
文档状态评审中
优先级P0

一、功能概述

1.1 功能定位

如果把「我的流程」(03-03)比作员工手中的"导航仪"——告诉你申请走到了哪一步,那么「待办管理」就是管理者和审批人面前的"审批指挥中心"。

这里是整个企业审批流转的调度台:审批人在这里处理堆积的审批任务,部门负责人在这里查看团队的审批效率报表,系统管理员在这里干预异常流程、批量催办积压任务。一句话概括——所有需要"管"审批的地方,都在这里

本模块基于 Flowable 6.8.0 引擎,提供五大核心能力:

能力通俗解释谁在用
待办任务列表审批人的"工作台",一眼看到所有待审批的任务审批人
任务审批审批操作的"工具箱"——通过、驳回、转办、委派、加签、减签审批人
已办任务审批人的"工作日志",回顾自己处理过什么审批人
任务统计管理者的"效率仪表盘"——谁审批最快、哪个流程最慢、超时了多少部门负责人、管理员
催办管理流程停滞时的"闹钟"——自动或手动催促审批人处理管理员、流程管理员

1.2 目标用户

用户类型典型角色使用场景核心诉求
审批人部门经理王经理每天处理十几条审批,需要快速看清内容、一键操作操作快、不遗漏、能批量处理
部门负责人研发总监老张月度复盘时发现团队审批平均耗时48小时,想找到瓶颈数据直观、能定位到人
系统管理员IT运维小陈月底发现大量历史待办积压,需要批量催办和转办全局视角、批量操作
流程管理员BPM配置专员李姐配置自动催办规则,让超时任务自动提醒规则灵活、日志可查

1.3 业务价值

  • 审批效率提升:结构化的待办列表 + 批量操作,减少审批人逐条查找的重复劳动
  • 流程停滞减少:自动催办 + 超时预警双管齐下,避免审批任务"石沉大海"
  • 管理决策有据:任务统计看板用数据说话——哪个部门审批最慢、哪类流程超时最多,一目了然
  • 复杂场景覆盖:转办、委派、加签、减签等操作覆盖企业真实审批中的各种"特殊情况"
  • 审计追溯完整:每一条审批操作、每一次催办都留有完整记录,满足合规审计要求

1.4 功能范围

功能分类功能项说明
待办任务列表任务表格展示展示任务名称/流程/发起人/到达时间/停留时长/紧急程度
待办任务列表多维度筛选按流程类型、发起人、时间范围、紧急程度、超时状态筛选
待办任务列表批量操作批量通过、批量转办、批量催办(每次最多50条)
待办任务列表任务搜索按关键字搜索任务名称、流程名称
任务审批审批操作面板左侧展示任务详情(表单+流程图+审批记录),右侧展示操作按钮
任务审批审批通过同意流程继续流转到下一节点
任务审批审批驳回驳回到发起人/上一节点/指定节点
任务审批退回操作退回到之前任意已完成的历史节点
任务审批转办操作将任务完全转交给其他用户
任务审批委派操作临时委派给其他用户,处理后返回原审批人
任务审批加签操作前加签/后加签,动态增加审批人
任务审批减签操作移除加签产生的审批任务
任务审批审批意见填写审批意见和上传附件
已办任务已办列表查看当前用户已处理的审批任务
已办任务审批详情查看审批操作详细信息(意见、附件、耗时)
任务统计概览卡片待办总数/今日新增/今日完成/超时数/平均处理时长
任务统计趋势图表待办趋势/流程分布/处理时长对比/超时率趋势
任务统计效率排行部门排行/个人排行/超时排行(Top 20)
催办管理手动催办通过站内信/邮件/短信发送催办通知
催办管理催办记录查看所有催办历史
催办管理自动催办规则配置超时阈值、催办频率、通知方式等自动化规则

二、用户场景

2.1 用户角色

角色描述核心诉求
审批人被分配到审批任务的普通用户,如部门经理快速看清审批内容、一键完成操作、特殊情况下灵活转交
部门负责人管理团队审批效率的管理者,如研发总监看到团队效率数据、发现超时瓶颈、督促改进
系统管理员平台技术管理人员全局任务管理、异常流程干预、批量操作
流程管理员BPM 规则配置人员配置催办规则、查看催办日志、管理统计报表

2.2 使用场景

场景1:审批人王经理处理待办任务

  • 用户:部门经理王经理
  • 场景:王经理早上登录系统 → 顶部导航的待办角标显示"5" → 点击进入「待办管理」→ 看到5条待审批任务,其中1条报销申请已超时(整行标红)、1条采购申请标记为"特急" → 先点击超时的报销申请 → 左侧看到报销明细和发票附件、右侧是操作按钮 → 审阅后填写"同意,金额合理" → 点击「通过」→ 任务从列表消失 → 接着处理下一条
  • 期望:超时任务一眼就能看到、审批操作不绕弯子、处理完立刻消失

场景2:审批人驳回并说明原因

  • 用户:审批人王经理
  • 场景:王经理查看小刘的请假申请 → 发现请假天数和考勤系统对不上 → 点击「驳回」→ 选择"驳回到发起人" → 填写驳回原因"请假天数与考勤记录不符,请核实后重新提交" → 上传附件(考勤截图)→ 点击「确认驳回」→ 小刘收到驳回通知,可以在「我的流程」里看到驳回原因并修改后重新提交
  • 期望:驳回时能同时写原因和传附件,让发起人清楚知道哪里有问题

场景3:审批人转办任务

  • 用户:审批人王经理
  • 场景:王经理下周出差,但有一条审批预计这几天就到 → 打开待办任务 → 点击「转办」→ 在候选人列表搜索"副经理" → 选择张副经理 → 填写说明"本人下周出差,转请张经理代为审批" → 点击「确认转办」→ 任务出现在张副经理的待办列表 → 王经理的已办记录里显示"已转办给张副经理"
  • 期望:转办后各方都收到通知、已办记录里能看到转办去向

场景4:加签处理复杂审批

  • 用户:审批人王经理
  • 场景:审批一笔大额采购申请 → 王经理不懂技术参数,需要技术总监确认 → 点击「加签」→ 选择"前加签"(让技术总监先看)→ 选择技术总监赵总 → 填写说明"请赵总确认采购设备的技术参数是否满足项目需求" → 赵总收到待办任务 → 赵总审批通过后 → 任务回到王经理这里 → 王经理看到赵总的意见"技术参数满足" → 最终审批通过
  • 期望:加签人能看到完整申请信息、加签完成后任务正常返回

场景5:部门总监老张查看效率统计

  • 用户:研发总监老张
  • 场景:月度管理会上老板问"审批效率怎么样" → 老张打开「任务统计」→ 概览卡片显示:待办85件、平均处理时长12小时、超时15件 → 切到"个人效率排行" → 发现小赵平均处理时长48小时,排在最后 → 点进小赵的名字 → 跳转到小赵的待办列表 → 发现积压了12件 → 会后找小赵沟通,发现是请假期间积压的 → 协助批量转办给其他同事
  • 期望:数据能下钻到具体人员和任务,不只是看个数字

场景6:管理员小陈批量催办积压任务

  • 用户:系统管理员小陈
  • 场景:月底小陈发现系统里有大量历史待办积压 → 进入「待办任务列表」→ 筛选"停留超过30天" → 出来23条结果 → 全选 → 点击「批量催办」→ 系统向所有相关审批人发送催办通知 → 其中3条是无主任务(原审批人已离职)→ 小陈把这3条批量转办给在职人员 → 操作完成
  • 期望:批量操作减少逐条处理的重复工作、操作结果有反馈

场景7:流程管理员李姐配置自动催办

  • 用户:流程管理员李姐
  • 场景:老板反馈"有些审批一放就是半个月没人管" → 李姐进入「催办管理」→ 点击「催办规则配置」→ 新建规则:名称"通用超时催办"、超时阈值24小时、催办间隔12小时、最多催办3次、通知方式"站内信+邮件" → 保存并启用 → 之后系统每30分钟自动检查一次 → 有任务超时就自动发催办通知 → 李姐在催办记录里能看到每次催办的详情
  • 期望:规则配置一次、长期自动执行、催办记录完整可查

2.3 用户故事

编号用户故事验收标准
US-01作为审批人,我希望看到清晰的待办任务列表,以便快速处理审批①列表展示任务名称、流程、发起人、到达时间、停留时长 ②超时任务行标红 ③按到达时间升序排列 ④支持按流程类型、发起人、紧急程度筛选
US-02作为审批人,我希望能执行通过/驳回/转办/委派/加签/减签操作①审批面板左侧展示表单+流程图+审批记录 ②每种操作有独立的确认弹窗 ③驳回原因必填 ④操作成功后列表实时更新
US-03作为审批人,我希望能批量处理同类任务①支持批量通过(限同类型流程)、批量转办、批量催办 ②每次最多50条 ③操作结果逐条反馈
US-04作为部门负责人,我希望看到团队审批效率统计①概览卡片展示待办数/今日新增/今日完成/超时数/平均时长 ②支持部门/流程类型/时间范围筛选 ③效率排行可下钻到个人
US-05作为管理员,我希望能配置自动催办规则①可设置超时阈值、催办间隔、最大催办次数 ②可指定适用流程和部门 ③规则支持启用/禁用 ④自动催办每30分钟执行
US-06作为审批人,我希望能查看已办任务记录①展示审批动作、意见摘要、处理耗时 ②支持按动作类型和时间筛选 ③点击可查看详情
US-07作为管理员,我希望能导出统计报表①支持导出为Excel ②包含概览数据和排行数据 ③1000条数据内5秒完成

三、功能需求

3.1 待办任务列表

3.1.1 功能描述

待办任务列表是审批人的"工作台"——打开这个页面,就能看到所有等着自己审批的任务。表格展示任务名称、所属流程、发起人、到达时间、停留时长、紧急程度等关键信息。支持多维度筛选、关键字搜索和批量操作。

与「我的流程」的区别:「我的流程」(03-03)是普通员工看的,用的是 /app-api/ 接口;这里是管理端审批人看的,用的是 /admin-api/ 接口,管理员还可以通过指定审批人ID查看别人的待办。

3.1.2 页面结构

待办任务列表

3.1.3 操作流程

1. 用户进入「待办管理」页面
2. 默认展示「待办任务」Tab,以表格形式展示当前用户所有待处理任务
3. 列表展示字段:复选框、任务名称、所属流程、发起人、发起部门、到达时间、停留时长、紧急程度、操作
4. 停留时长超过配置阈值(默认24小时)的任务行标红提醒
5. 紧急程度根据停留时长自动计算:
   - 停留 < 12小时 → 普通(蓝色标签)
   - 12~24小时 → 紧急(橙色标签)
   - > 24小时 → 特急(红色标签)
6. 用户可通过顶部筛选栏进行多维度筛选:
   a. 流程类型下拉选择
   b. 发起人搜索(姓名模糊匹配)
   c. 时间范围选择(到达时间)
   d. 紧急程度筛选
   e. 超时状态筛选(全部/已超时/未超时)
7. 用户可在搜索框输入关键字搜索(任务名称、流程名称)
8. 用户可勾选多个任务进行批量操作:
   a. 批量通过(需所有选中任务属于同一流程类型,填写统一审批意见)
   b. 批量转办(选择目标人后批量转移,不限流程类型)
   c. 批量催办(向每个任务的发起人发送催办通知)
9. 单条操作列包含:审批、查看详情
10. 点击任务名称或「审批」按钮进入审批操作面板
11. 列表支持分页,默认每页 10 条
12. 列表按到达时间升序排列(最早的排最前面)

3.1.4 业务规则

规则编号规则描述设计原因
R-01仅展示当前登录用户作为审批人的待处理任务数据隔离基本要求,审批人只看自己的活
R-02列表默认按任务到达时间升序排列先来的先处理,避免早期任务被遗忘
R-03停留时长 = 当前时间 - 任务到达时间,前端实时刷新(格式:X天X小时X分)让审批人直观感受任务紧急程度
R-04停留时长超过超时阈值(默认24小时)的任务行背景标红视觉冲击提醒审批人优先处理
R-05紧急程度默认规则:停留 < 12小时=普通,12~24小时=紧急,> 24小时=特急用颜色分级帮助审批人排优先级
R-06批量通过要求所有选中任务属于同一流程类型不同流程的审批表单不同,无法统一填写意见
R-07批量转办不限制流程类型,统一转移到指定目标人转办不涉及审批内容,只需指定接收人
R-08批量操作每次最多选择 50 条任务防止一次性操作过多导致系统压力和数据错误
R-09当待办任务数量变化时,页面顶部的待办数量角标实时更新让审批人随时知道有没有新任务进来
R-10支持键盘快捷键:Space 全选/取消全选,Enter 进入审批提升高频用户的操作效率

3.1.5 接口列表

接口名称请求方式接口路径说明
获取待办任务分页列表GET/admin-api/bpm/todo/page分页查询待办任务列表(管理端)
获取待办任务数量统计GET/admin-api/bpm/todo/count获取待办任务总数
获取待办任务筛选条件GET/admin-api/bpm/todo/filter-options获取筛选器下拉选项
批量通过任务PUT/admin-api/bpm/todo/batch-approve批量审批通过
批量转办任务PUT/admin-api/bpm/todo/batch-transfer批量转办任务
批量催办任务POST/admin-api/bpm/todo/batch-urge批量催办任务

请求参数(分页查询):

参数名类型必填说明
processNameString流程名称(模糊匹配)
processDefinitionKeyString流程定义标识
taskNameString任务名称(模糊匹配)
originatorUserIdLong发起人用户ID
originatorNameString发起人姓名(模糊匹配)
categoryString流程分类标识
urgencyLevelInteger紧急程度(1-普通 2-紧急 3-特急)
isTimeoutBoolean是否超时
createTimeDateTime[]任务到达时间范围
assigneeUserIdLong审批人用户ID(管理员可指定,用于查看他人的待办)
pageNoInteger页码(默认1)
pageSizeInteger每页条数(默认10,最大50)

返回结果(分页列表项):

字段名类型说明
taskIdString任务ID
taskNameString任务名称
processInstanceIdLong流程实例ID
processNameString流程名称
processDefinitionKeyString流程定义标识
categoryString流程分类名称
originatorUserIdLong发起人ID
originatorNameString发起人姓名
originatorDeptNameString发起人部门
formDataJSON表单摘要数据
assigneeUserIdLong审批人ID
assigneeNameString审批人姓名
createTimeDateTime任务到达时间
durationLong停留时长(毫秒)
durationTextString停留时长文本(如"2天3小时")
urgencyLevelInteger紧急程度(1-普通 2-紧急 3-特急)
isTimeoutBoolean是否超时
suspensionInteger是否挂起(0-正常 1-挂起)

3.2 任务审批

3.2.1 功能描述

任务审批是审批人的"工具箱"——打开审批面板,左边看详情(表单数据、流程图、审批记录),右边做操作(通过、驳回、退回、转办、委派、加签、减签)。每种操作都有独立的确认弹窗,避免误操作。

与「我的流程-待我审批」的关系:03-03 里的「待我审批」是普通用户视角,功能相同但界面更简洁;这里的审批面板是管理端视角,额外支持管理员查看任意审批人的任务详情。

3.2.2 页面结构

审批操作面板

3.2.3 操作流程

审批通过:

1. 审批人审阅左侧任务详情(表单数据、附件)
2. 点击「通过」按钮
3. 填写审批意见(可选)
4. 上传审批附件(可选,最多5个,单个≤10MB)
5. 点击「确认提交」
6. 系统校验操作合法性(是否为当前任务审批人、任务是否已被处理)
7. 流程流转到下一节点
8. 系统通知下一节点审批人
9. 提示操作成功,返回待办列表

审批驳回:

1. 审批人点击「驳回」按钮
2. 弹出驳回对话框,选择驳回方式:
   a. 驳回到发起人 —— 流程从头开始,发起人修改后可重新提交
   b. 驳回到上一节点 —— 流程退回到紧邻的前一个审批节点
   c. 驳回到指定节点 —— 弹出节点选择器,选择任意历史节点
3. 填写驳回原因(必填,最大500字符)
4. 上传附件(可选,如问题截图等)
5. 点击「确认驳回」
6. 流程退回到指定位置
7. 系统通知相关人员(发起人/目标节点审批人)
8. 提示操作成功

退回操作:

1. 审批人点击「退回」按钮
2. 系统展示可退回的历史节点列表(已完成的前序节点)
3. 审批人选择退回目标节点
4. 填写退回原因(必填)
5. 点击「确认退回」
6. 流程退回到目标节点,目标节点原审批人需重新审批
7. 目标节点审批人收到待办通知

退回 vs 驳回的区别:驳回是"打回给发起人"或"打回给上一级",偏向否定申请;退回是"退回到之前某个节点重新审",偏向流程回退。退回的目标节点范围更广(任意已完成节点),驳回更聚焦(发起人/上一节点/指定节点)。

转办操作:

1. 审批人点击「转办」按钮
2. 弹出候选人选择器(支持搜索姓名、按部门树筛选)
3. 选择转办目标人
4. 填写转办说明(可选)
5. 点击「确认转办」
6. 任务从原审批人待办列表消失,出现在目标人待办列表
7. 原审批人已办记录中标记"已转办给XXX"
8. 目标人收到待办通知

委派操作:

1. 审批人点击「委派」按钮
2. 弹出候选人选择器
3. 选择委派目标人
4. 设置委派期限(天数,可选,到期系统自动提醒)
5. 填写委派说明(可选)
6. 点击「确认委派」
7. 任务临时转移到被委派人(任务状态变为"已委派")
8. 被委派人处理完成后,任务自动返回原审批人
9. 原审批人查看委派结果后做最终确认(通过/驳回)

委派 vs 转办的区别:转办是"这个活归你了",任务完全转移,原审批人不再参与;委派是"你先帮我看看,最后我来拍板",任务临时转移,处理后还要回来。

加签操作:

1. 审批人点击「加签」按钮
2. 选择加签方式:
   a. 前加签 —— 加签人先审,审完回到原审批人
   b. 后加签 —— 原审批人先审,然后流转到加签人
3. 弹出加签人员选择器(支持选多人)
4. 设置审批方式:会签(所有人都要通过)/ 或签(任一通过即可)
5. 填写加签说明(可选)
6. 点击「确认加签」
7. 系统生成加签任务,加签人员收到待办通知

前加签 vs 后加签:前加签像"请专家先把关"——技术总监先看,看完回到你这;后加签像"我审完了你再看"——你先通过,然后加签人再审。

减签操作:

1. 审批人点击「减签」按钮
2. 系统展示当前任务链中可减掉的任务列表(仅加签产生的任务)
3. 审批人勾选需要减掉的任务
4. 填写减签说明(可选)
5. 点击「确认减签」
6. 被减签的任务自动关闭,加签人收到任务取消通知

减签限制:只能减掉加签产生的任务,不能减掉流程定义中的原始审批节点。这是为了保护流程设计的完整性。

3.2.4 审批操作速查表

操作通俗解释任务去向原审批人是否还参与
通过"我同意往下走"流转到下一节点不再参与
驳回"不行,退回去"退回到发起人/上一节点/指定节点不再参与
退回"退回到之前某个节点重审"退回到指定历史节点不再参与
转办"这个不归我管,交给XX"完全转移给目标人不再参与
委派"你先帮我看,最后我来拍板"临时给被委派人,处理后返回最终确认
前加签"请专家先把关"加签人先审,然后回到原审批人最终审批
后加签"我审完了你再看"原审批人通过后,加签人再审已通过
减签"不需要XX审了"关闭加签任务不影响

3.2.5 业务规则

规则编号规则描述设计原因
R-01审批操作仅当前任务分配的审批人可执行防止越权审批
R-02通过操作后流程自动流转到下一节点审批流转的基本逻辑
R-03驳回原因必填,最大长度 500 字符驳回必须说明原因,发起人才能修改
R-04转办后原审批人不再参与该任务转办=完全移交,避免职责不清
R-05委派期限到期后系统自动提醒被委派人处理防止委派任务被遗忘
R-06前加签:加签人员审批完后回到原审批人保证原审批人的最终审批权
R-07加签支持多人同时加签,支持会签和或签覆盖"所有人同意"和"任一同意即可"两种场景
R-08减签只能减掉加签产生的任务保护流程定义的完整性
R-09退回操作可将流程退回到之前任意已完成的历史节点比驳回更灵活的回退方式
R-10审批附件最多上传 5 个,单个文件不超过 10MB控制存储成本,同时满足审批证据需求
R-11审批操作提交后不可撤回保证审批流程的严肃性和可追溯性
R-12多人会签任务需所有审批人全部通过才能流转会签=全员同意
R-13多人或签任务任一审批人通过即可流转或签=任一同意
R-14审批操作需做幂等性校验,防止网络异常导致重复提交避免用户双击按钮导致流程流转两次
R-15候选人选择器展示范围:同租户下当前用户可操作的用户数据隔离 + 权限控制

3.2.6 接口列表

接口名称请求方式接口路径说明
获取任务审批详情GET/admin-api/bpm/task/detail获取任务详情和审批面板数据
审批通过PUT/admin-api/bpm/task/approve审批通过操作
审批驳回PUT/admin-api/bpm/task/reject审批驳回操作
退回任务PUT/admin-api/bpm/task/return退回到指定历史节点
转办任务PUT/admin-api/bpm/task/transfer转办任务给其他用户
委派任务PUT/admin-api/bpm/task/delegate委派任务给其他用户
前加签POST/admin-api/bpm/task/before-add-sign前加签操作
后加签POST/admin-api/bpm/task/after-add-sign后加签操作
减签DELETE/admin-api/bpm/task/subtract-sign减签操作
获取可退回节点列表GET/admin-api/bpm/task/return-nodes获取可退回的历史节点
获取候选人列表GET/admin-api/bpm/task/candidates获取可转办/委派/加签的候选人

任务审批详情返回结果:

字段名类型说明
taskIdString任务ID
taskNameString任务名称
taskDefinitionKeyString任务节点定义Key
processInstanceIdLong流程实例ID
processNameString流程名称
processDefinitionKeyString流程定义标识
originatorNameString发起人姓名
originatorDeptNameString发起人部门
formDataJSON表单完整数据
processImageString流程图URL
approvalTimelineList审批记录时间线
availableActionsList<String>当前可用审批操作列表
canReturnNodesList<Node>可退回节点列表
canSubtractTasksList<Task>可减签任务列表
attachmentsList<Attachment>流程附件列表

审批通过请求参数:

参数名类型必填说明
taskIdString任务ID
commentString审批意见
attachmentIdsList<Long>审批附件ID列表
variablesMap<String, Object>流程变量

审批驳回请求参数:

参数名类型必填说明
taskIdString任务ID
commentString驳回原因
rejectTypeInteger驳回类型(1-驳回到发起人 2-驳回到上一节点 3-驳回到指定节点)
targetActivityIdString驳回到指定节点ID(rejectType=3时必填)

退回请求参数:

参数名类型必填说明
taskIdString任务ID
targetActivityIdString退回目标节点ID
commentString退回原因

转办请求参数:

参数名类型必填说明
taskIdString任务ID
targetUserIdLong目标用户ID
commentString转办说明

委派请求参数:

参数名类型必填说明
taskIdString任务ID
targetUserIdLong目标用户ID
commentString委派说明
delegateDaysInteger委派期限天数

加签请求参数:

参数名类型必填说明
taskIdString任务ID
userIdsList<Long>加签用户ID列表
commentString加签说明
approveTypeInteger加签审批方式(1-会签 2-或签)

减签请求参数:

参数名类型必填说明
taskIdString要减签的任务ID
commentString减签说明

3.3 已办任务

3.3.1 功能描述

已办任务列表是审批人的"工作日志"——回顾自己处理过哪些审批、给了什么意见、花了多长时间。只读展示,不可操作。

3.3.2 页面结构

已办任务列表

3.3.3 操作流程

1. 用户进入「待办管理」页面,切换到「已办任务」Tab
2. 展示当前用户已处理的所有审批任务(分页)
3. 列表展示字段:任务名称、流程名称、发起人、审批动作、审批意见摘要、审批时间、处理耗时
4. 用户可通过顶部筛选栏筛选:
   a. 流程类型下拉选择
   b. 审批动作类型筛选(通过/驳回/转办/委派/退回)
   c. 发起人搜索
   d. 完成时间范围选择
5. 用户可在搜索框输入关键字搜索(流程名称、发起人姓名)
6. 点击某条记录可查看审批详情:
   a. 流程表单数据(只读)
   b. 完整审批记录时间线
   c. 自己的审批意见和附件
7. 列表按审批完成时间倒序排列
8. 默认每页 10 条

3.3.4 业务规则

规则编号规则描述设计原因
R-01仅展示当前用户已处理的任务数据隔离
R-02列表按审批完成时间倒序排列最近处理的排在前面,方便查找
R-03支持按审批动作类型筛选快速定位特定类型的审批记录
R-04已办记录为只读展示,不可进行任何操作历史数据不可修改,保证审计完整性
R-05审批意见摘要截取前 50 个字符展示列表简洁,详情里看完整版
R-06处理耗时格式:< 1小时显示"X分钟",≥ 1小时显示"X小时X分钟"人性化展示

3.3.5 接口列表

接口名称请求方式接口路径说明
获取已办任务分页列表GET/admin-api/bpm/done/page分页查询已办任务列表
获取已办任务详情GET/admin-api/bpm/done/detail获取已办任务详细信息

请求参数(分页查询):

参数名类型必填说明
processNameString流程名称(模糊匹配)
processDefinitionKeyString流程定义标识
actionString审批动作(approve/reject/transfer/delegate/return)
originatorNameString发起人姓名(模糊匹配)
endTimeDateTime[]审批完成时间范围
pageNoInteger页码(默认1)
pageSizeInteger每页条数(默认10)

返回结果(分页列表项):

字段名类型说明
taskIdString任务ID
taskNameString任务名称
processInstanceIdLong流程实例ID
processNameString流程名称
originatorNameString发起人姓名
originatorDeptNameString发起人部门
actionString审批动作标识
actionLabelString审批动作标签
commentString审批意见摘要
startTimeDateTime任务开始时间
endTimeDateTime任务完成时间
durationLong处理耗时(毫秒)
durationTextString处理耗时文本

3.4 任务统计

3.4.1 功能描述

任务统计是管理者的"效率仪表盘"——用数据回答三个问题:谁审批最慢?哪个流程卡得最多?超时率有多高? 通过概览卡片、趋势图表和效率排行三个层次,帮助管理者发现审批瓶颈、督促改进。

数据来源说明:概览卡片的数据是实时计算的;图表和排行数据通过定时任务每小时预计算一次,结果缓存到 Redis 中,避免每次都做大量聚合查询影响性能。

3.4.2 页面结构

任务统计看板

3.4.3 操作流程

1. 管理者进入「任务统计」页面
2. 页面顶部展示统计概览卡片:
   a. 当前待办总数(数字卡片)
   b. 今日新增待办(数字卡片)
   c. 今日已完成数(数字卡片)
   d. 超时任务数(数字卡片,红色高亮)
   e. 平均处理时长(数字卡片)
3. 页面中部展示图表区域:
   a. 待办数量趋势图(折线图,近7天/30天)
   b. 流程类型分布图(饼图,各流程类型待办占比)
   c. 平均处理时长对比图(柱状图,按流程类型对比)
   d. 超时率趋势图(折线图,近7天/30天超时率变化)
4. 页面下部展示效率排行:
   a. 部门效率排行(平均处理时长从短到长)
   b. 个人效率排行(平均处理时长从短到长)
   c. 超时排行(超时次数从多到少)
5. 支持切换时间范围:近7天/近30天/近90天/自定义
6. 支持按部门、流程类型筛选
7. 点击排行中的具体人员可跳转查看该人员的待办列表

3.4.4 业务规则

规则编号规则描述设计原因
R-01统计范围默认为当前用户所管理部门及下级部门管理者只看自己管得到的范围
R-02系统管理员可查看全平台统计数据全局视角
R-03平均处理时长 = 所有已完成任务的总耗时 / 已完成任务数量简单平均值,直观易懂
R-04超时率 = 超时任务数 / 总任务数 × 100%衡量流程健康度的核心指标
R-05超时阈值由流程设计时配置的超时规则决定不同流程的超时标准不同
R-06效率排行仅展示有审批记录的人员没有数据不展示
R-07图表和排行数据每小时更新一次(定时任务预计算 + Redis 缓存)避免实时聚合查询拖垮数据库
R-08概览卡片数据实时计算,不依赖定时任务管理者看到的"当前待办数"必须是实时的
R-09排行数据最多展示 Top 20避免列表过长
R-10统计报表支持导出为 Excel管理者需要拿去开会汇报

3.4.5 接口列表

接口名称请求方式接口路径说明
获取统计概览GET/admin-api/bpm/statistics/overview获取统计概览卡片数据
获取待办趋势GET/admin-api/bpm/statistics/todo-trend获取待办数量趋势数据
获取流程分布GET/admin-api/bpm/statistics/process-distribution获取流程类型分布数据
获取处理时长对比GET/admin-api/bpm/statistics/duration-compare获取各流程平均处理时长对比
获取超时率趋势GET/admin-api/bpm/statistics/timeout-trend获取超时率趋势数据
获取部门效率排行GET/admin-api/bpm/statistics/dept-rank获取部门效率排行数据
获取个人效率排行GET/admin-api/bpm/statistics/user-rank获取个人效率排行数据
获取超时排行GET/admin-api/bpm/statistics/timeout-rank获取超时排行数据
导出统计报表GET/admin-api/bpm/statistics/export导出统计报表为Excel

请求参数(统计概览):

参数名类型必填说明
deptIdLong部门ID(不传则查全部)
processDefinitionKeyString流程定义标识

返回结果(统计概览):

字段名类型说明
todoCountInteger当前待办总数
todayNewCountInteger今日新增待办数
todayDoneCountInteger今日已完成数
timeoutCountInteger超时任务数
avgDurationLong平均处理时长(毫秒)
avgDurationTextString平均处理时长文本
timeoutRateDouble超时率(百分比)

请求参数(趋势/排行类接口通用):

参数名类型必填说明
deptIdLong部门ID
processDefinitionKeyString流程定义标识
timeRangeString时间范围(7d/30d/90d/custom)
startTimeDateTime自定义开始时间
endTimeDateTime自定义结束时间
topNInteger排行数量(默认10,最大20)

返回结果(个人效率排行):

字段名类型说明
userIdLong用户ID
userNameString用户姓名
deptNameString所属部门
totalTasksInteger总审批任务数
completedTasksInteger已完成任务数
avgDurationLong平均处理时长(毫秒)
avgDurationTextString平均处理时长文本
timeoutCountInteger超时任务数
timeoutRateDouble超时率
rankInteger排名

3.5 催办管理

3.5.1 功能描述

催办管理是流程停滞时的"闹钟系统"——分两种模式:

  • 手动催办:管理员或发起人看到某个任务卡住了,手动发一条催办通知
  • 自动催办:配置好规则后,系统每30分钟自动检查,发现超时任务就自动发通知

通知渠道支持站内信、邮件、短信三种,可以单选也可以组合。

3.5.2 页面结构

催办管理页面

3.5.3 操作流程

手动催办:

1. 管理员或流程发起人在待办列表/流程详情中点击「催办」按钮
2. 弹出催办对话框
3. 选择催办通知方式(可多选):站内信 / 邮件 / 短信
4. 填写催办消息内容(默认模板:"您有一条待审批任务【{流程名称}】已等待{停留时长},请尽快处理")
5. 点击「发送催办」
6. 系统向当前审批人发送催办通知
7. 系统记录催办日志
8. 提示操作成功

自动催办规则配置:

1. 管理员进入「催办管理」→ 点击「催办规则配置」
2. 点击「新建规则」
3. 配置自动催办触发条件:
   a. 规则名称(如"通用超时催办")
   b. 停留时长阈值(如超过24小时自动催办)
   c. 催办频率限制(如每12小时最多催办一次)
   d. 最大催办次数(如最多催办3次)
   e. 催办通知方式(站内信/邮件/短信)
   f. 催办消息模板(支持变量替换)
4. 配置催办适用范围:
   a. 全部流程 / 指定流程类型
   b. 全部部门 / 指定部门
5. 保存并启用规则
6. 系统定时任务(每30分钟)根据规则自动执行催办

自动催办执行逻辑:每30分钟,系统扫描所有待处理任务 → 匹配催办规则(流程类型+部门+超时阈值)→ 检查该任务已催办次数是否达到上限 → 检查距上次催办是否超过间隔 → 满足条件则发送催办通知 → 记录催办日志。

3.5.4 业务规则

规则编号规则描述设计原因
R-01手动催办操作人可以是:流程发起人、流程管理员、系统管理员这三类人有合理的催办诉求
R-02同一流程同一审批人手动催办频率限制:10分钟内最多1次防止频繁催办造成骚扰
R-03催办通知渠道支持单选或多选:站内信、邮件、短信不同紧急程度用不同渠道组合
R-04催办消息模板支持变量替换:{流程名称}、{停留时长}、{发起人}、消息内容自动填充,减少手动输入
R-05每条催办操作记录完整日志催办有据可查
R-06自动催办规则由系统定时任务执行(默认每30分钟检查一次)平衡实时性和系统性能
R-07自动催办最大催办次数达到后不再自动催办,需人工干预防止无限催办,超过上限说明需要升级处理
R-08催办通知发送失败时记录失败日志,不影响其他催办操作单条失败不阻塞整体
R-09催办记录不可删除,保留完整催办历史审计需要
R-10自动催办规则支持启用/禁用切换临时调整不需要删除规则

3.5.5 接口列表

接口名称请求方式接口路径说明
发送手动催办POST/admin-api/bpm/urge/send手动发送催办通知
获取催办记录分页GET/admin-api/bpm/urge/page分页查询催办记录
获取催办记录详情GET/admin-api/bpm/urge/detail获取催办记录详细信息
获取催办规则列表GET/admin-api/bpm/urge/rule/list获取自动催办规则列表
创建催办规则POST/admin-api/bpm/urge/rule/create创建自动催办规则
更新催办规则PUT/admin-api/bpm/urge/rule/update更新自动催办规则
删除催办规则DELETE/admin-api/bpm/urge/rule/delete删除自动催办规则
启用/禁用催办规则PUT/admin-api/bpm/urge/rule/status切换催办规则启用状态

手动催办请求参数:

参数名类型必填说明
taskIdString任务ID
notifyChannelsList<Integer>通知渠道(1-站内信 2-邮件 3-短信)
messageString催办消息(不填则使用默认模板)

催办记录分页请求参数:

参数名类型必填说明
taskIdString任务ID
urgedUserIdLong被催办人ID
urgeUserIdLong催办人ID
notifyChannelInteger通知渠道
createTimeDateTime[]催办时间范围
pageNoInteger页码(默认1)
pageSizeInteger每页条数(默认10)

催办记录返回结果:

字段名类型说明
idLong催办记录ID
taskIdString任务ID
taskNameString任务名称
processInstanceIdLong流程实例ID
processNameString流程名称
urgeUserIdLong催办人ID
urgeUserNameString催办人姓名
urgedUserIdLong被催办人ID
urgedUserNameString被催办人姓名
notifyChannelsList<Integer>通知渠道列表
messageString催办消息内容
urgeTypeInteger催办类型(1-手动催办 2-自动催办)
sendStatusInteger发送状态(1-成功 2-部分失败 3-失败)
createTimeDateTime催办时间

创建催办规则请求参数:

参数名类型必填说明
nameString规则名称
timeoutThresholdInteger超时阈值(小时)
urgeIntervalInteger催办间隔(小时)
maxUrgeCountInteger最大催办次数
notifyChannelsList<Integer>通知渠道
messageTemplateString催办消息模板
processDefinitionKeysList<String>适用流程标识(不传则全部)
deptIdsList<Long>适用部门ID(不传则全部)
enabledBoolean是否启用

四、非功能需求

4.1 性能要求

指标目标值说明
待办任务列表查询< 500ms审批人打开页面不能等
任务审批操作< 500ms点击通过后要快速反馈
已办任务列表查询< 500ms同待办列表
统计概览查询< 1s概览卡片实时计算,1秒内返回
统计图表加载< 2s图表数据来自 Redis 缓存
统计报表导出< 5s(1000条内)异步导出 + 下载通知
催办通知发送< 5s(站内信)、< 10s(邮件/短信)站内信走 WebSocket 实时推送
批量操作< 3s(50条内)批量通过/转办/催办
待办数量角标更新< 2s新任务到达后角标及时变化
并发审批200 并发通过乐观锁 + 幂等校验保证数据一致性

4.2 安全要求

要求实现方式
审批数据隔离审批人只能查看和操作分配给自己的待办任务,通过 assignee_id 过滤
操作权限校验每次审批操作校验操作人是否为当前任务分配人,防止越权
部门数据隔离管理者仅可查看所管理部门及下级部门的统计数据
操作审计所有审批和催办操作记录到操作日志(操作人、时间、动作、IP、详情)
幂等性保证审批操作通过唯一请求ID做幂等校验,防止网络异常导致重复提交
催办频率限制手动催办10分钟内同一任务同一审批人限1次,通过 Redis 计数器实现
批量操作鉴权批量操作需校验操作人是否有对应权限标识
催办内容审核自定义催办消息内容需过滤敏感词
统计报表导出权限导出需具备 bpm:statistics:export 权限

4.3 兼容性要求

要求
PC浏览器Chrome 80+、Firefox 75+、Safari 13+、Edge 80+
移动端浏览器iOS Safari 12+、Android Chrome 80+
移动端适配审批操作面板支持移动端自适应布局(表单纵向排列、操作按钮底部固定)
分辨率适配最小支持 1280×720,推荐 1920×1080
图表兼容性统计图表使用 ECharts,支持主流浏览器 Canvas/SVG 渲染
消息通知兼容站内信(WebSocket 实时推送)、邮件(SMTP)、短信(第三方网关)

五、数据设计

5.1 任务表(bpm_task)

本表是审批任务的核心表,同时服务于待办列表、已办列表、任务审批、任务统计等子功能。

字段名类型约束说明
idVARCHAR(64)PK任务ID(主键,Flowable 生成)
nameVARCHAR(128)NOT NULL任务名称
descriptionVARCHAR(512)任务描述
process_instance_idBIGINTNOT NULL, FK关联的流程实例ID
process_definition_idVARCHAR(64)NOT NULL流程定义ID
process_definition_keyVARCHAR(64)NOT NULL流程定义标识
task_definition_keyVARCHAR(64)NOT NULL任务节点定义Key
assignee_idBIGINT实际审批人ID
assignee_nameVARCHAR(64)实际审批人姓名
owner_idBIGINT任务拥有者ID(委派场景下的原审批人)
owner_nameVARCHAR(64)任务拥有者姓名
statusTINYINTNOT NULL, DEFAULT 0任务状态(0-待处理 1-已完成 2-已取消 3-已转办 4-已委派 5-已退回)
actionVARCHAR(32)审批动作(approve/reject/transfer/delegate/return/empty)
commentVARCHAR(500)审批意见
form_dataJSON任务节点表单数据
is_timeoutBITDEFAULT 0是否超时(0-否 1-是)
timeout_ruleVARCHAR(256)超时规则配置
urgency_levelTINYINTDEFAULT 1紧急程度(1-普通 2-紧急 3-特急)
source_task_idVARCHAR(64)来源任务ID(加签/转办/委派场景)
sign_typeTINYINTDEFAULT 0加签类型(0-非加签 1-前加签 2-后加签)
start_timeDATETIMENOT NULL任务开始时间
claim_timeDATETIME任务签收时间
end_timeDATETIME任务完成时间
durationBIGINT任务耗时(毫秒)
tenant_idBIGINTNOT NULL租户ID
creatorVARCHAR(64)创建者
create_timeDATETIMENOT NULL创建时间
updaterVARCHAR(64)更新者
update_timeDATETIMENOT NULL更新时间
deletedBITDEFAULT 0删除标记(0-未删除 1-已删除)

索引设计:

索引名字段类型说明
idx_assignee_statusassignee_id, status普通索引按审批人和状态查询待办(最高频查询)
idx_process_instanceprocess_instance_id普通索引按流程实例查关联任务
idx_create_timecreate_time普通索引按创建时间排序查询
idx_status_timeoutstatus, is_timeout普通索引按状态和超时筛选

5.2 任务分配表(bpm_task_assign)

记录每个任务的审批人分配信息。会签/或签场景下一个任务可能有多条分配记录。

字段名类型约束说明
idBIGINTPK, AUTO_INCREMENT分配记录ID
task_idVARCHAR(64)NOT NULL, FK关联的任务ID
user_idBIGINT被分配用户ID
user_nameVARCHAR(64)被分配用户姓名
dept_idBIGINT被分配用户部门ID
dept_nameVARCHAR(128)被分配用户部门名称
assign_typeTINYINTNOT NULL分配类型(1-指定用户 2-角色 3-部门 4-岗位 5-候选人组)
assign_statusTINYINTDEFAULT 0分配状态(0-待签收 1-已签收 2-已拒绝)
sort_orderINTDEFAULT 0排序号(多候选人时)
remarkVARCHAR(256)分配说明
tenant_idBIGINTNOT NULL租户ID
creatorVARCHAR(64)创建者
create_timeDATETIMENOT NULL创建时间
updaterVARCHAR(64)更新者
update_timeDATETIMENOT NULL更新时间
deletedBITDEFAULT 0删除标记

索引设计:

索引名字段类型说明
idx_task_idtask_id普通索引按任务查分配记录
idx_user_iduser_id, assign_status普通索引按用户查分配的待办

5.3 任务抄送表(bpm_task_copy)

字段名类型约束说明
idBIGINTPK, AUTO_INCREMENT抄送记录ID
process_instance_idBIGINTNOT NULL, FK关联的流程实例ID
task_idVARCHAR(64)FK关联的任务ID
task_nameVARCHAR(128)抄送来源节点名称
process_definition_idVARCHAR(64)流程定义ID
originator_idBIGINT流程发起人ID
originator_nameVARCHAR(64)流程发起人姓名
copy_user_idBIGINTNOT NULL被抄送人ID
copy_user_nameVARCHAR(64)被抄送人姓名
copy_dept_idBIGINT被抄送人部门ID
operator_idBIGINT抄送操作人ID
operator_nameVARCHAR(64)抄送操作人姓名
copy_typeTINYINTNOT NULL抄送类型(1-自动抄送 2-手动抄送)
copy_reasonVARCHAR(500)抄送说明
read_statusTINYINTDEFAULT 0已读状态(0-未读 1-已读)
read_timeDATETIME已读时间
tenant_idBIGINTNOT NULL租户ID
creatorVARCHAR(64)创建者
create_timeDATETIMENOT NULL创建时间
updaterVARCHAR(64)更新者
update_timeDATETIMENOT NULL更新时间
deletedBITDEFAULT 0删除标记

5.4 催办记录表(bpm_task_urge)

字段名类型约束说明
idBIGINTPK, AUTO_INCREMENT催办记录ID
task_idVARCHAR(64)NOT NULL, FK关联的任务ID
task_nameVARCHAR(128)任务名称
process_instance_idBIGINTNOT NULL关联的流程实例ID
process_nameVARCHAR(128)流程名称
urge_user_idBIGINTNOT NULL催办人ID
urge_user_nameVARCHAR(64)催办人姓名
urged_user_idBIGINTNOT NULL被催办人ID
urged_user_nameVARCHAR(64)被催办人姓名
notify_channelsVARCHAR(128)NOT NULL通知渠道(逗号分隔:1-站内信 2-邮件 3-短信)
messageVARCHAR(500)催办消息内容
urge_typeTINYINTNOT NULL催办类型(1-手动催办 2-自动催办)
send_statusTINYINTDEFAULT 1发送状态(1-成功 2-部分失败 3-失败)
fail_reasonVARCHAR(500)发送失败原因
tenant_idBIGINTNOT NULL租户ID
creatorVARCHAR(64)创建者
create_timeDATETIMENOT NULL催办时间
updaterVARCHAR(64)更新者
update_timeDATETIMENOT NULL更新时间
deletedBITDEFAULT 0删除标记

5.5 催办规则表(bpm_urge_rule)

字段名类型约束说明
idBIGINTPK, AUTO_INCREMENT规则ID
nameVARCHAR(128)NOT NULL规则名称
timeout_thresholdINTNOT NULL超时阈值(小时)
urge_intervalINTNOT NULL催办间隔(小时)
max_urge_countINTNOT NULL, DEFAULT 3最大催办次数
notify_channelsVARCHAR(128)NOT NULL通知渠道(逗号分隔)
message_templateVARCHAR(500)催办消息模板
process_definition_keysVARCHAR(1024)适用流程标识(逗号分隔,空为全部)
dept_idsVARCHAR(1024)适用部门ID(逗号分隔,空为全部)
enabledBITDEFAULT 1是否启用(0-禁用 1-启用)
last_urge_timeDATETIME上次执行催办时间
tenant_idBIGINTNOT NULL租户ID
creatorVARCHAR(64)创建者
create_timeDATETIMENOT NULL创建时间
updaterVARCHAR(64)更新者
update_timeDATETIMENOT NULL更新时间
deletedBITDEFAULT 0删除标记

5.6 数据字典

字典类型字典值说明
bpm_task_status0-待处理 1-已完成 2-已取消 3-已转办 4-已委派 5-已退回任务状态
bpm_task_actionapprove-通过 reject-驳回 transfer-转办 delegate-委派 return-退回 empty-自动流转审批动作
bpm_task_urgency_level1-普通 2-紧急 3-特急紧急程度
bpm_task_sign_type0-非加签 1-前加签 2-后加签加签类型
bpm_task_assign_type1-指定用户 2-角色 3-部门 4-岗位 5-候选人组任务分配类型
bpm_task_assign_status0-待签收 1-已签收 2-已拒绝分配状态
bpm_urge_type1-手动催办 2-自动催办催办类型
bpm_urge_notify_channel1-站内信 2-邮件 3-短信催办通知渠道
bpm_urge_send_status1-成功 2-部分失败 3-失败催办发送状态

5.7 任务状态流转

任务状态流转图

状态转换条件:

当前状态目标状态触发条件操作人
待处理已完成审批通过/驳回审批人
待处理已转办转办操作审批人
待处理已委派委派操作审批人
待处理已取消流程撤销/管理员终止发起人/管理员
待处理已退回退回操作审批人
已委派已完成被委派人处理完毕,返回原审批人被委派人

六、跨模块联动

6.1 联动关系总览

关联模块联动方式数据流向说明
流程设计(03-01)读取流程定义03-01 → 本模块审批面板的流程图、超时阈值、审批人配置均来自流程设计
流程管理(03-02)管理端流程操作双向管理员在03-02终止流程 → 本模块待办任务自动取消;本模块的审批操作影响03-02的流程状态
我的流程(03-03)用户端对应双向本模块的审批操作 → 03-03的流程进度更新;03-03的催办 → 本模块生成催办记录
通知模块发送通知本模块 → 通知模块审批结果通知、催办通知、委派提醒等通过通知模块统一发送
用户管理(01-01)读取用户信息01-01 → 本模块审批人/发起人/候选人的姓名、部门、头像等来自用户管理
部门管理(01-02)读取部门信息01-02 → 本模块任务统计的部门维度数据、候选人选择器的部门树来自部门管理
角色管理(01-03)读取角色信息01-03 → 本模块任务分配的角色匹配、候选人选择器的角色筛选
日志审计(01-08)写入操作日志本模块 → 01-08所有审批操作、催办操作记录到操作日志
文件存储附件管理本模块 → 文件存储审批附件、驳回证据附件的上传和下载

6.2 关键联动流程

审批操作 → 多模块状态同步:

审批操作多模块联动

管理员终止流程 → 待办任务清理:

终止流程待办清理

自动催办执行流程:

自动催办执行流程

6.3 数据一致性要求

场景一致性要求实现方式
审批操作与流程状态审批通过后流程必须流转到下一节点事务内同步调用 Flowable API,失败则回滚
转办与待办列表转办后原审批人待办立刻消失事务内更新 assignee_id,WebSocket 通知前端刷新
催办记录与通知发送催办记录写入和通知发送最终一致先写催办记录(send_status=1),异步发送通知,失败更新 send_status
统计缓存与数据库统计数据与数据库最终一致每小时定时任务重新计算并刷新 Redis 缓存
批量操作批量中单条失败不影响其他逐条处理 + 结果汇总,返回每条的成功/失败状态

七、附录

7.1 名词解释

术语通俗解释类比
待办任务(Todo Task)分配给你但还没处理的审批任务你桌上还没批的文件
已办任务(Done Task)你已经处理完的审批任务你已经签完字归档的文件
审批通过(Approve)同意申请,让流程继续往下走"我同意,往下传"
审批驳回(Reject)不同意申请,把流程退回去"不行,打回去重做"
转办(Transfer)把任务完全交给别人,自己不再参与"这事不归我管,交给XX"
委派(Delegate)临时让别人先处理,处理完还要回来由你最终确认"你先帮我看看,最后我来拍板"
前加签(Before Add Sign)在当前审批人之前增加审批人,加签人审完回到原审批人"请专家先把关,然后我再决定"
后加签(After Add Sign)当前审批人审批完后,加签人再审批"我先审了,然后你再看"
减签(Subtract Sign)移除因加签而产生的额外审批任务"不需要他审了,取消"
退回(Return)把流程退回到之前某个已完成的历史节点"退回到XX那个环节重新审"
催办(Urge)向审批人发送催促通知"闹钟响了,该处理了"
会签(Countersign)多人审批时所有人都要通过才能继续"所有人都签字才行"
或签(Or Sign)多人审批时任一人通过即可继续"只要有一个人同意就行"
超时阈值(Timeout Threshold)任务允许停留的最长时间,超过就算超时"截止日期"
紧急程度(Urgency Level)根据停留时长自动计算的紧急等级(普通/紧急/特急)"红绿灯"——蓝/橙/红
幂等性(Idempotency)同一个操作执行多次和执行一次的效果相同"按多次通过按钮等于只按一次"
Flowable开源的工作流引擎,本系统的流程引擎底层审批流转的"发动机"
BPMN业务流程建模的国际标准流程图的"语法规则"

7.2 权限标识

权限标识说明所属子功能
bpm:todo:query查看待办任务列表待办任务列表
bpm:todo:approve审批通过任务审批
bpm:todo:reject审批驳回任务审批
bpm:todo:transfer转办任务任务审批
bpm:todo:delegate委派任务任务审批
bpm:todo:return退回任务任务审批
bpm:todo:add-sign加签操作任务审批
bpm:todo:subtract-sign减签操作任务审批
bpm:todo:batch-approve批量通过待办任务列表
bpm:todo:batch-transfer批量转办待办任务列表
bpm:todo:batch-urge批量催办待办任务列表
bpm:done:query查看已办任务已办任务
bpm:statistics:query查看任务统计任务统计
bpm:statistics:export导出统计报表任务统计
bpm:urge:send发送催办通知催办管理
bpm:urge:query查看催办记录催办管理
bpm:urge:rule:query查看催办规则催办管理
bpm:urge:rule:create创建催办规则催办管理
bpm:urge:rule:update编辑催办规则催办管理
bpm:urge:rule:delete删除催办规则催办管理

7.3 错误码

错误码说明处理建议
BPM_TASK_001任务不存在或已被处理刷新列表重试
BPM_TASK_002当前用户不是该任务的审批人确认是否登录了正确的账号
BPM_TASK_003审批操作不合法(如任务已挂起)检查任务状态,联系管理员
BPM_TASK_004驳回原因不能为空填写驳回原因后重试
BPM_TASK_005候选人不存在或已禁用选择其他候选人
BPM_TASK_006不能转办/委派给自己选择其他用户
BPM_TASK_007减签任务不存在或非加签任务确认减签目标正确
BPM_TASK_008重复提交(幂等校验失败)检查操作是否已执行成功
BPM_TASK_009批量操作超过上限(50条)减少选择数量
BPM_TASK_010批量通过要求同类型流程按流程类型分批操作
BPM_URGE_001催办频率超限(10分钟内已催办)等待冷却期后重试
BPM_URGE_002催办规则名称已存在修改规则名称
BPM_URGE_003催办通知发送失败检查通知渠道配置,查看失败日志
BPM_STAT_001统计数据查询超时缩小查询范围或联系管理员

7.4 接口汇总

子功能接口数量接口前缀
待办任务列表6/admin-api/bpm/todo/
任务审批11/admin-api/bpm/task/
已办任务2/admin-api/bpm/done/
任务统计9/admin-api/bpm/statistics/
催办管理8/admin-api/bpm/urge/
合计36

7.5 变更记录

版本日期修改内容修改人
v1.02026-09-24初始版本PM Team
v2.02026-09-19全面重写:增强用户场景(命名角色+验收标准)、新增页面线框图、新增审批操作速查表、新增状态流转图、新增跨模块联动章节、新增名词解释(含类比)、新增错误码、补充业务规则设计原因PM Team

本文档为待办管理模块PRD v2.0,如有问题请联系产品负责人。