尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Flowable7工作流引擎在Spring Boot3中的集成与实践
1. 项目概述最近在重构公司的工作流引擎决定将老旧的Activiti5升级到Flowable7。作为一款轻量级业务流程引擎Flowable7在Spring Boot3.x环境下展现出强大的兼容性和灵活性。今天我就来分享下从零开始集成Flowable7的完整过程包括环境搭建、流程设计、部署运行等核心环节。这个方案特别适合需要快速构建审批流、任务流转的中小型系统。相比ActivitiFlowable7提供了更简洁的API、更完善的REST支持和更活跃的社区。通过Spring Boot Starter方式集成30分钟内就能让第一个流程跑起来。2. 环境准备与基础集成2.1 依赖配置首先在pom.xml中添加关键依赖dependency groupIdorg.flowable/groupId artifactIdflowable-spring-boot-starter/artifactId version7.0.0/version /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-jdbc/artifactId /dependency注意Flowable7.x默认使用Spring Boot3.x的自动配置如果项目还在用Spring Boot2.x需要特别注意版本兼容性问题。2.2 数据库配置Flowable默认会创建23张表来存储流程定义、实例、任务等数据。在application.yml中配置spring: datasource: url: jdbc:mysql://localhost:3306/flowable-demo?useSSLfalse username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver flowable: database-schema-update: true关键参数说明database-schema-update: true表示自动创建或更新表结构生产环境建议改为false并通过Flyway管理2.3 启动验证启动应用后检查日志看到以下输出说明集成成功o.f.s.SpringProcessEngineConfiguration : ProcessEngine default created o.f.s.SpringProcessEngineConfiguration : Flowable BPMN Process Engine configured3. 流程设计与部署3.1 创建BPMN流程图在resources/processes下新建leave-request.bpmn20.xmldefinitions xmlnshttp://www.omg.org/spec/BPMN/20100524/MODEL process idleaveRequest name请假流程 startEvent idstart/ userTask idleaderAudit name主管审批/ exclusiveGateway iddecision/ sequenceFlow sourceRefstart targetRefleaderAudit/ sequenceFlow sourceRefleaderAudit targetRefdecision/ sequenceFlow sourceRefdecision targetRefhrAudit conditionExpression xsi:typetFormalExpression ![CDATA[${days 3}]] /conditionExpression /sequenceFlow userTask idhrAudit nameHR审批/ endEvent idend/ sequenceFlow sourceRefhrAudit targetRefend/ /process /definitions这个流程定义了员工发起请假申请主管审批请假天数3天时需要HR二次审批3.2 部署流程定义通过RepositoryService部署流程RestController public class ProcessController { Autowired private RepositoryService repositoryService; PostMapping(/deploy) public String deploy() { Deployment deployment repositoryService.createDeployment() .addClasspathResource(processes/leave-request.bpmn20.xml) .name(请假流程部署) .deploy(); return 部署成功ID deployment.getId(); } }部署成功后可以在ACT_RE_PROCDEF表中看到流程定义信息。4. 流程实例管理4.1 启动流程实例Autowired private RuntimeService runtimeService; public String startProcess(String employee, int days) { MapString, Object variables new HashMap(); variables.put(employee, employee); variables.put(days, days); ProcessInstance instance runtimeService.startProcessInstanceByKey( leaveRequest, variables); return instance.getId(); }4.2 查询与完成任务Autowired private TaskService taskService; // 查询用户任务 public ListTask getTasks(String assignee) { return taskService.createTaskQuery() .taskAssignee(assignee) .list(); } // 完成任务 public void completeTask(String taskId) { taskService.complete(taskId); }5. 实战技巧与避坑指南5.1 性能优化建议异步执行器配置flowable: async-executor-activate: true async-executor-core-pool-size: 10 async-executor-max-pool-size: 50历史数据清理historyService.createHistoricProcessInstanceQuery() .finished() .list() .forEach(instance - historyService.deleteHistoricProcessInstance(instance.getId()));5.2 常见问题解决问题1启动时报表不存在错误检查数据库用户是否有建表权限确认flowable.database-schema-update配置为true问题2流程定义修改后不生效每次修改BPMN文件需要重新部署生成新版本使用repositoryService.createDeployment().enableDuplicateFiltering(true)问题3任务查询慢为ACT_RU_TASK表的PROC_INST_ID_字段添加索引避免使用通配符查询6. 扩展功能实现6.1 动态分配任务处理人在BPMN中使用表达式动态指定处理人userTask idleaderAudit name主管审批 flowable:assignee${employee.department.leader}/6.2 邮件通知集成配置邮件服务器后可以在流程中添加邮件任务serviceTask idsendMail flowable:typemail extensionElements flowable:field nameto flowable:string${employee.email}/flowable:string /flowable:field flowable:field namesubject flowable:string您的请假申请已提交/flowable:string /flowable:field /extensionElements /serviceTask7. 监控与管理7.1 流程实例监控// 查询运行中的流程实例 runtimeService.createProcessInstanceQuery() .processDefinitionKey(leaveRequest) .list(); // 获取流程变量 runtimeService.getVariables(processInstanceId);7.2 使用Flowable UI添加依赖后访问/flowable-uidependency groupIdorg.flowable/groupId artifactIdflowable-ui-modeler-rest/artifactId version7.0.0/version /dependency8. 生产环境建议数据库连接池建议使用HikariCP并合理配置大小日志分离将Flowable日志单独输出到文件集群部署需要配置分布式锁和共享数据库版本控制使用Git管理BPMN文件变更历史实际项目中我们发现当并发量超过100TPS时需要特别注意异步执行器的线程池配置和数据库连接池大小。另外建议对历史数据设置自动归档策略避免主表数据膨胀影响查询性能。
RELATED

