Springboot 整合 Flowable(一):使用 flowable-UI 绘制流程图

目录
一、Flowable简介
二、Flowable 与 Activiti 的区别
三、流程图的绘制(以员工请假流程图为例)
1、下载 flowable 的压缩包:
2、启动包中的 tomcat
3、登录页面
4、绘制结束,导出 bpmn20.xml文件
一、Flowable简介
Flowable 是一个使用 Java 编写的轻量级业务流程引擎。Flowable 流程引擎可用于部署 BPMN 2.0流程定义(用于定义流程的行业XML标准), 创建这些流程定义的流程实例,进行查询,访问运行中或历史的流程实例与相关数据等等。
—— 以上来源于中文版用户手册:flowable-userguide
👉 补充概念知识:
1、BPM:
“通过建模、自动化、管理和优化流程,打破跨部门跨系统业务过程依赖、打破信息孤岛,提高业务效率和效果”,通俗一点讲,就是工作流引擎。在进行流程设计时,需要将流程的元素进行定义,并按照一定的格式、标准运行,这就需要一套业务规范,这套规范就是BPM。
2、BPMN1.0:
“业务流程建模标注”,从语义上我们就能理解,BPMN1.0就是将流程定义标准化的一套规则、规范。提出这套标准化的就是OMG(国际性、开放式会员制的非盈利技术标准联盟),这套标准是独立于企业的标准。
3、BPMN2.0:
BPMN2.0相对于BPMN1.0最大的区别就是定义、规范了流程引擎的执行语义和格式,利用标准的图元描述真实的业务发生过程,保证相同的流程在不同的流程引擎中得到一致的执行结果。在BPMN2.0的这套标准中,主要对流程执行定义了三类基本要素,分别为Activities(活动)、Gateways(网关)、Events(事件)。
二、Flowable 与 Activiti 的区别
| 优点 | 缺点 | |
| Flowable | 1、架构灵活:Flowable的架构非常灵活,可以轻松地嵌入到Spring或者其他Java应用中,也可以作为独立的服务运行。 2、扩展性强:Flowable提供了插件机制,可以方便地扩展和定制工作流引擎的功能。 3、高可用性:Flowable支持分布式部署,可以实现高可用性的工作流引擎。 4、维护活跃:Flowable项目有一个活跃的社区,提供了及时的技术支持和更新。 | 1、文档相对较少:Flowable相对于Activiti,文档相对较少。 2、社区相对较小:Flowable的社区相对于Activiti,规模较小。 |
| Activiti | 1、文档详细:Activiti的官方文档非常详细,易于新手学习和使用。 2、社区活跃:Activiti的社区规模较大,提供了广泛的技术支持和资源。 3、易于集成:Activiti可以轻松地与Spring集成,也可以作为独立的服务运行。 4、贡献者较多:Activiti是一个比较成熟的工作流引擎,有大量的贡献者和用户,可以提供成熟的解决方案。 | 1、扩展性较弱:Activiti的插件机制较为有限,扩展和定制功能不如Flowable方便。 2、可靠性较低:Activiti在一些用户反馈的场景下,存在一些稳定性问题,需要注意。 |
三、流程图的绘制(以员工请假流程图为例)
1、下载 flowable 的压缩包:
① 下载地址:https://github.com/flowable/flowable-engine/releases/tag/flowable-6.6.0/

百度网盘:链接:https://pan.baidu.com/s/11c0TQ45tfl3trt3drkI1Hg
提取码:2sfq
② 解压后,将 flowable-6.6.0\flowable-6.6.0\wars 下的两个文件拷贝到 tomcat下的 apache-tomcat-8.5.57\webapps 下


2、启动包中的 tomcat
双击 \apache-tomcat-8.5.57\bin\startup.bat,启动 tomcat

3、登录页面
地址:http://localhost:8080/flowable-ui
默认用户名:admin
密码:test





