跳到主要内容

工作流集成

目录

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

简介

本技术文档聚焦于工作流模块(BPM)与黑名单风控、设备管理、任务管理等模块的集成机制与业务联动实现,系统性阐述全局监听器在流程启动、完成、取消等关键节点的事件处理,OA 审批流程(请假、报销、采购等)的集成方式,候选人策略的动态计算与任务分配机制,并提供扩展点开发指南、集成测试方案、故障排查方法以及性能监控与优化策略。

项目结构

工作流模块采用多模块分层组织:

  • 模块聚合:yudao-module-bpm 聚合 API 与 Biz 两部分,描述基于 Flowable 的流程定义、表单、实例、任务等能力。
  • API 层:yudao-module-bpm-api 提供对外暴露的 API、枚举、事件模型与消息中间件依赖。
  • Biz 层:yudao-module-bpm-biz 实现业务逻辑、监听器、候选策略、表达式、定时任务等。

Mermaid Diagram Code:

graph TB
subgraph "工作流模块"
BPM_API["BPM-API<br/>事件/枚举/常量"]
BPM_BIZ["BPM-Biz<br/>监听器/候选策略/表达式/业务实现"]
end
subgraph "业务模块"
BLACKLIST["黑名单模块<br/>审批结果回调处理"]
DEVICE["设备模块<br/>设备相关业务"]
TASK["任务模块<br/>导出/异步任务"]
end
BPM_API --> BPM_BIZ
BPM_BIZ --> BLACKLIST
BPM_BIZ --> DEVICE
BPM_BIZ --> TASK

图表来源

章节来源

核心组件

  • 流程实例状态事件模型:用于跨模块传递流程实例状态变化,承载业务键、规则引擎业务信息、业务更新类型等。
  • 全局监听器:对流程完成、取消等全局事件进行统一处理,便于扩展与审计。
  • 候选人策略与表达式:支持用户、部门成员、部门负责人、角色、表单字段、表达式等多种策略,动态计算审批人。
  • 业务集成监听器:如黑名单模块对流程状态事件的订阅与处理,形成闭环。

章节来源

架构总览

工作流引擎与业务模块通过事件驱动的方式解耦协作:

  • BPM Biz 层负责流程引擎交互与事件发布。
  • 业务模块订阅 BPM 状态事件,按需执行业务动作(如黑名单生效/失效)。
  • 候选人策略与表达式在流程节点执行时动态计算审批人,确保任务分配合理。

Mermaid Diagram Code:

sequenceDiagram
participant User as "用户"
participant BPM as "BPM-Biz"
participant MQ as "消息通道"
participant BL as "黑名单模块"
participant SYS as "系统服务"
User->>BPM : 发起流程实例
BPM->>BPM : 执行流程/节点
BPM->>MQ : 发布流程实例状态事件
MQ-->>BL : 推送事件
BL->>SYS : 更新黑名单状态/规则
BL-->>User : 返回审批结果

图表来源

详细组件分析

全局监听器与事件处理

  • 全局完成监听器:捕获流程完成事件,可用于统一记录、清理或后续动作。
  • 全局取消监听器:捕获流程取消事件,便于审计与回滚。
  • 事件模型:包含流程实例 ID、定义 Key、状态、业务键、规则业务信息、业务更新类型等字段,支撑跨模块协同。

Mermaid Diagram Code:

classDiagram
class BpmProcessInstanceStatusEvent {
+Long messageKey
+String id
+String processDefinitionKey
+Integer status
+String businessKey
+RuleBusinessInfo[] ruleBusinessInfos
+Integer businessUpdateType
}
class GlobalProcessCompletedListener {
+processCompleted(event)
}
class GlobalProcessCancelledListener {
+processCancelled(event)
}
GlobalProcessCompletedListener --> BpmProcessInstanceStatusEvent : "监听"
GlobalProcessCancelledListener --> BpmProcessInstanceStatusEvent : "监听"

图表来源

章节来源

候选人策略与任务分配

  • 策略枚举:支持用户、部门成员、部门负责人、角色、表单内用户字段、表单内部门负责人、表达式、审批人为空等策略。
  • 表达式计算:以“发起人部门负责人”为例,通过系统用户与部门 API 获取上级,动态返回审批人集合。
  • 测试验证:通过单元测试覆盖不同场景(计算到候选人、空候选人但允许空分配等),保证策略正确性。

Mermaid Diagram Code:

flowchart TD
Start(["进入用户任务节点"]) --> Parse["解析候选策略配置"]
Parse --> Strategy{"策略类型?"}
Strategy --> |用户/部门成员/角色| StaticCalc["静态策略计算"]
Strategy --> |部门负责人| LeaderCalc["表达式计算:发起人部门负责人"]
Strategy --> |表单字段| FormCalc["读取表单字段值"]
Strategy --> |表达式| ExprCalc["执行流程表达式"]
Strategy --> |空分配| EmptyAssign["允许空分配策略"]
StaticCalc --> Result["返回候选人集合"]
LeaderCalc --> Result
FormCalc --> Result
ExprCalc --> Result
EmptyAssign --> Result
Result --> End(["结束"])