相关推荐

彻底卸载Node.js的完整指南:Windows与macOS方案

彻底卸载Node.js的完整指南:Windows与macOS方案

1. 为什么需要彻底卸载Node.js?在开发过程中,我们可能会遇到Node.js版本冲突、安装包损坏或需要完全重装环境的情况。常规的删除操作往往会在系统各处留下残留文件和配置项,导致重新安装时出现各种诡异问题。上周我就因为旧版本残留导致npm全…

📅 2026/10/14 0:19:52
电力系统同步相量算法对比与Matlab实现

电力系统同步相量算法对比与Matlab实现

1. 电力系统同步相量计算的核心价值在电力系统运行与控制中,同步相量测量就像给电网做实时心电图。它能精确捕捉电压、电流的幅值和相位信息,为电网稳定分析、故障诊断和广域控制提供关键数据支撑。传统基于过零检测的方法在谐波干扰下误差显著&#xff…

📅 2026/10/14 0:19:52
AnythingLLM全解析:从Docker部署到RAG私有知识库实战

AnythingLLM全解析:从Docker部署到RAG私有知识库实战

简介:由Mintplex Labs推出的全栈AI工具AnythingLLM介绍文档,面向需要整合AI能力的开发者、企业IT团队、教研人员及创意工作者,致力于解决多模型统一接入、文档知识管理与AI客服落地中的选型与部署问题。内容系统讲解其主流LLM供应商及开源模型…

📅 2026/10/14 0:14:51
MORE NEWS

更多资讯

📰

嵌入式开发为何仍需掌握寄存器操作:从原理到实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

STM32二维码显示:从取模到上屏的完整方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

实时数仓与离线数仓的本质:业务节奏驱动的分层协同

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

Python序列协议:自定义类的切片与散列实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

PyTorch入门实战:从张量、自动求导到完整训练循环

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

会议纪要哪个软件用户体验好?7款主流工具实测横评与选型指南

一、会后的那一小时,才是真正的时间黑洞很多人对开会的抵触,其实不是抵触开会本身,而是抵触会后那一小时的"考古式整理":翻录音、对时间轴、猜是谁说的、再拼成一份像样的纪要。更麻烦的是信息损耗。讨论节奏一快&#…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