博客主页: 南来_北往
系列专栏:Spring Boot实战
在现代企业应用中,工作流管理是一个至关重要的部分。通过使用Spring Boot和Flowable,可以方便地构建和管理工作流。本文将详细介绍如何在Spring Boot项目中集成Flowable UI,并实现一个简单的请假流程。
1. 环境准备
- JDK版本:1.8
- Maven版本:3.x
- Spring Boot版本:2.7.5
- Flowable版本:6.6.0
- 数据库:MySQL 8.0
2. 创建Spring Boot项目
首先,使用Spring Initializr或任何你喜欢的IDE(如IntelliJ IDEA或Eclipse)创建一个新的Spring Boot项目。
3. 添加依赖
在pom.xml
文件中添加以下依赖:
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<flowable.version>6.6.0</flowable.version>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.5</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.flowable</groupId>
<artifactId>flowable-spring-boot-starter</artifactId>
<version>${flowable.version}</version>
</dependency>
<dependency>
<groupId>org.flowable</groupId>
<artifactId>flowable-spring-boot-starter-ui-idm</artifactId>
<version>${flowable.version}</version>
</dependency>
<dependency>
<groupId>org.flowable</groupId>
<artifactId>flowable-spring-boot-starter-ui-modeler</artifactId>
<version>${flowable.version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.31</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
4. 配置数据库连接
在application.properties
文件中配置数据库连接信息:
# 端口
server.port=8081
# UI相关信息
flowable.idm.app.admin.user-id=admin
flowable.idm.app.admin.password=admin
flowable.idm.app.admin.first-name=xxx
flowable.idm.app.admin.last-name=xxx
flowable.database-schema-update=true
# 关闭定时任务JOB
flowable.async-executor-activate=false
# 数据库
spring.datasource.url=jdbc:mysql://localhost:3306/flowable-test?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
# 日志
logging.level.org.flowable=DEBUG
确保在MySQL中创建一个名为flowable-test
的数据库,Flowable会在启动时自动创建所需的表。
5. 配置Flowable UI
Flowable UI是一个用于设计和管理工作流的Web应用。在Spring Boot项目中集成Flowable UI需要添加相应的依赖并配置相应的资源。
确保你的pom.xml
中已经包含了Flowable UI的依赖:
<dependency>
<groupId>org.flowable</groupId>
<artifactId>flowable-spring-boot-starter-ui-idm</artifactId>
<version>${flowable.version}</version>
</dependency>
<dependency>
<groupId>org.flowable</groupId>
<artifactId>flowable-spring-boot-starter-ui-modeler</artifactId>
<version>${flowable.version}</version>
</dependency>
然后,在Spring Boot应用的resources
目录下创建META-INF
文件夹,并复制flowable-default.properties
文件到该文件夹中。这个文件用于配置Flowable UI的默认设置。
6. 设计请假流程
- 启动Spring Boot应用。
- 访问Flowable UI的Modeler页面(通常是
http://localhost:8081/flowable-modeler
)。 - 在Modeler中创建一个新的流程模型,并设计请假流程。例如,你可以添加“申请请假”、“组长审批”、“经理审批”等节点。
- 保存并发布流程模型。
7. 实现请假流程的控制逻辑
在Spring Boot项目中实现请假流程的控制逻辑,包括启动流程、查询任务、审批任务等。
import org.flowable.engine.RuntimeService;
import org.flowable.engine.TaskService;
import org.flowable.engine.runtime.ProcessInstance;
import org.flowable.task.api.Task;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/leave")
public class LeaveController {
@Autowired
private RuntimeService runtimeService;
@Autowired
private TaskService taskService;
// 发起请假流程
@PostMapping("/apply")
public String applyLeave(@RequestParam String userId, @RequestParam int days, @RequestParam String description) {
Map<String, Object> variables = new HashMap<>();
variables.put("userId", userId);
variables.put("days", days);
variables.put("description", description);
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("leaveProcess", variables);
return "流程启动成功,流程ID:" + processInstance.getId();
}
// 查询待办任务
@GetMapping("/my-tasks")
public List<Task> getMyTasks(@RequestParam String userId) {
return taskService.createTaskQuery().taskAssignee(userId).list();
}
// 审批任务
@PostMapping("/approve")
public String approveTask(@RequestParam String taskId, @RequestParam String outcome) {
taskService.complete(taskId, Collections.singletonMap("outcome", outcome));
return "任务审批成功";
}
}
8. 启动应用并测试
启动Spring Boot应用,并访问Flowable UI页面进行流程设计和管理。然后,通过API接口或Postman等工具测试请假流程的控制逻辑。
至此,你已经成功地在Spring Boot项目中集成了Flowable UI,并实现了一个简单的请假流程。你可以根据实际需求进一步扩展和优化这个流程。