跳到主要内容

审批中心

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖分析
  7. 性能考虑
  8. 故障排查指南
  9. 结论
  10. 附录

简介

本文件面向审批中心功能的技术文档,围绕待办任务、已办任务、我的流程三大核心能力,系统阐述任务分配机制、候选人选择策略、任务转办与委托处理流程;并深入解析审批状态流转、任务超时处理、审批意见管理等关键特性。同时提供完整的审批API接口规范,解释与用户权限系统的集成方式与安全控制机制,并给出与黑名单风控模块的审批集成场景与业务联动机制说明。

项目结构

审批中心位于 BPM 模块中,采用“控制层-服务层-数据访问层”的分层架构,配合系统模块提供的用户与部门 API 实现人员与组织信息拼装,最终通过统一的 REST 接口对外提供能力。

Mermaid Diagram Code:

graph TB
subgraph "BPM 控制层"
C1["BpmTaskController<br/>待办/已办/流程实例接口"]
C2["BpmProcessInstanceController<br/>我的流程/实例详情接口"]
end
subgraph "BPM 服务层"
S1["BpmTaskService<br/>任务查询/审批/退回/转办/委托/加签/减签/抄送"]
S2["BpmProcessInstanceService<br/>实例创建/取消/详情/下一节点/流程图"]
end
subgraph "系统集成"
U["AdminUserApi<br/>用户信息"]
D["DeptApi<br/>部门信息"]
end
subgraph "外部接口"
RPC["BpmProcessInstanceApi<br/>RPC 接口"]
end
C1 --> S1
C2 --> S2
S1 --> U
S1 --> D
S2 --> U
S2 --> D
S2 --> RPC

图表来源

章节来源

核心组件

  • 任务中心(待办/已办)
    • 提供待办任务分页、已办任务分页、按流程实例查询任务列表、任务审批/拒绝、退回、转派、委派、加签、减签、抄送、父子任务查询、流程变量查询等能力。
  • 我的流程(流程实例)
    • 提供我的流程分页、管理后台流程分页、创建流程实例、取消流程、流程详情、下一审批节点、流程图视图、流程变量查询等能力。
  • 权限与安全
    • 基于注解的权限校验与登录用户上下文获取,确保接口访问安全可控。
  • 与系统模块集成
    • 通过 AdminUserApi 与 DeptApi 拉取用户与部门信息,实现人员与组织信息的拼装展示。

章节来源

架构总览

审批中心以控制器为入口,调用服务层完成具体业务,服务层通过系统模块的用户与部门 API 进行信息拼装,并与流程引擎交互完成任务与实例的生命周期管理。

Mermaid Diagram Code:

sequenceDiagram
participant FE as "前端"
participant CTRL as "BpmTaskController"
participant SVC as "BpmTaskService"
participant SYSU as "AdminUserApi"
participant SYSD as "DeptApi"
FE->>CTRL : GET /bpm/task/todo-page
CTRL->>SVC : 查询待办任务分页
SVC-->>CTRL : 返回任务分页
CTRL->>SYSU : 批量拉取发起人用户信息
CTRL->>SYSD : 批量拉取部门信息
CTRL-->>FE : 返回带用户/部门信息的待办分页
FE->>CTRL : PUT /bpm/task/approve
CTRL->>SVC : 审批通过(携带登录用户)
SVC-->>CTRL : 审批成功
CTRL-->>FE : 返回成功

图表来源

详细组件分析

组件一:待办任务(Todo)

  • 能力概览
    • 分页查询当前用户的待办任务,拼接流程实例、发起人用户、流程定义信息,支持排序与空值处理。
    • 支持审批通过/拒绝、退回、转派、委派、加签、减签、抄送等操作。
  • 关键流程
    • 查询待办任务分页 → 拉取流程实例与发起人 → 拉取流程定义信息 → 拼装返回。
  • 重要接口
    • GET /bpm/task/todo-page
    • PUT /bpm/task/approve
    • PUT /bpm/task/reject
    • GET /bpm/task/list-by-return
    • PUT /bpm/task/return
    • PUT /bpm/task/transfer
    • PUT /bpm/task/delegate
    • PUT /bpm/task/create-sign
    • DELETE /bpm/task/delete-sign
    • PUT /bpm/task/copy
    • GET /bpm/task/getVariablesByTaskId

Mermaid Diagram Code:

sequenceDiagram
participant FE as "前端"
participant CTRL as "BpmTaskController"
participant SVC as "BpmTaskService"
participant PI as "BpmProcessInstanceService"
participant DEF as "BpmProcessDefinitionService"
participant SYSU as "AdminUserApi"
FE->>CTRL : GET /bpm/task/todo-page
CTRL->>SVC : getTaskTodoPage(userId, pageReq)
SVC-->>CTRL : PageResult<Task>
CTRL->>PI : 批量获取流程实例
CTRL->>DEF : 批量获取流程定义信息
CTRL->>SYSU : 批量获取发起人用户
CTRL-->>FE : 返回带用户/流程定义的待办分页

