黑名单审批流程表
引用文件
目录
简介
本文档围绕黑名单审批流程表(bpm_blacklist_process)进行深入解析,涵盖审批流程相关字段定义、状态流转机制、与工作流引擎的集成方式,并提供时序图与状态机图,帮助读者快速理解并正确使用该审批流程。
项目结构
黑名单审批流程主要涉及以下模块与文件:
- 业务服务层:AppBlackListedBpmServiceImpl 负责发起、取消、查询运行中流程以及处理流程结果
- 接口定义:IAppBlackListedBpmService 提供对外服务契约
- 数据对象:AppBlacklistedDO 定义黑名单主表结构及审批相关字段
- 流程变量:AppBlacklistedBpmVariable 封装提交审批所需的业务变量
- 状态枚举:BpmProcessInstanceStatusEnum、BpmBusinessValid 定义流程状态与业务有效性状态
- 配置:BlacklistConfig 提供规则引擎开关配置
- BPM 定义:bpm.sql 中包含流程相关表结构(如流程定义信息表)
图表来源
- AppBlackListedBpmServiceImpl.java
- IAppBlackListedBpmService.java
- AppBlacklistedDO.java
- AppBlacklistedBpmVariable.java
- BpmProcessInstanceStatusEnum.java
- BpmBusinessValid.java
- bpm.sql
章节来源
核心组件
- 业务服务实现:负责发起审批、取消审批、查询运行中流程、处理流程结果
- 接口契约:定义对外暴露的方法集合
- 数据对象:承载黑名单主表字段,包含审批状态、流程实例ID、有效性状态等
- 流程变量:封装业务审批原因、类型、关联范围等信息
- 状态枚举:标准化流程状态与业务有效性状态
- 配置:控制是否启用规则引擎参与审批
章节来源
- IAppBlackListedBpmService.java
- AppBlacklistedDO.java
- AppBlacklistedBpmVariable.java
- BpmProcessInstanceStatusEnum.java
- BpmBusinessValid.java
- BlacklistConfig.java
架构概览
黑名单审批流程与工作流引擎的集成通过以下步骤实现:
- 发起审批:服务根据黑名单数据构建流程变量,查询流程定义键,调用流程引擎创建流程实例
- 运行中查询:支持按流程实例ID或流程定义键+业务键查询运行中的流程
- 结果处理:监听流程状态事件,根据审批结果更新业务数据与关联范围,并同步至缓存
图表来源
- AppBlackListedBpmServiceImpl.java
- AppBlackListedBpmServiceImpl.java
- AppBlackListedBpmServiceImpl.java
- AppBlackListedBpmServiceImpl.java
详细组件分析
数据模型与字段定义
黑名单审批流程表(以AppBlacklistedDO为核心)的关键字段如下:
- 主键与基础信息:id、applicationName、packageName、status、type、version、remark
- 审批相关字段:bpmStatus(流程状态)、processInstanceId(流程实例ID)、valid(业务有效性)
- 草稿字段:draft(未审批通过的草稿数据,支持BPM草稿机制)
- 审计字段:createBy、updateBy、以及通用的创建/更新时间字段
图表来源
章节来源
审批状态流转机制
流程状 态枚举定义了完整的状态集合,包括未开始、审批中、审批通过、审批不通过、已取消等。业务有效性状态用于标识黑名单的生效状态(未生效、已生效、已生效且做移除标记、已生效且做修改标记等)。
图表来源
章节来源
流程变量与候选人配置
流程变量(AppBlacklistedBpmVariable)包含业务审批原因、业务类型(新增/修改/删除)、渠道名称等,用于向流程引擎传递审批上下文。流程定义信息(bpm_process_definition_info)中包含流程模型、表单配置、可见性、可发起用户等信息,用于控制候选人的分配与流程的可见性。
图表来源
章节来源
发起与取消审批流程
- 发起审批:服务查询黑名单数据,构建流程变量,查询流程定义键,调用流程引擎创建流程实例;若存在运行中实例则先取消再发起;成功后更新bpmStatus与processInstanceId
- 取消审批:查询运行中流程实例并逐个取消,随后更新bpmStatus为未开始
图表来源
章节来源
处理流程结果
当流程状态发生变化时,服务监听事件并根据审批结果执行相应处理:
- 更新bpmStatus
- 若审批通过:设置valid=已生效,清空草稿;根据父级操作类型(新增/修改/删除)更新主表与关联表,并同步缓存
- 若非通过:仅更新流程状态,不做业务数据变更
图表来源
章节来源
典型场景与数据示例
- 新增黑名单:businessBpmType=ADD,businessBpmReason描述新增基础信息与关联范围变化,valid初始为未生效,审批通过后变为已生效
- 修改黑名单:businessBpmType=UPDATE,businessBpmReason描述基础信息与关联范围变更详情,审批通过后应用草稿并同步缓存
- 删除黑名单:businessBpmType=DELETE,审批通过后删除主表记录与关联范围,并清理缓存
章节来源
依赖关系分析
- 业务服务依赖:MyBatis Mapper、Redis DAO、BPM流程引擎API、规则引擎API、系统字典API
- 枚举依赖:流程状态与业务有效性状态枚举
- 配置依赖:黑名单模块配置(规则引擎开关)
图表来源
章节来源
性能考虑
- 并发控制:创建与取消流程均采用数据库行级锁,避免并发覆盖
- 缓存同步:审批通过后批量更新Redis,减少后续查询开销
- 规则引擎:可选启用,避免不必要的远程调用
- 关联范围更新:针对渠道、区域、MAC分别进行增量更新,降低缓存压力
[本节为通用指导,无需特定文件引用]
故障排查指南
- 存在运行中实例:若发起新审批时发现运行中实例,系统会自动取消并抛出提示,请稍后刷新查看最新状态
- 审批已完成:若bpmStatus为审批通过或未开始,禁止重复提交
- 流程创建失败:流程引擎返回失败时,抛出服务异常并包含返回消息
- 无变更提交:若业务内容无任何变更,将拒绝提交审批
章节来源
结论
黑名单审批流程通过标准化的状态机与严格的并发控制,确保业务数据与流程状态的一致性。结合流程变量与流程定义配置,实现了灵活的审批场景支持,并通过缓存同步提升整体性能。建议在实际部署中合理配置流程定义与候选人权限,并根据业务需求启用规则引擎以增强审批决策能力。
[本节为总结性内容,无需特定文件引用]
附录
- 流程定义信息表(bpm_process_definition_info)包含流程模型、表单配置、可见性与可发起用户等字段,用于支撑流程的可视化设计与权限控制
- 业务有效性状态与流程状态枚举统一了系统内状态表达,便于跨模块协作与状态迁移
章节来源