当然会!下面是你的内容标题《【Java 开发日记】你会不会使用 SpringBoot 整合 Flowable 快速实现工作流呢?》的实战分享文章模板,包含关键步骤、代码示例、流程图支持,适合用于学习笔记、博客发布、B站脚本或者教程输出。
【Java 开发日记】你会不会使用 SpringBoot 整合 Flowable 快速实现工作流呢?
最近在做业务审批流程开发,老板让我调研下有没有开源的工作流引擎,研究了 Activiti、Camunda、Flowable,最后选了 Flowable。
为什么?因为它和 Spring Boot 的集成最顺手,还兼容 BPMN 2.0,不用买授权,最重要的是 —— 真的好用!
🚀 一、为什么选择 Flowable?
- ✅ 开源 + 活跃社区
- ✅ 支持 BPMN、CMMN、DMN
- ✅ REST API 丰富,模型设计器强大
- ✅ 支持 Spring Boot 原生集成
- ✅ 不依赖任何商业授权
🧩 二、快速搭建 Spring Boot + Flowable 项目
1. 添加依赖
<dependency>
<groupId>org.flowable</groupId>
<artifactId>flowable-spring-boot-starter-process</artifactId>
<version>7.0.0</version> <!-- 最新版本 -->
</dependency>
2. 配置 application.yml
spring:
datasource:
url: jdbc:mysql://localhost:3306/flowable?useSSL=false&serverTimezone=UTC
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
flowable:
database-schema-update: true # 启动时自动建表
check-process-definitions: true
async-executor-activate: false
🧠 三、定义一个简单流程:请假审批流程
在 resources/processes
文件夹下新建一个 BPMN 流程图:
leave-approval.bpmn20.xml
<bpmn:process id="leaveProcess" name="请假流程" isExecutable="true">
<bpmn:startEvent id="start" name="开始" />
<bpmn:userTask id="submitLeave" name="提交请假单" flowable:assignee="employee" />
<bpmn:userTask id="managerApproval" name="经理审批" flowable:assignee="manager" />
<bpmn:endEvent id="end" name="结束" />
<bpmn:sequenceFlow id="flow1" sourceRef="start" targetRef="submitLeave" />
<bpmn:sequenceFlow id="flow2" sourceRef="submitLeave" targetRef="managerApproval" />
<bpmn:sequenceFlow id="flow3" sourceRef="managerApproval" targetRef="end" />
</bpmn:process>
⚙️ 四、编写流程接口控制器
1. 启动流程接口
@Autowired
private RuntimeService runtimeService;
@PostMapping("/start")
public String startProcess(@RequestParam String employeeName) {
Map<String, Object> vars = new HashMap<>();
vars.put("employee", employeeName);
ProcessInstance instance = runtimeService.startProcessInstanceByKey("leaveProcess", vars);
return "流程启动成功,ID: " + instance.getId();
}
2. 查询待办任务
@Autowired
private TaskService taskService;
@GetMapping("/tasks")
public List<String> getTasks(@RequestParam String assignee) {
return taskService.createTaskQuery()
.taskAssignee(assignee)
.list()
.stream()
.map(Task::getName)
.toList();
}
3. 完成任务
@PostMapping("/complete")
public String completeTask(@RequestParam String taskId) {
taskService.complete(taskId);
return "任务已完成";
}
🎨 五、可视化流程建模器(可选)
Flowable 提供了官方建模器:flowable-modeler,可独立部署或集成前端使用。
部署地址:https://github.com/flowable/flowable-engine/tree/main/modules/flowable-ui
登录界面默认用户:admin/test
可通过它导出 .bpmn20.xml
文件放到 resources/processes
中。
✅ 六、总结:你会用了没?
步骤 | 完成状态 |
---|---|
创建 Spring Boot 项目 | ✅ |
引入 Flowable Starter | ✅ |
配置数据源 + 自动建表 | ✅ |
编写 BPMN 流程 | ✅ |
实现流程启动、查询、审批接口 | ✅ |
支持可视化设计器(选配) | ✅ |
🧭 七、下一步建议
- 加入网关(如经理审批通过/驳回)
- 支持多节点并行(并行网关)
- 增加历史任务查询
- 和业务表单系统打通(MyBatis/前端表单)
- 多租户支持、流程版本管理
📁 示例项目地址(可选)
如需,我可以帮你生成完整示例项目代码打包,包括:
- BPMN 文件
- Java Controller/Service
- MySQL 初始化脚本
- Postman 请求包
是否需要我生成这个项目的 ZIP 包结构或者补充一个完整项目部署教程(带前端 Flowable Modeler 嵌入)?你也可以告诉我业务场景,我帮你画个实际的审批流程图。
发表回复