跳到主要内容

黑名单审批流程表

目录

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

简介

本文档围绕黑名单审批流程表(bpm_blacklist_process)进行深入解析,涵盖审批流程相关字段定义、状态流转机制、与工作流引擎的集成方式,并提供时序图与状态机图,帮助读者快速理解并正确使用该审批流程。

项目结构

黑名单审批流程主要涉及以下模块与文件:

  • 业务服务层:AppBlackListedBpmServiceImpl 负责发起、取消、查询运行中流程以及处理流程结果
  • 接口定义:IAppBlackListedBpmService 提供对外服务契约
  • 数据对象:AppBlacklistedDO 定义黑名单主表结构及审批相关字段
  • 流程变量:AppBlacklistedBpmVariable 封装提交审批所需的业务变量
  • 状态枚举:BpmProcessInstanceStatusEnum、BpmBusinessValid 定义流程状态与业务有效性状态
  • 配置:BlacklistConfig 提供规则引擎开关配置
  • BPM 定义:bpm.sql 中包含流程相关表结构(如流程定义信息表)

Mermaid Diagram Code:

graph TB
subgraph "黑名单模块"
Svc["AppBlackListedBpmServiceImpl<br/>业务服务"]
Intf["IAppBlackListedBpmService<br/>接口"]
DO["AppBlacklistedDO<br/>黑名单主表"]
Var["AppBlacklistedBpmVariable<br/>流程变量"]
Cfg["BlacklistConfig<br/>配置"]
end
subgraph "BPM模块"
StatusEnum["BpmProcessInstanceStatusEnum<br/>流程状态枚举"]
ValidEnum["BpmBusinessValid<br/>业务有效性枚举"]
BPMDef["bpm_process_definition_info<br/>流程定义表"]
end
Svc --> Intf
Svc --> DO
Svc --> Var
Svc --> Cfg
Svc --> StatusEnum
Svc --> ValidEnum
Svc --> BPMDef

图表来源

章节来源

核心组件

  • 业务服务实现:负责发起审批、取消审批、查询运行中流程、处理流程结果
  • 接口契约:定义对外暴露的方法集合
  • 数据对象:承载黑名单主表字段,包含审批状态、流程实例ID、有效性状态等
  • 流程变量:封装业务审批原因、类型、关联范围等信息
  • 状态枚举:标准化流程状态与业务有效性状态
  • 配置:控制是否启用规则引擎参与审批

章节来源

架构概览

黑名单审批流程与工作流引擎的集成通过以下步骤实现:

  • 发起审批:服务根据黑名单数据构建流程变量,查询流程定义键,调用流程引擎创建流程实例
  • 运行中查询:支持按流程实例ID或流程定义键+业务键查询运行中的流程
  • 结果处理:监听流程状态事件,根据审批结果更新业务数据与关联范围,并同步至缓存

Mermaid Diagram Code:

sequenceDiagram
participant Biz as "业务系统"
participant Svc as "AppBlackListedBpmServiceImpl"
participant BPM as "BPM流程引擎"
participant DB as "数据库"
participant Cache as "缓存"
Biz->>Svc : 调用 createBpm(userId, blackListedId)
Svc->>DB : 查询黑名单数据并加锁
Svc->>Svc : 构建流程变量(AppBlacklistedBpmVariable)
Svc->>BPM : 创建流程实例(createProcessInstance)
BPM-->>Svc : 返回流程实例ID
Svc->>DB : 更新bpmStatus=审批中、processInstanceId
Biz->>Svc : 调用 getRunningProcessInstance(blackListedId)
Svc->>BPM : 查询运行中流程(按实例ID/定义键+业务键)
BPM-->>Svc : 返回运行中流程列表
Biz->>Svc : 调用 cancelBpm(userId, blackListedId)
Svc->>BPM : 取消流程实例(cancel)
Svc->>DB : 更新bpmStatus=未开始
Biz->>Svc : 接收流程结果事件(handleBpmResult)
Svc->>DB : 根据审批结果更新主表与关联表
Svc->>Cache : 同步更新缓存

