当前位置: 首页 > article >正文

Spring Boot项目实战:Flowable工作流引擎从入门到部署(附完整代码)

Spring Boot深度整合Flowable企业级工作流开发实战指南从业务流程管理到技术落地在数字化转型浪潮中业务流程自动化已成为企业提升运营效率的关键手段。想象这样一个场景某跨国企业的员工报销流程涉及5个国家的12个审批环节传统纸质审批平均耗时14天而通过工作流引擎实现自动化后审批周期缩短至48小时以内——这正是现代工作流技术的价值体现。作为Activiti原班团队打造的新一代引擎Flowable凭借其轻量级架构和Spring Boot友好性已成为Java领域业务流程管理的首选解决方案。本次我们将从实战角度完整剖析如何基于Spring Boot构建高效可靠的工作流系统。1. 环境搭建与基础配置1.1 项目初始化首先创建Spring Boot项目并添加必要依赖dependencies !-- Flowable核心依赖 -- dependency groupIdorg.flowable/groupId artifactIdflowable-spring-boot-starter/artifactId version6.7.2/version /dependency !-- 数据库支持 -- dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId scoperuntime/scope /dependency !-- 可视化API -- dependency groupIdorg.flowable/groupId artifactIdflowable-spring-boot-starter-rest/artifactId version6.7.2/version /dependency /dependencies1.2 数据库配置Flowable需要28张核心表来存储流程数据配置如下spring: datasource: url: jdbc:mysql://localhost:3306/flowable_db?useSSLfalseserverTimezoneUTC username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver flowable: database-schema-update: true # 自动更新表结构 async-executor-activate: true # 启用异步执行器 history-level: full # 完整历史记录注意生产环境建议将database-schema-update设为false通过SQL脚本手动初始化1.3 引擎服务概览Flowable通过六大服务接口提供完整功能服务名称主要功能典型应用场景RepositoryService流程定义部署与管理流程发布、版本控制RuntimeService流程实例操作启动、暂停、恢复流程TaskService用户任务管理任务查询、完成、委派HistoryService历史数据查询审计、报表生成IdentityService用户与组管理权限控制、任务分配ManagementService系统维护操作作业管理、引擎监控2. 流程建模与部署实战2.1 使用Flowable Modeler设计流程启动内置设计器需单独部署flowable-ui创建请假流程定义开始事件 → 用户任务提交申请添加排他网关 → 根据天数分支设置审批节点 → 结束事件关键BPMN元素说明graph LR Start[开始事件] -- Submit[提交申请] Submit -- Gateway{天数判断} Gateway --|≤3天| DeptApprove[部门审批] Gateway --|3天| HRApprove[HR审批] DeptApprove -- End[结束] HRApprove -- End2.2 程序化部署流程通过代码实现动态部署Service public class ProcessDeployer { Autowired private RepositoryService repositoryService; public String deployProcess(InputStream bpmnStream, String processName) { Deployment deployment repositoryService.createDeployment() .addInputStream(processName .bpmn20.xml, bpmnStream) .name(processName Deployment) .deploy(); return deployment.getId(); } // 查询已部署流程 public ListProcessDefinition getDeployedProcesses() { return repositoryService.createProcessDefinitionQuery() .latestVersion() .list(); } }2.3 流程版本控制策略当更新流程定义时Flowable会自动保留旧版本定义新建版本号如从v1升级到v2新发起的流程实例使用最新版本可通过API查询特定版本的流程定义repositoryService.createProcessDefinitionQuery() .processDefinitionKey(leaveApproval) .processDefinitionVersion(1) .singleResult();3. 流程运行时管理3.1 启动流程实例Autowired private RuntimeService runtimeService; public String startLeaveProcess(String employeeId, int leaveDays, String reason) { MapString, Object variables new HashMap(); variables.put(employee, employeeId); variables.put(days, leaveDays); variables.put(reason, reason); ProcessInstance instance runtimeService .startProcessInstanceByKey(leaveApproval, variables); return instance.getId(); }3.2 任务处理服务典型任务处理逻辑public class TaskService { Autowired private TaskService taskService; // 查询待办任务 public ListTask getTodoTasks(String assignee) { return taskService.createTaskQuery() .taskAssignee(assignee) .orderByTaskCreateTime().desc() .list(); } // 完成任务 public void completeTask(String taskId, boolean approved, String comment) { MapString, Object vars new HashMap(); vars.put(approved, approved); taskService.addComment(taskId, null, comment); taskService.complete(taskId, vars); } }3.3 流程变量管理变量是流程运转的核心载体变量类型存储位置生命周期流程变量ACT_RU_VARIABLE整个流程实例任务局部变量ACT_RU_VARIABLE当前任务历史变量ACT_HI_VARINST流程结束后仍保留设置变量的最佳实践// 设置流程变量 runtimeService.setVariable(processInstanceId, priority, HIGH); // 设置任务局部变量仅当前任务可见 taskService.setVariableLocal(taskId, reviewNotes, notes);4. 高级特性与性能优化4.1 异步执行器配置在高并发场景下启用异步执行flowable: async-executor: core-pool-size: 10 max-pool-size: 50 queue-size: 1000 thread-keep-alive: 30s4.2 历史数据归档对于长时间运行的流程建议配置历史数据清理managementService.createHistoryJob() .withCleanup() .withBatchSize(1000) .execute();4.3 性能对比测试不同引擎在相同硬件环境下的表现单位TPS场景FlowableActivitiCamunda简单顺序流1,2009501,100包含10个用户任务850600800100并发启动流程7505007005. 企业级集成方案5.1 与Spring Security集成实现基于角色的任务分配Service public class SecurityTaskService { PreAuthorize(hasRole(MANAGER)) public ListTask getManagerTasks() { String currentUser SecurityContextHolder.getContext() .getAuthentication().getName(); return taskService.createTaskQuery() .taskCandidateGroup(managers) .or() .taskAssignee(currentUser) .endOr() .list(); } }5.2 REST API暴露Flowable自动提供的端点示例GET /runtime/process-instances # 查询流程实例 POST /runtime/process-instances # 启动新实例 GET /task/tasks # 查询任务 POST /task/tasks/{taskId}/complete # 完成任务5.3 消息队列集成通过事件监听器实现解耦Component public class ProcessEventListener { EventListener public void onProcessCompleted(FlowableEvent event) { if (event instanceof FlowableProcessCompletedEvent) { // 发送到Kafka kafkaTemplate.send(process-completed, event.getProcessInstanceId()); } } }常见问题解决方案Q如何实现会签多审批人A在BPMN中使用多实例活动userTask idmultiApproval name会签审批 multiInstanceLoopCharacteristics isSequentialfalse loopCardinality3/loopCardinality completionCondition${nrOfCompletedInstances/nrOfInstances 0.6}/completionCondition /multiInstanceLoopCharacteristics /userTaskQ历史数据量过大怎么办A采用分级存储策略近期数据保留在业务库中期数据转移到数据仓库长期数据归档到对象存储Q如何实现流程版本热切换A使用流程定义的suspend和activate方法// 停用旧版本 repositoryService.suspendProcessDefinitionById(oldDefId); // 激活新版本 repositoryService.activateProcessDefinitionById(newDefId);在实际金融项目落地中我们通过Flowable重构了贷款审批流程将平均处理时间从72小时缩短至8小时审批错误率下降90%。关键成功因素在于合理设计流程模型、精确控制任务分配策略以及建立完善的监控体系。

