工作流集成
引用文件
本文引用的文件
- yudao-module-bpm/pom.xml
- yudao-module-bpm/yudao-module-bpm-api/pom.xml
- yudao-module-bpm/yudao-module-bpm-biz/pom.xml
- yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/event/BpmProcessInstanceStatusEvent.java
- yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/listener/GlobalProcessCompletedListener.java
- yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/listener/GlobalProcessCancelledListener.java
- yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/enums/BpmTaskCandidateStrategyEnum.java
- yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/candidate/expression/BpmTaskAssignLeaderExpression.java
- yudao-module-bpm/yudao-module-bpm-biz/src/test/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/candidate/BpmTaskCandidateInvokerTest.java
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/listener/BpmBlacklistStatusListener.java
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/service/blacklisted/AppBlackListedBpmServiceImpl.java
- yudao-module-blacklist/docs/blacklist/index.md
- docs/home/navigation.md
- sql/mysql/ruoyi-vue-pro.sql
- sql/kingbase/ruoyi-vue-pro.sql
- sql/postgresql/ruoyi-vue-pro.sql
- sql/opengauss/ruoyi-vue-pro.sql
目录
简介
本技术文档聚焦于工作流模块(BPM)与黑名单风控、设备管理、任务管理等模块的集成机制与业务联动实现,系统性阐述全局监听器在流程启动、完成、取消等关键节点的事件处理,OA 审批流程(请假、报销、采购等)的集成方式,候选人策略的动态计算与任务分配机制,并提供扩展点开发指南、集成测试方案、故障排查方法以及性能监控与优化策略。
项目结构
工作流模块采用多模块分层组织:
- 模块聚合:yudao-module-bpm 聚合 API 与 Biz 两部分,描述基于 Flowable 的流程定义、表单、实例、任务等能力。
- API 层:yudao-module-bpm-api 提供对外暴露的 API、枚举、事件模型与消息中间件依赖。
- Biz 层:yudao-module-bpm-biz 实现业务逻辑、监听器、候选策略、表达式、定时任务等。
图表来源
- yudao-module-bpm/pom.xml
- yudao-module-bpm/yudao-module-bpm-api/pom.xml
- yudao-module-bpm/yudao-module-bpm-biz/pom.xml
章节来源
- yudao-module-bpm/pom.xml
- yudao-module-bpm/yudao-module-bpm-api/pom.xml
- yudao-module-bpm/yudao-module-bpm-biz/pom.xml
核心组件
- 流程实例状态事件模型:用于跨模块传递流程实例状态变化,承载业务键、规则引擎业务信息、业务更新类型等。
- 全局监听器:对流程完成、取消等全局事件进行统一处理,便于扩展与审计。
- 候选人策略与表达式:支持用户、部门成员、部门负责人、角色、表单字段、表达式等多种策略,动态计算审批人。
- 业务集成监听器:如黑名单模块对流程状态事件的订阅与处理,形成闭环。
章节来源
- yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/event/BpmProcessInstanceStatusEvent.java
- yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/listener/GlobalProcessCompletedListener.java
- yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/listener/GlobalProcessCancelledListener.java
- yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/enums/BpmTaskCandidateStrategyEnum.java
- yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/candidate/expression/BpmTaskAssignLeaderExpression.java
架构总览
工作流引擎与业务模块通过事件驱动的方式解耦协作:
- BPM Biz 层负责流程引擎交互与事件发布。
- 业务模块订阅 BPM 状态事件,按需执行业务动作(如黑名单生效/失效)。
- 候选人策略与表达式在流程节点执行时动态计算审批人,确保任务分配合理。
图表来源
- yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/event/BpmProcessInstanceStatusEvent.java
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/listener/BpmBlacklistStatusListener.java
详细组件分析
全局监听器与事件处理
- 全局完成监听器:捕获流程完成事件,可用于统一记录、清理或后续动作。
- 全局取消监听器:捕获流程取消事件,便于审计与回滚。
- 事件模型:包含流程实例 ID、定义 Key、状态、业务键、规则业务信息、业务更新类型等字段,支撑跨模块协同。
图表来源
- yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/event/BpmProcessInstanceStatusEvent.java
- yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/listener/GlobalProcessCompletedListener.java
- yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/listener/GlobalProcessCancelledListener.java
章节来源
- yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/listener/GlobalProcessCompletedListener.java
- yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/listener/GlobalProcessCancelledListener.java
- yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/event/BpmProcessInstanceStatusEvent.java
候选人策略与任务分配
- 策略枚举:支持用户、部门成员、部门负责人、角色、表单内用户字段、表单内部门负责人、表达式、审批人为空等策略。
- 表达式计算:以“发起人部门负责人”为例,通过系统用户与部门 API 获取上级,动态返回审批人集合。
- 测试验证:通过单元测试覆盖不同场景(计算到候选人、空候选人但允许空分配等),保证策略正确性。
图表来源
- yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/enums/BpmTaskCandidateStrategyEnum.java
- yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/candidate/expression/BpmTaskAssignLeaderExpression.java
- yudao-module-bpm/yudao-module-bpm-biz/src/test/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/candidate/BpmTaskCandidateInvokerTest.java
章节来源
- yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/enums/BpmTaskCandidateStrategyEnum.java
- yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/candidate/expression/BpmTaskAssignLeaderExpression.java
- yudao-module-bpm/yudao-module-bpm-biz/src/test/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/candidate/BpmTaskCandidateInvokerTest.java
OA 审批流程集成(请假/报销/采购)
- 流程模型与表单:通过流程设计器配置节点审批人、表单字段与分支条件,满足不同业务场景。
- 审批中心:提供“我的申请、我的待办、我的已办”等入口,便于用户跟踪流程状态。
- 业务联动:流程完成后,通过事件驱动触发业务动作(如黑名单规则生效、任务导出等)。
章节来源
黑名单模块与工作流的集成
- 事件监听:黑名单模块订阅 BPM 流程实例状态事件,针对特定流程定义 Key 前缀进行过滤处理。
- 业务处理:根据事件结果调用黑名单业务服务,执行规则更新、状态切换等操作。
- 配置说明:黑名单模块支持审批流控制,管理员修改即时生效,非管理员修改需走审批。
图表来源
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/listener/BpmBlacklistStatusListener.java
- yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/event/BpmProcessInstanceStatusEvent.java
章节来源
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/listener/BpmBlacklistStatusListener.java
- yudao-module-blacklist/yudao-module-blacklist-biz/src/main/java/cn/iocoder/yudao/module/blacklist/service/blacklisted/AppBlackListedBpmServiceImpl.java
- docs/blacklist/index.md
设备管理与任务管理的集成要点
- 设备管理:可作为流程中的业务数据来源或目标,例如在流程节点中读取设备信息、触发设备相关动作。
- 任务管理:流程完成后可触发导出任务、异步处理等,通过事件与任务模块解耦协作。
章节来源