相关概念:
- 事件(event):通常用于为流程生命周期中发生的事情建模,图里是【开始、结束】两个圈。
- 顺序流(sequence flow)是流程中两个元素间的连接器。图里是【箭头线段】。
- 网关(gateway)用于控制执行的流向。图里是【菱形(中间有X)】
- 用户任务(user task)用于对需要人工执行的任务进行建模。图里是【矩形】。
注意事项:
- 考虑易读性,每个组件最好设置主键ID。
- 分配用户可以选择候选人或者候选组。

候选组需要提前创建


顺序流可以设置流条件来限制流动

4、绘制结束,导出 bpmn20.xml文件



相关文章:
Springboot 整合 Flowable(一):使用 flowable-UI 绘制流程图
目录 一、Flowable简介 二、Flowable 与 Activiti 的区别 三、流程图的绘制(以员工请假流程图为例) 1、下载 flowable 的压缩包: 2、启动包中的 tomcat 3、登录页面 4、绘制结束,导出 bpmn20.xml文件 一、Flowable简介 Fl…...
课设--学生成绩管理系统(一)
欢迎来到 Papicatch的博客 文章目录 🍉技术核心 🍉引言 🍈标识 🍈背景 🍈项目概述 🍈 文档概述 🍉可行性分析的前提 🍈项目的要求 🍈项目的目标 🍈…...
thinkphp5模型的高级应用
ThinkPHP5 是一个基于 PHP 的轻量级框架,它提供了许多便利的功能来简化 Web 开发。在 ThinkPHP5 中,模型(Model)是 MVC(Model-View-Controller)架构中的重要组成部分,负责处理数据逻辑。以下是一…...
XML XSLT:技术与应用解析
XML XSLT:技术与应用解析 XML(可扩展标记语言)和XSLT(XML样式表转换语言)是现代信息技术中不可或缺的工具。本文将深入探讨XML和XSLT的概念、技术细节以及它们在实际应用中的作用。 XML简介 XML是一种用于存储和传输…...
嵌入式单片机中项目在线仿真工具分享
前段时间,无意间发现了一个不错的在线仿真工具(Wokwi),支持多种平台,支持市面上主流的开发板,比如:STM32、ESP32、Arduino、树莓派等。 还支持常见的传感器、显示器件(LCD、LED屏幕)等,还可以播放音乐、联网、逻辑分析仪等,关键还提供了很多实际项目的案例。 这款工…...
Unity动态添加聊天文本
1.创建一个滚动视图 2.调整滚动视图的位置并删掉这个 3.创建一个输入框和一个按钮 这里插一句一定要给content添加这个组件并设置单元格大小 4创建一个脚本并编写下面代码 using System.Collections; using System.Collections.Generic; using TMPro; using Unity.VisualScrip…...
力扣-2269. 找到一个数字的 K 美丽值
文章目录 力扣题目代码工程C实现python实现 力扣题目 一个整数 num 的 k 美丽值定义为 num 中符合以下条件的 子字符串 数目: 子字符串长度为 k 。 子字符串能整除 num 。 给你整数 num 和 k ,请你返回 num 的 k 美丽值。 注意: 允许有 前…...
一个在C#中集成Python的例子
一个在C#中集成Python的例子。在C#中可以执行Python脚本,在Python中也可以调用C#宿主中的功能(clr.AddReference(Business))。 文件说明 Debug为执行目录 Mgr.exe为执行文件 Py\init.py为python初始化脚本 Py\Lib.zip为python需要的模块&…...
基于RandLA-Net深度学习模型的激光点云语义分割
一、场景要素语义分割部分的文献阅读笔记 RandLA-Net是一种高效、轻量级的神经网络,其可直接逐点推理大规模点云的语义标签。RandLA-Net基于随机点采样获得了显著的计算和内存效率,并采用新的局部特征聚合模块有效地保留了几何细节,弥补了随机…...
C语言的结构体与联合体
引言 C语言提供了结构体和联合体两种聚合数据类型,使得程序员可以创建包括多个数据类型的复杂数据结构。结构体用于将不同类型的数据组合成一个单元,而联合体用于在同一存储空间中存储不同类型的数据。本篇文章将详细介绍C语言中的结构体和联合体&#x…...
React Hooks小记(三)_forwardRef
forwardRef 【写在前面】 1、ref 的作用是获取实例,但由于函数组件不存在实例,因此无法通过 ref 获取函数组件的实例引用,而 React.forwardRef 就是用来解决这个问题的。 2、React.forwardRef 会创建一个 React 组件,这个组…...
面试复习记录
六级终于结束了,之前背的八股几乎也忘得差不多了,今天开始继续准备秋招,以下是每天的安排,会按时更新,就当是一种对自己的督促,也欢迎小伙伴们一起来互相监督。 2024.6.16 力扣:sql基础题库50…...
块级元素与行内元素详解
在网页设计与开发中,元素根据其在页面布局中的表现可分为两大类:块级元素(Block-level Elements)和行内元素(Inline Elements)。理解它们的特性和使用规则对于构建结构清晰、布局合理的网页至关重要。 块级…...
Kotlin编程实践-【Java如何调用Kotlin中带默认值参数的函数】
问题 如果你有一个带有默认参数值的 Kotlin 函数,如何从 Java 调用它而无须为每个参数显式指定值? 方案 为函数添加注解JvmOverloads。 也就是为Java添加重载方法,这样Java调用Kotlin的方法时就不用传递全部的参数了。 示例 在 Kotlin …...
中国城市统计年鉴(1985-2023年)
数据年限:1985-2023 数据格式:pdf、excel 数据内容:共分四个部分 第一部分是全国城市行政区划,列有不同区域、不同级别的城市分布情况; 第二、三部分分别是地级以上城市统计资料和县级城市统计资料,具体包括…...
RestTemplate远程请求的艺术
1 简说 编程是一门艺术,追求优雅的代码就像追求优美的音乐。 很多有多年工作经验的开发者,在使用RestTemplate之前常常使用HttpClient,然而接触了RestTemplate之后,却愿意放弃多年相处的“老朋友”,转向RestTemplate。那么一定是RestTemplate有它的魅力,有它的艺术风范。…...
Spring 整合 MyBatis 底层源码解析
大家好,我是柳岸花开。今天我们要讲的是 Spring 整合 MyBatis 的底层源码解析。希望大家能更深入理解 Spring 和 MyBatis 的整合原理,并应用到实际项目中。 由很多框架都需要和Spring进行整合,而整合的核心思想就是把其他框架所产生的对象放到…...
LeetCode 189.轮转数组
1.这个题我用的方法比较巧妙,大家如果觉得好的话,就给个免费的赞吧^ _ ^,谢谢了。 void reverse(int* nums,int left,int right) {while(left < right){int a nums[left];nums[left] nums[right];nums[right] a;left;right--;} } void rotate(int…...
JDK17 你的下一个白月光
JDK版本升级的非常快,现在已经到JDK20了。JDK版本虽多,但应用最广泛的还得是JDK8,正所谓“他发任他发,我用Java8”。 但实际情况却不是这样,越来越多的java工程师拥抱 JDK17,于是了解了一下 JDK17新语法&a…...
springboot优雅shutdown时如何保障异步线程的安全
我前面写了一篇springboot优雅shutdown的文章,看起来一切很美好。 https://blog.csdn.net/chenshm/article/details/139640775 那是因为没有进行多线程测试。如果一个请求中包括阻塞线程(主线程)和非阻塞线程(异步线程)…...
【华为OD机试真题】战场索敌 · 区域统计问题 (Java/Go)
一、题目题目描述:有一个大小是 N*M 的战场地图,被墙壁 # 分隔成大小不同的区域。上下左右四个方向相邻的空地 . 属于同一个区域。只有空地上可能存在敌人 E。请求出地图上总共有多少区域里的敌人数小于 K。输入描述:第一行输入为 N, M, K&am…...
Realistic Vision V5.1 为SolidWorks模型渲染宣传图:工业设计可视化新流程
Realistic Vision V5.1 为SolidWorks模型渲染宣传图:工业设计可视化新流程 你是不是也遇到过这种情况?在SolidWorks里精心设计了一个产品模型,到了要出宣传图、给客户展示或者做方案汇报的时候,就头疼了。要么得花大半天甚至几天…...
7.企业级开发
一.软件开发的流程二.系统开发环境三.分支设计规范Git Flow模型四.企业级项目管理https://gitee.com/enterprises1.创建项目2.创建项目对应的仓库3.添加成员还可以进行(项目/仓库)成员管理五.开发实战场景1.创建仓库时,一般选生产和开发模型,其他的分支自己创建2.创建新分支:3.…...
Chrome WebRTC 实战:构建高可靠实时通信系统的关键技术与避坑指南
最近在做一个需要实时音视频通信的项目,选型时自然想到了 WebRTC。虽然标准很美好,但在 Chrome 浏览器里真正把它用起来、特别是用到生产环境,那真是“坑”出不穷。从 NAT 穿不透导致连不上,到不同设备上视频卡成 PPT,…...
MGeo地址要素解析模型惊艳效果展示:省市区街道门牌号全自动识别案例集
MGeo地址要素解析模型惊艳效果展示:省市区街道门牌号全自动识别案例集 1. 引言:当AI“读懂”你的地址 你有没有遇到过这样的场景?填写快递单时,把“XX省XX市XX区XX街道XX号”一股脑儿写进去,结果系统识别不出来&…...
【Python工业视觉部署黄金法则】:20年实战总结的5大避坑指南与实时推理加速秘籍
第一章:Python工业视觉部署的工程化本质与挑战全景工业视觉系统在产线落地时,远非“模型训练完成 → 用OpenCV加载推理”这般线性。其核心矛盾在于:算法原型追求精度与泛化,而工程部署必须兼顾实时性、鲁棒性、可维护性与硬件约束…...
RWKV7-1.5B-g1a入门必看:轻量中文问答/文案续写/摘要生成快速上手指南
RWKV7-1.5B-g1a入门必看:轻量中文问答/文案续写/摘要生成快速上手指南 1. 模型简介 RWKV7-1.5B-g1a是一个基于RWKV-7架构的多语言文本生成模型,特别适合中文场景下的基础问答、文案续写、简短总结和轻量对话任务。这个1.5B参数的版本在保持良好生成质量…...
OpenClaw多模型切换:nanobot镜像动态加载不同规格Qwen
OpenClaw多模型切换:nanobot镜像动态加载不同规格Qwen 1. 为什么需要动态切换模型 在本地部署AI助手时,我发现一个痛点:不同任务对模型能力的需求差异很大。简单任务如整理文件、生成周报草稿,用7B参数模型完全够用;…...
再生资源行业的数字涅槃:SAP如何驱动“制造+服务”一体化转型(PPT)
“在循环经济与‘双碳’战略的双重驱动下,再生资源企业正从传统的‘收-储-售’贸易商,向集设备全生命周期管理、高端再制造、专业化总包服务于一体的综合解决方案提供商跃迁。这场深刻的商业模式变革,呼唤一个能够贯通‘制造’与‘服务’、融…...
OpenClaw权限管理:GLM-4.7-Flash敏感操作的安全确认机制
OpenClaw权限管理:GLM-4.7-Flash敏感操作的安全确认机制 1. 为什么需要安全确认机制 上周我在用OpenClaw自动整理项目文档时,差点酿成一场灾难。当时AI助手误将/Users/me/Documents/project识别为临时文件夹,准备执行rm -rf清理操作——如果…...