图表来源

详细组件分析

数据模型与字段定义

黑名单审批流程表(以AppBlacklistedDO为核心)的关键字段如下:

  • 主键与基础信息:id、applicationName、packageName、status、type、version、remark
  • 审批相关字段:bpmStatus(流程状态)、processInstanceId(流程实例ID)、valid(业务有效性)
  • 草稿字段:draft(未审批通过的草稿数据,支持BPM草稿机制)
  • 审计字段:createBy、updateBy、以及通用的创建/更新时间字段

Mermaid Diagram Code:

classDiagram
class AppBlacklistedDO {
+Long id
+String applicationName
+String packageName
+Integer status
+Integer type
+String version
+String remark
+BpmDraft~AppBlacklistedDO~ draft
+Integer bpmStatus
+String processInstanceId
+Integer valid
+String createBy
+String updateBy
}

图表来源

章节来源

审批状态流转机制

流程状态枚举定义了完整的状态集合,包括未开始、审批中、审批通过、审批不通过、已取消等。业务有效性状态用于标识黑名单的生效状态(未生效、已生效、已生效且做移除标记、已生效且做修改标记等)。

Mermaid Diagram Code:

stateDiagram-v2
[*] --> 未开始
未开始 --> 审批中 : "发起审批"
审批中 --> 审批通过 : "审批通过"
审批中 --> 审批不通过 : "审批拒绝"
审批中 --> 已取消 : "用户取消"
审批通过 --> 已生效 : "更新业务数据"
审批不通过 --> 未开始 : "重新发起"
已取消 --> 未开始 : "重新发起"

图表来源

章节来源

流程变量与候选人配置

流程变量(AppBlacklistedBpmVariable)包含业务审批原因、业务类型(新增/修改/删除)、渠道名称等,用于向流程引擎传递审批上下文。流程定义信息(bpm_process_definition_info)中包含流程模型、表单配置、可见性、可发起用户等信息,用于控制候选人的分配与流程的可见性。

Mermaid Diagram Code:

classDiagram
class AppBlacklistedBpmVariable {
+String businessBpmReason
+String[] channelNames
+String businessBpmType
}
AppBlacklistedBpmVariable --> AppBlacklistedRespVO : "继承"

图表来源

章节来源

发起与取消审批流程

  • 发起审批:服务查询黑名单数据,构建流程变量,查询流程定义键,调用流程引擎创建流程实例;若存在运行中实例则先取消再发起;成功后更新bpmStatus与processInstanceId
  • 取消审批:查询运行中流程实例并逐个取消,随后更新bpmStatus为未开始

Mermaid Diagram Code:

flowchart TD
Start(["开始"]) --> CheckDraft["检查草稿状态"]
CheckDraft --> HasRunning{"是否存在运行中实例"}
HasRunning --> |是| CancelAll["取消所有运行中实例"]
CancelAll --> ThrowErr["抛出异常提示"]
HasRunning --> |否| BuildVar["构建流程变量"]
BuildVar --> GetDefKey["获取流程定义键"]
GetDefKey --> CreateProc["创建流程实例"]
CreateProc --> UpdateStatus["更新bpmStatus=审批中"]
UpdateStatus --> End(["结束"])
CancelStart(["取消审批"]) --> QueryRun["查询运行中实例"]
QueryRun --> CancelOne["逐个取消流程实例"]
CancelOne --> ResetStatus["重置bpmStatus=未开始"]
ResetStatus --> CancelEnd(["结束"])

图表来源

章节来源

处理流程结果

当流程状态发生变化时,服务监听事件并根据审批结果执行相应处理:

  • 更新bpmStatus
  • 若审批通过:设置valid=已生效,清空草稿;根据父级操作类型(新增/修改/删除)更新主表与关联表,并同步缓存
  • 若非通过:仅更新流程状态,不做业务数据变更

