Spring Boot 3 + Flowable 7 工作流引擎使用笔记
在现代企业中,工作流管理是一项至关重要的任务,可以帮助组织提高效率、优化流程并降低人为错误。Flowable 是一个强大的业务流程管理(BPM)平台,它提供了一个轻量级的、可嵌入的工作流引擎。在这篇文章中,我们将探索如何在 Spring Boot 3 中集成 Flowable 7,以实现工作流的创建和管理。
1. 项目搭建
首先,我们需要一个 Spring Boot 3 项目。可以使用 Spring Initializr 创建项目,选择以下依赖:
- Spring Web
- Spring Data JPA
- H2 Database
- Flowable
然后,在 pom.xml
中添加 Flowable 相关依赖:
<dependencies>
<!-- Spring Boot Starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!-- Flowable Engine -->
<dependency>
<groupId>org.flowable</groupId>
<artifactId>flowable-spring-boot-starter-process</artifactId>
<version>7.13.0</version>
</dependency>
<!-- H2 Database for testing -->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
2. 配置 Flowable
在 application.yml
文件中,配置 Flowable 的基本设置:
spring:
flowable:
databaseSchema: flowable
asyncExecutorActivate: true
history: full
id-generator: sequence
3. 创建流程定义
接下来,我们需要定义一个简单的 BPMN 流程。创建一个 process.bpmn20.xml
文件放在 src/main/resources/processes
目录下,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
targetNamespace="http://flowable.org/bpmn"
xmlns:flowable="http://flowable.org/bpmn">
<process id="simpleProcess" name="简单流程" isExecutable="true">
<startEvent id="startEvent"/>
<sequenceFlow id="flow1" sourceRef="startEvent" targetRef="serviceTask"/>
<serviceTask id="serviceTask" name="任务" flowable:class="com.example.service.MyServiceTask"/>
<sequenceFlow id="flow2" sourceRef="serviceTask" targetRef="endEvent"/>
<endEvent id="endEvent"/>
</process>
</definitions>
在上面的 BPMN 中,我们定义了一个简单的流程,包括一个开始事件、一个服务任务和一个结束事件。
4. 实现服务任务
创建一个自定义服务任务,在 src/main/java/com/example/service
目录下创建一个 MyServiceTask
类:
package com.example.service;
import org.flowable.engine.delegate.DelegateExecution;
import org.flowable.engine.delegate.JavaDelegate;
import org.springframework.stereotype.Service;
@Service
public class MyServiceTask implements JavaDelegate {
@Override
public void execute(DelegateExecution execution) {
System.out.println("Executing MyServiceTask");
}
}
5. 启动流程
在我们控制器中启动流程,可以创建一个简单的 REST API:
package com.example.controller;
import org.flowable.engine.RuntimeService;
import org.flowable.engine.runtime.ProcessInstance;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class WorkflowController {
@Autowired
private RuntimeService runtimeService;
@GetMapping("/start-process")
public String startProcess() {
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("simpleProcess");
return "Process started with ID: " + processInstance.getId();
}
}
6. 运行项目
运行 Spring Boot 应用程序后,可以使用 Postman 或浏览器访问 http://localhost:8080/start-process
启动我们的工作流。控制台中将会输出 “Executing MyServiceTask”,表示工作流的执行过程已经完成。
总结
本文讲述了如何在 Spring Boot 3 中集成 Flowable 7 工作流引擎,我们从创建 Maven 项目到定义 BPMN 流程,最后实现了一个简单的工作流。通过自定义服务任务,可以根据实际业务逻辑进行扩展,为企业的工作流管理带来便利。希望本文对你在使用 Flowable 时有所帮助!