图表来源

章节来源

组件二:已办任务(Done)

  • 能力概览
    • 分页查询当前用户的已办任务,拼接历史流程实例、发起人用户、流程定义信息。
  • 关键流程
    • 查询已办任务分页 → 拉取历史流程实例与发起人 → 拉取流程定义信息 → 拼装返回。
  • 重要接口
    • GET /bpm/task/done-page

Mermaid Diagram Code:

sequenceDiagram
participant FE as "前端"
participant CTRL as "BpmTaskController"
participant SVC as "BpmTaskService"
participant PI as "BpmProcessInstanceService"
participant DEF as "BpmProcessDefinitionService"
participant SYSU as "AdminUserApi"
FE->>CTRL : GET /bpm/task/done-page
CTRL->>SVC : getTaskDonePage(userId, pageReq)
SVC-->>CTRL : PageResult<HistoricTaskInstance>
CTRL->>PI : 批量获取历史流程实例
CTRL->>DEF : 批量获取流程定义信息
CTRL->>SYSU : 批量获取发起人用户
CTRL-->>FE : 返回带用户/流程定义的已办分页

图表来源

章节来源

组件三:我的流程(Process Instance)

  • 能力概览
    • 我的流程分页(仅本人发起)、管理后台流程分页(全量)、创建流程实例、取消流程、流程详情、下一审批节点、流程图视图、流程变量查询。
  • 关键流程
    • 分页查询 → 拉取任务映射、流程定义、分类、用户与部门 → 拼装返回。
  • 重要接口
    • GET /bpm/process-instance/my-page
    • GET /bpm/process-instance/manager-page
    • POST /bpm/process-instance/create
    • DELETE /bpm/process-instance/cancel-by-start-user
    • DELETE /bpm/process-instance/cancel-by-admin
    • GET /bpm/process-instance/get
    • GET /bpm/process-instance/get-approval-detail
    • GET /bpm/process-instance/get-next-approval-nodes
    • GET /bpm/process-instance/get-bpmn-model-view
    • GET /bpm/process-instance/getVariablesByProcessInstanceId

Mermaid Diagram Code:

sequenceDiagram
participant FE as "前端"
participant CTRL as "BpmProcessInstanceController"
participant SVC as "BpmProcessInstanceService"
participant T as "BpmTaskService"
participant DEF as "BpmProcessDefinitionService"
participant CAT as "BpmCategoryService"
participant SYSU as "AdminUserApi"
participant SYSD as "DeptApi"
FE->>CTRL : GET /bpm/process-instance/my-page
CTRL->>SVC : getProcessInstancePage(userId, pageReq)
SVC-->>CTRL : PageResult<HistoricProcessInstance>
CTRL->>T : 按实例ID批量查询任务
CTRL->>DEF : 批量获取流程定义
CTRL->>CAT : 获取分类映射
CTRL->>SYSU : 批量获取用户
CTRL->>SYSD : 批量获取部门
CTRL-->>FE : 返回带用户/部门/定义/任务的流程分页

图表来源

章节来源

组件四:任务分配与候选人策略

  • 任务分配机制
    • 任务由流程引擎根据流程定义自动分配或通过服务层接口进行人工干预(如转派、委派、退回、加签/减签)。
  • 候选人选择策略
    • 通过流程引擎的用户/组候选策略与服务层的用户/部门 API 拉取信息,结合业务规则实现候选人筛选与展示。
  • 任务转办与委托
    • 转派:将任务从当前处理人转移给他人,保留原处理人记录。
    • 委派:将任务委派给他人处理,原处理人不再承担该任务责任。
  • 加签/减签
    • 在当前任务节点增加/移除协同处理人,形成多签或多阶段审批。

章节来源

组件五:审批状态流转与超时处理

  • 状态流转
    • 通过审批操作(通过/拒绝/退回/转派/委派/加签/减签/抄送)驱动流程引擎推进至下一节点或结束。
  • 超时处理
    • 流程引擎侧可通过定时器/边界事件配置超时策略,服务层提供“下一审批节点”查询以便前端提示与提醒。

章节来源

组件六:审批意见管理

  • 审批意见
    • 审批通过/拒绝/退回等操作通常携带审批意见字段,服务层在提交审批时写入流程变量或历史意见,便于审计与追溯。
  • 流程变量
    • 提供按任务/实例维度的流程变量查询接口,支撑前端动态渲染与审批意见展示。

章节来源

组件七:黑名单风控与审批联动

  • 场景说明
    • 非管理员对黑名单配置的修改会触发审批流程,管理员修改则直接生效。
  • 联动机制
    • 黑名单模块在修改配置时,将变更事件推送到流程引擎或通过 RPC 接口创建流程实例,审批完成后回写配置状态。

章节来源

依赖分析

  • 控制层依赖
    • BpmTaskController 与 BpmProcessInstanceController 分别依赖对应的 Service 层与系统模块 API。
  • 服务层依赖
    • 任务与实例服务依赖流程引擎与系统用户/部门 API,实现任务与实例的查询、审批、状态更新与信息拼装。
  • 外部接口
    • BpmProcessInstanceApi 作为 RPC 接口,供其他模块创建/取消/查询流程实例。

