【flowable 7.2.0 二开之三:基于 Flowable 7.2 的审批流系统解压即用】

flowable 7.2.0 二开之三:基于 Flowable 7.2 的审批流系统解压即用

背景和痛点

工作流引擎如 Flowable、Camunda 功能强大,但对于中小项目来说学习成本和配置复杂度偏高。很多场景下,开发者需要的只是一个能快速跑起来、方便修改和二次开发的轻量级审批流系统。本文介绍的就是这样一套方案

技术架构

后端:Spring Boot 2.7 + Flowable 7.2 + MyBatis-Plus

前端:Vue 3 + Element Plus + bpmn-js

数据库:H2(内嵌,开箱即用)/ MySQL(生产环境)

部署:一个 Jar 包,解压即运行

整体架构

系统采用前后端分离架构,前端编译后打包到后端 Jar 中,实现一键部署。

层级 技术选型 说明

前端 Vue 3 + Element Plus 现代化 UI 框架

流程设计 bpmn-js BPMN 2.0 流程设计器

表单设计 form-create 可视化表单设计器

后端 Spring Boot 2.7 基础框架

流程引擎 Flowable 7.2 核心工作流引擎

ORM MyBatis-Plus 数据访问层

数据层 H2 / MySQL H2 用于开箱即用,MySQL 用于生产

缓存 Redis 会话管理、分布式锁

部署 Jar 包 + 内置 JRE 解压即运行

数据流向

用户操作 → 前端 Vue 组件

API 请求 → Spring Boot Controller

业务处理 → Service 层调用 Flowable API

数据持久化 → MyBatis-Plus / Flowable 自动建表

流程驱动 → Flowable 引擎解析 BPMN 并推进流程

核心扩展点

bpmn-js 扩展:通过 customForm.json 为流程节点增加自定义属性(可写字段、只读字段等)

Flowable 监听器:支持任务创建、完成等事件的自定义处理

核心功能实现

1. 流程设计器集成

基于 bpmn-js 实现可视化流程设计,支持 BPMN 2.0 标准。通过自定义 customForm.json 扩展了节点属性(可写字段、只读字段、办理人配置等)



2. 表单设计器集成

基于 form-create 实现拖拽式表单设计,支持文本、数字、日期、下拉框、表格布局等组件。


3. 条件分支实现

以请假流程为例:配置表达式 ${leaveDays > 3} 实现天数判断,满足条件时走总经理审批。

4. 办理人动态分配

在 BPMN 节点上配置 custom:assignee,通过后端 addUserTaskAttributes 转换为 flowable:assignee,支持指定用户、角色、发起人等类型。


5.字段级权限控制

在流程设计时为每个节点配置可写/只读字段,前端 TaskProcessDialog 根据权限动态控制表单编辑状态

发起节点,都是可以写的字段

处理任务,字段都设置只读。

项目亮点

✅ 开箱即用:内嵌 H2 数据库,解压双击启动

✅ 流程设计:BPMN 2.0 可视化拖拽

✅ 表单设计:拖拽生成,所见即所得

✅ 条件分支:支持金额、天数等复杂判断

✅ 字段权限:节点级可写/只读控制

开源版 vs 商业版

功能 开源版 商业版

流程/表单设计 ✅ ✅

条件分支 ✅ ✅

会签/驳回 ✅ ✅

字段权限 ✅ ✅

数据库 H2(内嵌) MySQL

生产环境推荐 ❌ ✅

源码交付 GitHub 公开 私有仓库完整源码

技术支持 社区 1 年专属

商业授权 Apache 2.0 商业授权

开源版功能齐全,适合学习体验;商业版专为生产环境打造,数据库更强、源码私有、有技术支持。

如何获取

开源版:GitHub 地址:https://gitee.com/longsebo/smart-flowable.git

B站视频链接:【一个zip压缩包搞定企业审批流Flowable工作流系统演示

相关推荐
Apache RocketMQ1 天前
RocketMQ源码解析——秒级定时消息介绍
java·云原生·消息队列·rocketmq·java-rocketmq
xiaoming00181 天前
JAVA项目打包部署运维全流程(多服务、批量)
java·linux·运维
拾-光1 天前
【Git】命令大全:从入门到高手,100 个最常用命令速查(2026 版)
java·大数据·人工智能·git·python·elasticsearch·设计模式
无人不xiao1 天前
springBoot 实现 接口进度条
java·spring boot·后端
pkowner1 天前
若依分页问题及解决方法
java·前端·算法
largecode1 天前
如何让电话显示店名?来电显示店铺名称,提升有效接通率
java·开发语言·spring·百度·学习方法·业界资讯·twitter
xuhaoyu_cpp_java1 天前
SpringMVC学习(五)
java·开发语言·经验分享·笔记·学习·spring
计算机安禾1 天前
【c++面向对象编程】第22篇:输入输出运算符重载:<< 与 >> 的友元实现
java·前端·c++
旷世奇才李先生1 天前
Java虚拟线程原理与实践
java
heimeiyingwang1 天前
【架构实战】RPC框架Dubbo3.0:高性能Java通信之道
java·rpc·架构