Mermaid Diagram Code:

flowchart TD
Event(["接收流程结果事件"]) --> ParseBizKey["解析业务键"]
ParseBizKey --> LoadData["加载业务数据并加锁"]
LoadData --> SetBpmStatus["更新bpmStatus"]
SetBpmStatus --> IsApprove{"是否审批通过"}
IsApprove --> |否| SaveOnly["仅保存流程状态"] --> End(["结束"])
IsApprove --> |是| SetValid["设置valid=已生效并清空草稿"]
SetValid --> ParentType{"父级操作类型"}
ParentType --> |删除| DeleteMain["删除主表记录并清理缓存"]
ParentType --> |新增| NoOp["无需额外处理"]
ParentType --> |修改| ApplyDraft["应用草稿到主表"]
ApplyDraft --> UpdateRel["更新关联表(渠道/区域/MAC)"]
UpdateRel --> SyncCache["同步缓存"]
DeleteMain --> SyncCache
NoOp --> SyncCache
SyncCache --> End

图表来源

章节来源

典型场景与数据示例

  • 新增黑名单:businessBpmType=ADD,businessBpmReason描述新增基础信息与关联范围变化,valid初始为未生效,审批通过后变为已生效
  • 修改黑名单:businessBpmType=UPDATE,businessBpmReason描述基础信息与关联范围变更详情,审批通过后应用草稿并同步缓存
  • 删除黑名单:businessBpmType=DELETE,审批通过后删除主表记录与关联范围,并清理缓存

章节来源

依赖关系分析

  • 业务服务依赖:MyBatis Mapper、Redis DAO、BPM流程引擎API、规则引擎API、系统字典API
  • 枚举依赖:流程状态与业务有效性状态枚举
  • 配置依赖:黑名单模块配置(规则引擎开关)

Mermaid Diagram Code:

graph TB
Svc["AppBlackListedBpmServiceImpl"] --> Mapper["AppBlacklistedMapper"]
Svc --> RedisDAO["AppBlacklistedRedisDAO"]
Svc --> BPM["BpmProcessInstanceApi"]
Svc --> Rule["RuleBusinessApi"]
Svc --> Dict["DictDataApi"]
Svc --> EnumStatus["BpmProcessInstanceStatusEnum"]
Svc --> EnumValid["BpmBusinessValid"]
Svc --> Config["BlacklistConfig"]

图表来源

章节来源

性能考虑

  • 并发控制:创建与取消流程均采用数据库行级锁,避免并发覆盖
  • 缓存同步:审批通过后批量更新Redis,减少后续查询开销
  • 规则引擎:可选启用,避免不必要的远程调用
  • 关联范围更新:针对渠道、区域、MAC分别进行增量更新,降低缓存压力

[本节为通用指导,无需特定文件引用]

故障排查指南

  • 存在运行中实例:若发起新审批时发现运行中实例,系统会自动取消并抛出提示,请稍后刷新查看最新状态
  • 审批已完成:若bpmStatus为审批通过或未开始,禁止重复提交
  • 流程创建失败:流程引擎返回失败时,抛出服务异常并包含返回消息
  • 无变更提交:若业务内容无任何变更,将拒绝提交审批

章节来源

结论

黑名单审批流程通过标准化的状态机与严格的并发控制,确保业务数据与流程状态的一致性。结合流程变量与流程定义配置,实现了灵活的审批场景支持,并通过缓存同步提升整体性能。建议在实际部署中合理配置流程定义与候选人权限,并根据业务需求启用规则引擎以增强审批决策能力。

[本节为总结性内容,无需特定文件引用]

附录

  • 流程定义信息表(bpm_process_definition_info)包含流程模型、表单配置、可见性与可发起用户等字段,用于支撑流程的可视化设计与权限控制
  • 业务有效性状态与流程状态枚举统一了系统内状态表达,便于跨模块协作与状态迁移

章节来源

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