1. 项目背景与核心需求
在企业管理系统中,OA请假流程是最基础也是最常用的功能之一。基于Jeecgboot3.9.0和flowable7.2.0实现这样一个功能,实际上是在验证一个完整的工作流集成方案。我最近在重构公司内部管理系统时,就遇到了这样的需求场景。
传统的请假审批流程通常包含以下几个关键节点:申请人填写表单→直属领导审批→人事备案→结果通知。在Jeecgboot框架下,我们需要将这些业务逻辑与flowable的工作流引擎无缝衔接。这个过程中最大的挑战在于如何将表单数据与流程实例绑定,以及如何处理各种审批路径的分支逻辑。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与基础配置
2.1 Jeecgboot3.9.0项目初始化
首先需要确保Jeecgboot的基础环境配置正确。我推荐使用以下Maven依赖配置:
xml复制<dependency>
<groupId>org.jeecgframework.boot</groupId>
<artifactId>jeecg-boot-base-starter</artifactId>
<version>3.9.0</version>
</dependency>
<dependency>
<groupId>org.flowable</groupId>
<artifactId>flowable-spring-boot-starter</artifactId>
<version>7.2.0</version>
</dependency>
数据库方面,需要同时准备业务数据库和flowable的流程引擎数据库。在实际部署时,我建议将这两个数据库分开,这样既方便管理也利于性能优化。在application.yml中需要配置双数据源:
yaml复制spring:
datasource:
dynamic:
primary: master
datasource:
master:
url: jdbc:mysql://localhost:3306/jeecg-boot?useSSL=false
username: root
password: 123456
flowable:
url: jdbc:mysql://localhost:3306/flowable7?useSSL=false
username: root
password: 123456
2.2 Flowable7.2.0引擎配置
Flowable的配置需要特别注意事务管理器的设置。在项目中我采用了如下的Java配置类:
java复制@Configuration
public class FlowableConfig {
@Bean
public SpringProcessEngineConfiguration processEngineConfiguration(
@Qualifier("flowableDataSource") DataSource dataSource,
PlatformTransactionManager transactionManager) {
SpringProcessEngineConfiguration config = new SpringProcessEngineConfiguration();
config.setDataSource(dataSource);
config.setTransactionManager(transactionManager);
config.setDatabaseSchemaUpdate(FlowableProperties.DATABASE_SCHEMA_UPDATE_TRUE);
config.setAsyncExecutorActivate(true);
config.setHistoryLevel(HistoryLevel.FULL);
return config;
}
}
3. 请假流程设计与实现
3.1 流程定义建模
使用Flowable Modeler设计请假流程时,我通常会先绘制流程图。一个标准的请假审批流程应该包含以下节点:
- 开始事件
- 申请人填写表单(用户任务)
- 部门领导审批(用户任务)
- 人事备案(服务任务)
- 结束事件
在bpmn20.xml文件中,关键的用户任务配置如下:
xml复制<userTask id="leaderAudit" name="部门领导审批"