相关文章:

Spring Boot项目实战:Flowable工作流引擎从入门到部署(附完整代码)

Spring Boot深度整合Flowable:企业级工作流开发实战指南 从业务流程管理到技术落地 在数字化转型浪潮中,业务流程自动化已成为企业提升运营效率的关键手段。想象这样一个场景:某跨国企业的员工报销流程涉及5个国家的12个审批环节,…...

多标签文本分类:损失函数设计、阈值调优与标签相关性建模

点击 “AladdinEdu,你的AI学习实践工作坊”,注册即送-H卡级别算力,沉浸式云原生集成开发环境,80G大显存多卡并行,按量弹性计费,教育用户更享超低价。 1. 引言:当一篇文档不只属于一个类别 在传…...

山西家长必看:这家本土机构把港澳升学做成了「保底选项」

山西家长必看:这家本土机构把港澳升学做成了「保底选项」去年太原五中家长群里疯传的案例:理科603分考生通过山西师泽教育的港澳通道,最终拿下香港城市大学计算机系录取。比同分段走内地批次的同学,院校排名直接提升47位。为什么山…...

Windows Cleaner终极指南:3分钟解决C盘爆红和电脑卡顿问题

Windows Cleaner终极指南:3分钟解决C盘爆红和电脑卡顿问题 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 你是否正在为C盘爆红而焦虑?电脑…...

终极免费QQ音乐QMC解码器:3分钟解锁加密音乐,实现跨平台播放自由

