# 项目概述
这是一个基于 Flowable 的工作流项目,名为 epkeeper-workflow
项目采用 Maven 多模块结构,包含两个主要模块:
- epkeeper-workflow-api:API 接口模块
- epkeeper-workflow-provider:服务提供者模块
# 技术栈
核心工作流引擎:Flowable
数据库:MySQL
缓存:Redis
服务发现:Nacos
消息队列:RabbitMQ
ORM:MyBatis
# 项目结构
epkeeper-workflow-api 模块:
包含核心领域模型(core)
Dubbo 接口定义
数据模型和 POJO 对象
epkeeper-workflow-provider 模块:
- 控制器层(Controller)
- Flowable 相关配置和处理器
- 服务实现层
- MyBatis 数据访问层
# 主要功能
工作流程管理
任务处理
流程定义和部署
表单管理
用户任务管理(发起、待办、已办、抄送等)
# 示例功能
包含一个完整的请假流程示例
展示了从流程设计到实现的完整流程
包含表单设计、流程定义、任务处理等功能
# 特色功能
支持流程变量管理
提供任务状态管理
支持流程监听和超时处理
提供自定义命令扩展
支持业务表与工作流的绑定
# 项目中用到的设计模式
工厂模式(Factory Pattern)
在 QueryUtils 类中使用了工厂模式创建各种查询对象
例如:modelQuery ()、definitionQuery ()、deploymentQuery () 等方法都是工厂方法的实现
这些方法封装了对象的创建过程,提供了统一的接口
单例模式(Singleton Pattern)
在 QueryUtils 类中使用了单例模式
通过 private static final 确保 PROCESS_ENGINE 只有一个实例
<img src="image-20250416120059550.png" alt="image-20250416120059550" style="zoom:50%;" />
观察者模式(Observer Pattern)
在 GlobalFlowableListener 类中实现了 FlowableEventListener 接口
用于监听工作流引擎的各种事件,如任务创建、任务到期等
通过 onEvent 方法响应不同类型的事件
<img src="image-20250416121122134.png" alt="image-20250416121122134" style="zoom:50%;" />
策略模式(Strategy Pattern)
在 FlowableConfig 类中通过配置不同的处理器来实现不同的策略
例如:自定义的 ID 生成器、事件监听器、任务处理器等
这些都可以通过配置来灵活切换不同的实现策略
<img src="image-20250416121209328.png" alt="image-20250416121209328" style="zoom:50%;" />
模板方法模式(Template Method Pattern)
在 BaseEntity 类中定义了通用的实体类属性和方法
子类可以继承这个基类,复用通用的字段和行为
包含了创建时间、更新时间等通用字段的自动填充逻辑
<img src="image-20250416121303749.png" alt="image-20250416121303749" style="zoom:50%;" />
建造者模式(Builder Pattern)
在 PageQuery 类中使用了建造者模式
通过 build () 方法构建分页对象
支持链式调用设置各种参数
<img src="image-20250416121826481.png" alt="image-20250416121826481" style="zoom:50%;" />
命令模式(Command Pattern)
在工作流处理中使用了命令模式
通过 TaskTimeoutJobHandler 等处理器封装了具体的任务处理逻辑
将请求封装为对象,使得可以用不同的请求对客户进行参数化
<img src="image-20250416121543926.png" alt="image-20250416121543926" style="zoom:50%;" />