Mermaid Diagram Code:

graph LR
CTRL1["BpmTaskController"] --> SVC1["BpmTaskService"]
CTRL2["BpmProcessInstanceController"] --> SVC2["BpmProcessInstanceService"]
SVC1 --> SYSU["AdminUserApi"]
SVC1 --> SYSD["DeptApi"]
SVC2 --> SYSU
SVC2 --> SYSD
SVC2 --> RPC["BpmProcessInstanceApi"]

图表来源

章节来源

性能考虑

  • 分页与批量查询
    • 控制层对用户/部门/流程实例/流程定义均采用批量查询与映射,减少多次远程调用。
  • 排序与空值处理
    • 对历史任务按结束时间排序,提升用户阅读体验。
  • 缓存与异步
    • 建议对常用字典、流程定义信息进行缓存;对耗时操作采用异步处理(如导出、大列表查询)。

故障排查指南

  • 权限不足
    • 现象:接口返回无权限。
    • 排查:确认登录用户是否具备相应权限注解(如 hasPermission)。
  • 用户/部门信息缺失
    • 现象:任务/实例列表中用户或部门显示异常。
    • 排查:检查 AdminUserApi 与 DeptApi 的可用性与数据一致性。
  • 流程变量为空
    • 现象:流程变量查询为空。
    • 排查:确认流程变量是否正确设置,或查询范围是否匹配。
  • 审批操作失败
    • 现象:审批通过/拒绝/退回/转派等操作未生效。
    • 排查:检查流程引擎状态、节点配置与服务层审批方法调用链。

章节来源

结论

审批中心通过清晰的分层架构与完善的接口体系,实现了待办/已办任务与我的流程的完整闭环。结合流程引擎的任务分配与状态流转能力,以及与系统模块的用户/部门信息集成,能够满足企业级审批场景的多样化需求。同时,黑名单风控模块与审批的联动为业务合规提供了有力保障。

附录

审批 API 接口规范(摘要)

  • 任务中心
    • GET /bpm/task/todo-page:获取待办任务分页
    • GET /bpm/task/done-page:获取已办任务分页
    • GET /bpm/task/manager-page:获取全部任务分页(管理后台)
    • GET /bpm/task/list-by-process-instance-id:按流程实例查询任务列表
    • PUT /bpm/task/approve:审批通过
    • PUT /bpm/task/reject:审批拒绝
    • GET /bpm/task/list-by-return:获取可退回节点
    • PUT /bpm/task/return:退回任务
    • PUT /bpm/task/transfer:转派任务
    • PUT /bpm/task/delegate:委派任务
    • PUT /bpm/task/create-sign:加签
    • DELETE /bpm/task/delete-sign:减签
    • PUT /bpm/task/copy:抄送
    • GET /bpm/task/list-by-parent-task-id:按父任务查询子任务
    • GET /bpm/task/getVariablesByTaskId:获取任务流程变量
  • 我的流程
    • GET /bpm/process-instance/my-page:我的流程分页
    • GET /bpm/process-instance/manager-page:管理后台流程分页
    • POST /bpm/process-instance/create:创建流程实例
    • GET /bpm/process-instance/get:获取流程实例详情
    • DELETE /bpm/process-instance/cancel-by-start-user:用户取消流程
    • DELETE /bpm/process-instance/cancel-by-admin:管理员取消流程
    • GET /bpm/process-instance/get-approval-detail:获取审批详情
    • GET /bpm/process-instance/get-next-approval-nodes:获取下一审批节点
    • GET /bpm/process-instance/get-bpmn-model-view:获取流程图视图
    • GET /bpm/process-instance/getVariablesByProcessInstanceId:获取流程实例流程变量
    • DELETE /bpm/process-instance/delete-by-id:删除已完成/历史实例
    • DELETE /bpm/process-instance/delete-all:删除全部已完成/历史实例
  • RPC 接口
    • POST /process-instance/create:创建流程实例(RPC)
    • POST /process-instance/get:查询流程实例(RPC)
    • POST /process-instance/cancel:取消流程实例(RPC)
    • GET /process-instance/getInstanceStatusMessage:获取流程实例状态消息(RPC)
    • POST /process-instance/updateInstanceStatusMessage:更新流程实例状态消息(RPC)

章节来源

权限与安全控制

  • 权限注解
    • 使用 @PreAuthorize 对接口进行细粒度权限控制,如“bpm:task:query”、“bpm:task:update”、“bpm:process-instance:query”等。
  • 登录用户上下文
    • 通过 SecurityFrameworkService 获取当前登录用户 ID,贯穿任务与实例操作。
  • 安全建议
    • 对高危操作(取消、删除)增加二次确认与审计日志;对敏感接口启用 HTTPS 与限流。

章节来源

用户文档
AI 助手
Agent 列表
请选择一个 Agent 开始对话
AI 问答