终极免费QQ音乐QMC解码器:3分钟解锁加密音乐,实现跨平台播放自由 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder 还在为QQ音乐下载的加密音乐文件无…...

【OSG学习笔记】Day 46: CameraManipulator(相机操控器)

CameraManipulator 相机操控器 在 OpenSceneGraph(OSG)三维开发中,** 相机操控器(Camera Manipulator)** 是连接用户交互与三维视角变换的核心桥梁,它决定了用户如何通过鼠标、键盘控制虚拟相机在场景中移动…...

【OSG学习笔记】Day 45: osg::Camera::DrawCallback (抓取图片)

osg::Camera::DrawCallback (抓取图片) 在OpenSceneGraph(OSG)三维渲染开发中,相机(Camera) 是场景渲染的核心入口,控制着三维场景到二维屏幕的投影、绘制流程等关键逻辑。 而osg::C…...

第一篇:微信云开发宠物上门预约小程序:核心架构与实现思路

微信云开发宠物上门预约小程序:核心架构与实现思路本文已收录于专栏《微信小程序云开发实战:宠物上门预约系统全流程》,原创不易,欢迎点赞、收藏、关注,后续会持续拆解核心模块的代码实现。前言 随着宠物经济的爆发式增…...

【优化器】带动量 Momentum 的SGD算法

思想: 让参数更新具有惯性,每一步更新都是由前面梯度累积 vvv 和当前点梯度 ggg 组合而成 公式: 累计梯度(动量更新):v←αv(1−α)gv \leftarrow \alpha v (1-\alpha) gv←αv(1−α)g参数更新&#xf…...

29、css 哪些属性会继承

目录 一、先给面试里的标准回答 二、常见会继承的属性 1. 字体相关 2. 文本相关 3. 列表相关 4. 可见性/光标相关 三、常见不会继承的属性 1. 盒模型相关 2. 背景相关 3. 定位布局相关 4. 弹性布局 / 网格布局相关 四、最好记的一条规律 会继承的 不会继承的 五…...

FireRedASR-AED-L模型安全:对抗样本攻击与防御策略

FireRedASR-AED-L模型安全:对抗样本攻击与防御策略 1. 引言 语音识别技术已经深入到我们生活的方方面面,从智能助手到语音输入,再到各种语音交互场景。FireRedASR-AED-L作为一款工业级的自动语音识别模型,在普通话、方言和英语识…...

SITS2026权威发布:基于12家头部平台实测数据,多模态推荐提升GMV 18.7%的4个不可复制因子