图表来源

章节来源

OA 审批流程集成(请假/报销/采购)

  • 流程模型与表单:通过流程设计器配置节点审批人、表单字段与分支条件,满足不同业务场景。
  • 审批中心:提供“我的申请、我的待办、我的已办”等入口,便于用户跟踪流程状态。
  • 业务联动:流程完成后,通过事件驱动触发业务动作(如黑名单规则生效、任务导出等)。

章节来源

黑名单模块与工作流的集成

  • 事件监听:黑名单模块订阅 BPM 流程实例状态事件,针对特定流程定义 Key 前缀进行过滤处理。
  • 业务处理:根据事件结果调用黑名单业务服务,执行规则更新、状态切换等操作。
  • 配置说明:黑名单模块支持审批流控制,管理员修改即时生效,非管理员修改需走审批。

Mermaid Diagram Code:

sequenceDiagram
participant BPM as "BPM-Biz"
participant MQ as "消息通道"
participant BL as "黑名单模块监听器"
participant Svc as "黑名单业务服务"
BPM->>MQ : 发布流程实例状态事件
MQ-->>BL : 推送事件
BL->>Svc : handleBpmResult(event)
Svc-->>BL : 处理完成

图表来源

章节来源

设备管理与任务管理的集成要点

  • 设备管理:可作为流程中的业务数据来源或目标,例如在流程节点中读取设备信息、触发设备相关动作。
  • 任务管理:流程完成后可触发导出任务、异步处理等,通过事件与任务模块解耦协作。

章节来源

依赖分析

  • 工作流引擎:使用 Flowable Spring Boot Starter,提供流程定义、实例、任务、监听器等能力。
  • 消息中间件:通过 yudao-spring-boot-starter-mq 提供事件发布/订阅能力。
  • 系统服务:依赖 system-api 的用户、部门接口,用于候选人策略计算。
  • 数据字典:候选策略类型通过系统字典维护,便于统一配置与扩展。

Mermaid Diagram Code:

graph TB
BPM_BIZ["BPM-Biz"] --> FLOWABLE["Flowable Starter"]
BPM_BIZ --> MQ["消息中间件"]
BPM_BIZ --> SYS_API["System-API<br/>用户/部门"]
SYS_API --> DICT["系统字典<br/>候选策略类型"]

图表来源

章节来源

性能考虑

  • 监听器与事件处理:避免在监听器中执行耗时操作,建议异步化或委托至消息队列处理。
  • 候选人策略:优先使用静态策略,表达式计算应尽量减少外部 API 调用次数,必要时增加缓存。
  • 数据字典与配置:候选策略类型集中管理,减少重复配置与查询开销。
  • 监控与指标:结合链路追踪与指标埋点,关注流程实例状态事件的延迟与吞吐。

故障排查指南

  • 流程未完成/取消:检查全局监听器是否正确注册与生效,确认事件发布通道可用。
  • 候选人为空:核对策略配置与表达式计算逻辑,验证系统用户/部门接口返回;参考测试用例定位问题场景。
  • 业务联动异常:检查黑名单模块监听器是否订阅到对应流程定义 Key 前缀,确认业务服务处理逻辑与幂等性。
  • 集成测试:基于单元测试场景模拟不同候选人计算路径,覆盖成功与失败分支。

章节来源

结论

通过事件驱动与候选策略的灵活组合,工作流模块实现了与黑名单风控、设备管理、任务管理等业务系统的深度集成。全局监听器提供了统一的流程状态处理入口,OA 审批流程可覆盖请假、报销、采购等典型场景。建议在生产环境中强化异步化与监控,持续完善候选策略与表达式,确保系统稳定性与可扩展性。

附录

  • 开发指南与最佳实践
    • 扩展监听器:继承事件监听基类,按流程定义 Key 或前缀进行过滤,避免全局处理。
    • 候选人策略:优先使用静态策略,表达式策略应保持幂等与低复杂度。
    • 事件模型:遵循事件字段规范,确保业务键与规则业务信息完整。
  • 集成测试方案
    • 使用单元测试覆盖不同候选人计算场景,模拟成功与失败分支。
    • 通过 Mock 外部依赖(用户/部门 API),隔离环境差异。
  • 性能监控与优化
    • 关注事件发布/消费延迟、流程实例完成时间分布。
    • 对表达式计算与外部 API 调用进行限流与缓存优化。
用户文档
AI 助手
Agent 列表
请选择一个 Agent 开始对话
AI 问答