BPM流程配置
引用文件
目录
简介
本文件围绕黑名单审批流程的BPM配置展开,系统性阐述从流程定义、节点配置、审批人设置、权限控制,到流程模板设计、流程实例管理、流程与业务数据绑定、最佳实践与调试技巧的完整方案。目标读者既包括一线运维与业务人员,也包括后端开发者与架构师。
项目结构
- BPM模块采用分层与模块化组织:
- yudao-module-bpm-api:对外RPC接口定义(如流程实例创建、查询、取消)
- yudao-module-bpm-biz:业务实现(流程定义、表单、监听器、服务等)
- 文档与SQL:docs目录下的BPM与黑名单文档,以及sql/mysql/bpm.sql中的流程相关表结构
- 黑名单模块与BPM模块通过接口与事件联动,实现“业务变更触发审批”的闭环
图表来源
- BpmProcessInstanceApi.java
- BpmProcessDefinitionCreateReqDTO.java
- BpmModelMetaInfoRespDTO.java
- bpm.sql
- IAppBlackListedBpmService.java
- AppBlackListedBpmServiceImpl.java
- AppBlacklistedBpmVariable.java
- BpmBlacklistStatusListener.java
章节来源
核心组件
- 流程实例RPC接口:提供创建、查询、取消流程实例的能力,统一由BpmProcessInstanceApi暴露
- 流程定义DTO:封装流程模型、标识、名称、分类、BPMN字节流、表单类型等关键字段
- 模型元信息DTO:封装流程图标、描述、表单类型、表单ID、自定义表单路径等
- 黑名单BPM服务:负责黑名单变更触发审批、取消审批、查询运行中实例、处理审批结果
- 流程变量POJO:承载业务审批所需的关键字段(如业务原因、渠道名称、业务类型)
- 状态监听器: 接收BPM状态事件,驱动黑名单业务状态同步
章节来源
- BpmProcessInstanceApi.java
- BpmProcessDefinitionCreateReqDTO.java
- BpmModelMetaInfoRespDTO.java
- IAppBlackListedBpmService.java
- AppBlackListedBpmServiceImpl.java
- AppBlacklistedBpmVariable.java
- BpmBlacklistStatusListener.java
架构总览
黑名单模块与BPM模块通过RPC与事件解耦协作:
- 业务侧变更触发:黑名单服务调用BPM RPC创建流程实例
- 流程运行:BPM引擎执行流程,产生状态事件
- 状态回传:BPM状态事件由监听器接收,驱动黑名单业务状态更新
图表来源
详细组件分析
组件A:黑名单审批流程(BPM)配置
- 流程定义与模板
- 使用BpmProcessDefinitionCreateReqDTO定义流程模型、标识、名称、分类、BPMN字节流、表单类型等
- 模型元信息通过BpmModelMetaInfoRespDTO配置图标、描述、表单类型、表单ID、自定义表单路径
- 流程实例管理
- 创建:通过BpmProcessInstanceApi.createProcessInstance发起
- 查询:通过BpmProcessInstanceApi.getProcessInstance查询运行中实例
- 取消 :通过BpmProcessInstanceApi.cancel取消流程实例
- 流程变量与业务绑定
- AppBlacklistedBpmVariable承载业务原因、渠道名称、业务类型等字段,作为流程变量注入
- 状态监听与回写
- BpmBlacklistStatusListener监听BPM状态事件,调用AppBlackListedBpmServiceImpl.handleBpmResult回写业务状态
图表来源
- IAppBlackListedBpmService.java
- AppBlackListedBpmServiceImpl.java
- AppBlacklistedBpmVariable.java
- BpmProcessInstanceApi.java
- BpmBlacklistStatusListener.java
章节来源
- BpmProcessDefinitionCreateReqDTO.java
- BpmModelMetaInfoRespDTO.java
- BpmProcessInstanceApi.java
- AppBlackListedBpmServiceImpl.java
- AppBlacklistedBpmVariable.java
- BpmBlacklistStatusListener.java
组件B:黑名单审批流程模板设计
- 流程图绘制与节点配置
- 通过BpmProcessDefinitionCreateReqDTO携带BPMN字节流,定义开始事件、用户任务节点、排他网关、结束事件等
- 用户任务节点配置审批人策略(如指定角色、动态分配、会签/或签等)
- 分支条件设置
- 使用排他网关与条件表达式,结合流程变量businessBpmReason、businessBpmType等,实现不同场景的分支
- 表单与字段
- 通过BpmModelMetaInfoRespDTO配置表单类型与表单ID,或自定义表单路径,支撑业务字段录入与展示
图表来源
章节来源
组件C:流程实例管理(启动、流转、状态跟踪、历史)
- 启动流程实例
- 通过BpmProcessInstanceApi.createProcessInstance(userId, reqDTO)传入业务上下文与流程变量
- 节点流转
- 用户任务节点由审批人完成审批动作,触发后续节点
- 状态跟踪
- 通过BpmProcessInstanceApi.getProcessInstance查询运行中实例,结合BpmProcessInstanceStatusEnum进行状态管理
- 历史记录
- BPM引擎会持久化流程实例与任务历史,便于审计与追溯
图表来源
章节来源
组件D:流程与业务数据绑定(变量、映射、回调)
- 变量传递
- AppBlacklistedBpmVariable承载businessBpmReason、channelNames、businessBpmType等字段,作为流程变量注入
- 数据映射
- 业务DO与流程变量之间通过服务实现类进行映射与转换
- 回调处理
- BpmBlacklistStatusListener监听BPM状态事件,调用handleBpmResult进行业务状态回写
图表来源
章节来源
组件E:黑名单审批流程的业务背景与交互
- 非管理员修改黑名单需走审批;管理员修改直接生效
- 审批进度可在“审批中心”查看
- 黑名单模块与BPM模块通过接口与事件联动,形成“业务变更 → 审批 → 状态回写”的闭环
图表来源
章节来源
依赖分析
- 模块间依赖
- 黑名单biz依赖BPM API进行流程实例操作
- 黑名单biz通过事件监听器订阅BPM状态事件
- BPM biz提供流程定义与表单配置能力
- 外部依赖
- 基于Flowable 6实现,流程定义与实例持久化至数据库
图表来源
章节来源
性能考虑
- 并发与一致性
- 发起新审批前检查并取消运行中的实例,避免数据不一致
- 通过事务与行锁保护业务状态更新
- 缓存与查询
- 对常用查询结果进行缓存,降低数据库压力
- 异步处理
- 审批状态事件采用异步监听,减少主流程阻塞
故障排查指南
- 常见问题
- 流程创建失败:检查BPM API返回值与网络连通性
- 审批状态不同步:检查BpmBlacklistStatusListener是否正确注册与消费事件
- 重复实例:确认是否存在未取消的运行中实例
- 调试建议
- 开启BPM与黑名单模块的日志,定位接口调用链
- 使用BpmProcessInstanceApi.getProcessInstance核对运行中实例
- 校验流程变量businessBpmReason/businessBpmType是否正确注入
章节来源
结论
黑名单审批流程通过BPM模块实现了“业务变更 → 审批 → 状态回写”的标准化闭环。借助清晰的流程定义、完善的变量传递与事件监听机制,既能满足复杂业务场景的审批需求,又能保证系统的可观测性与可维护性。
附录
- 流程相关表结构参考:bpm_process_definition_info
- 模块描述与实现说明:yudao-module-bpm模块POM与README中的说明
章节来源