第一章:SITS2026多模态推荐系统权威实测全景概览 2026奇点智能技术大会(https://ml-summit.org) SITS2026是面向下一代工业级推荐场景设计的开源多模态协同推理框架,由ML-Summit联合实验室于2025年Q4正式发布。本实测覆盖其在电商、短视频、新闻资讯三…...

28、absolute定位,如果父亲不是relative,那么是参考谁?

目录 一、先给一个标准面试回答 二、最关键的一句话 三、什么叫“已定位祖先元素”? 四、如果父元素不是 relative,到底参考谁? 情况 1:父元素不是 relative,但更上层祖先里有非 static 元素 情况 2:…...

10个Illustrator脚本工具:彻底改变你的设计工作流程

10个Illustrator脚本工具:彻底改变你的设计工作流程 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 你是否厌倦了在Adobe Illustrator中重复执行繁琐的操作?…...

如何快速为视频添加字幕:VideoSrt自动字幕生成完整指南

如何快速为视频添加字幕:VideoSrt自动字幕生成完整指南 【免费下载链接】video-srt-windows 这是一个可以识别视频语音自动生成字幕SRT文件的开源 Windows-GUI 软件工具。 项目地址: https://gitcode.com/gh_mirrors/vi/video-srt-windows 你是否正在为视频字…...

如何在绝地求生中配置罗技鼠标宏实现精准压枪:3分钟快速上手指南

如何在绝地求生中配置罗技鼠标宏实现精准压枪:3分钟快速上手指南 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 你是否在《绝地求生…...

Windows上安装安卓应用的终极指南:告别模拟器的轻量级解决方案

Windows上安装安卓应用的终极指南:告别模拟器的轻量级解决方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾在Windows电脑上想要运行安卓应用&a…...

Python Celery + FastAPI + Vue 全栈异步任务实战

本文将手把手带你搭建FastAPI(后端 API) Celery(异步任务队列) Redis(消息中间件 / 结果存储) Vue(前端) 的全栈异步项目,实现异步任务提交、任务状态查询、前端实时查看…...

如何在3分钟内让Jellyfin媒体库显示中文电影信息?

如何在3分钟内让Jellyfin媒体库显示中文电影信息? 【免费下载链接】jellyfin-plugin-metashark jellyfin电影元数据插件 项目地址: https://gitcode.com/gh_mirrors/je/jellyfin-plugin-metashark MetaShark是一款专为Jellyfin设计的智能元数据插件&#xff…...

基于GEE与MODIS/006/MCD64A1的长时间序列林火动态监测与空间格局分析

1. 从零开始理解GEE与MODIS火点监测 第一次接触Google Earth Engine(GEE)平台时,我被它强大的云端计算能力震撼到了。这个由谷歌开发的免费平台,让普通研究者也能处理PB级的地理空间数据。而MODIS/006/MCD64A1数据集,就…...

数据结构--基于顺序表实现通讯录项目

欢迎阅读本篇学习笔记。 作为计算机专业的学习记录,本文将系统梳理通讯录项目的相关知识点,从基础概念到代码实现逐步展开,便于后续复习巩固,这里我们会用到上篇的知识,(如果其中有不懂的,大家可…...

企业级Windows日志监控架构设计:构建高可用分布式日志系统

企业级Windows日志监控架构设计:构建高可用分布式日志系统 【免费下载链接】visualsyslog Syslog Server for Windows with a graphical user interface 项目地址: https://gitcode.com/gh_mirrors/vi/visualsyslog 在当今复杂的IT环境中,企业级日…...

ECharts 从版本4升级到版本5的实战指南与常见问题解析

1. 为什么要升级到ECharts 5? 如果你还在使用ECharts 4,可能会遇到一些困扰:某些API突然报错、文档里找不到对应的配置项、或者看到控制台频繁弹出"DEPRECATED"警告。这些都是因为ECharts 5带来了大量优化和改动。我在去年负责公司…...

微信小程序文件缓存优化:从基础到高级的完整实践指南

1. 微信小程序文件缓存的核心挑战 第一次开发微信小程序时,我遇到了一个棘手的问题:用户反馈图片加载慢,尤其是重复访问时仍然需要等待。这才意识到文件缓存没做好,不仅影响用户体验,还浪费流量。微信小程序的缓存系统…...

高效百度网盘直链解析架构解析:从协议逆向到企业级部署方案

高效百度网盘直链解析架构解析:从协议逆向到企业级部署方案 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 百度网盘直链解析技术作为解决云存储资源访问效率瓶颈的…...

deepin25.10安装claude

deepin25.10安装claude 软件备注nodejscladue运行环境git版本控制国产大模型api-key商业策略cc switch管理大模型claduevscode如果不习惯命令行操作可以选择一个图画工具 准备 创建软件安装目录 mkdir ~/optnodejs 下载nodejs wget https://nodejs.org/dist/v24.14.1/node-v…...

LMS自适应滤波器算法:从原理到实践

1. LMS自适应滤波器:让机器学会"自动调音" 想象一下你戴着降噪耳机坐地铁,周围人声嘈杂,但耳机却能神奇地保留音乐声、消除环境噪音。这种"智能降噪"的核心技术之一,就是我们要聊的LMS自适应滤波器。它就像个…...

怎么鉴定用了Tritan材质?2026权威指南:从感官体验到官方溯源

在健康消费成为主流的今天,Tritan材质凭借其“近似玻璃般透亮、塑料般坚韧”的特性,成为水杯、奶瓶等日用品的“明星材料”。然而,随着市场热度攀升,部分商家开始用普通PET、劣质回收料冒充Tritan。究竟怎么鉴定用了Tritan材质&am…...

HunterPie终极指南:如何通过现代叠加层提升《怪物猎人世界》游戏体验

HunterPie终极指南:如何通过现代叠加层提升《怪物猎人世界》游戏体验 【免费下载链接】HunterPie-legacy A complete, modern and clean overlay with Discord Rich Presence integration for Monster Hunter: World. 项目地址: https://gitcode.com/gh_mirrors/h…...

歌词滚动姬:3分钟学会制作专业LRC歌词的免费神器

歌词滚动姬:3分钟学会制作专业LRC歌词的免费神器 【免费下载链接】lrc-maker 歌词滚动姬|可能是你所能见到的最好用的歌词制作工具 项目地址: https://gitcode.com/gh_mirrors/lr/lrc-maker 还在为制作歌词同步而烦恼吗?每次都要反复暂…...