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

Spring Boot 集成 Flowable UI 实现请假流程 Demo

 ​

博客主页:     南来_北往

系列专栏:Spring Boot实战


在现代企业应用中,工作流管理是一个至关重要的部分。通过使用Spring Boot和Flowable,可以方便地构建和管理工作流。本文将详细介绍如何在Spring Boot项目中集成Flowable UI,并实现一个简单的请假流程。

1. 环境准备
  • JDK版本:1.8
  • Maven版本:3.x
  • Spring Boot版本:2.7.5
  • Flowable版本:6.6.0
  • 数据库:MySQL 8.0
2. 创建Spring Boot项目

首先,使用Spring Initializr或任何你喜欢的IDE(如IntelliJ IDEA或Eclipse)创建一个新的Spring Boot项目。

3. 添加依赖

pom.xml文件中添加以下依赖:

<properties>  <maven.compiler.source>8</maven.compiler.source>  <maven.compiler.target>8</maven.compiler.target>  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  <flowable.version>6.6.0</flowable.version>  
</properties>  <parent>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-parent</artifactId>  <version>2.7.5</version>  
</parent>  <dependencies>  <dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-web</artifactId>  </dependency>  <dependency>  <groupId>org.flowable</groupId>  <artifactId>flowable-spring-boot-starter</artifactId>  <version>${flowable.version}</version>  </dependency>  <dependency>  <groupId>org.flowable</groupId>  <artifactId>flowable-spring-boot-starter-ui-idm</artifactId>  <version>${flowable.version}</version>  </dependency>  <dependency>  <groupId>org.flowable</groupId>  <artifactId>flowable-spring-boot-starter-ui-modeler</artifactId>  <version>${flowable.version}</version>  </dependency>  <dependency>  <groupId>mysql</groupId>  <artifactId>mysql-connector-java</artifactId>  <version>8.0.31</version>  </dependency>  <dependency>  <groupId>org.mybatis.spring.boot</groupId>  <artifactId>mybatis-spring-boot-starter</artifactId>  <version>2.2.2</version>  </dependency>  <dependency>  <groupId>org.projectlombok</groupId>  <artifactId>lombok</artifactId>  </dependency>  <dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-test</artifactId>  <scope>test</scope>  </dependency>  
</dependencies>
4. 配置数据库连接

application.properties文件中配置数据库连接信息:

# 端口  
server.port=8081  # UI相关信息  
flowable.idm.app.admin.user-id=admin  
flowable.idm.app.admin.password=admin  
flowable.idm.app.admin.first-name=xxx  
flowable.idm.app.admin.last-name=xxx  
flowable.database-schema-update=true  # 关闭定时任务JOB  
flowable.async-executor-activate=false  # 数据库  
spring.datasource.url=jdbc:mysql://localhost:3306/flowable-test?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true  
spring.datasource.username=root  
spring.datasource.password=123456  
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver  
spring.datasource.type=com.zaxxer.hikari.HikariDataSource  # 日志  
logging.level.org.flowable=DEBUG

确保在MySQL中创建一个名为flowable-test的数据库,Flowable会在启动时自动创建所需的表。

5. 配置Flowable UI

Flowable UI是一个用于设计和管理工作流的Web应用。在Spring Boot项目中集成Flowable UI需要添加相应的依赖并配置相应的资源。

确保你的pom.xml中已经包含了Flowable UI的依赖:

<dependency>  <groupId>org.flowable</groupId>  <artifactId>flowable-spring-boot-starter-ui-idm</artifactId>  <version>${flowable.version}</version>  
</dependency>  
<dependency>  <groupId>org.flowable</groupId>  <artifactId>flowable-spring-boot-starter-ui-modeler</artifactId>  <version>${flowable.version}</version>  
</dependency>

然后,在Spring Boot应用的resources目录下创建META-INF文件夹,并复制flowable-default.properties文件到该文件夹中。这个文件用于配置Flowable UI的默认设置。

6. 设计请假流程
  1. 启动Spring Boot应用。
  2. 访问Flowable UI的Modeler页面(通常是http://localhost:8081/flowable-modeler)。
  3. 在Modeler中创建一个新的流程模型,并设计请假流程。例如,你可以添加“申请请假”、“组长审批”、“经理审批”等节点。
  4. 保存并发布流程模型。
7. 实现请假流程的控制逻辑

在Spring Boot项目中实现请假流程的控制逻辑,包括启动流程、查询任务、审批任务等。

import org.flowable.engine.RuntimeService;  
import org.flowable.engine.TaskService;  
import org.flowable.engine.runtime.ProcessInstance;  
import org.flowable.task.api.Task;  
import org.springframework.beans.factory.annotation.Autowired;  
import org.springframework.web.bind.annotation.*;  import java.util.HashMap;  
import java.util.List;  
import java.util.Map;  @RestController  
@RequestMapping("/leave")  
public class LeaveController {  @Autowired  private RuntimeService runtimeService;  @Autowired  private TaskService taskService;  // 发起请假流程  @PostMapping("/apply")  public String applyLeave(@RequestParam String userId, @RequestParam int days, @RequestParam String description) {  Map<String, Object> variables = new HashMap<>();  variables.put("userId", userId);  variables.put("days", days);  variables.put("description", description);  ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("leaveProcess", variables);  return "流程启动成功,流程ID:" + processInstance.getId();  }  // 查询待办任务  @GetMapping("/my-tasks")  public List<Task> getMyTasks(@RequestParam String userId) {  return taskService.createTaskQuery().taskAssignee(userId).list();  }  // 审批任务  @PostMapping("/approve")  public String approveTask(@RequestParam String taskId, @RequestParam String outcome) {  taskService.complete(taskId, Collections.singletonMap("outcome", outcome));  return "任务审批成功";  }  
}
8. 启动应用并测试

启动Spring Boot应用,并访问Flowable UI页面进行流程设计和管理。然后,通过API接口或Postman等工具测试请假流程的控制逻辑。

至此,你已经成功地在Spring Boot项目中集成了Flowable UI,并实现了一个简单的请假流程。你可以根据实际需求进一步扩展和优化这个流程。

相关文章:

Spring Boot 集成 Flowable UI 实现请假流程 Demo

​ 博客主页: 南来_北往 系列专栏&#xff1a;Spring Boot实战 在现代企业应用中&#xff0c;工作流管理是一个至关重要的部分。通过使用Spring Boot和Flowable&#xff0c;可以方便地构建和管理工作流。本文将详细介绍如何在Spring Boot项目中集成Flowable UI&#xff0c…...

毕业设计选题:基于ssm+vue+uniapp的医院管理系统小程序

开发语言&#xff1a;Java框架&#xff1a;ssmuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;M…...

自动驾驶系列—线控悬架技术:自动驾驶背后的动力学掌控者

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…...

CTF刷题buuctf

[WUSTCTF2020]颜值成绩查询 拿到相关题目&#xff0c;其实根据功能和参数分析。需要传入一个学号然后进行针对于对应的学号进行一个查询&#xff0c;很可能就会存在sql注入。 其实这道题最难的点&#xff0c;在于过滤了空格&#xff0c;因此我们使用 /**/来过滤空格的限制。…...

Qt QWidget控件

目录 一、概述 二、Qwidget常用属性及函数介绍 2.1 enable 2.2 geometry 2.3 windowTitle 2.4 windowIcon 2.5 cursor 2.6 font 设置字体样式 2.7 toolTip 2.8 focusPolicy焦点策略 2.9 styleSheet 一、概述 widget翻译而来就是小控件&#xff0c;小部件。…...

如何通过Dockfile更改docker中ubuntu的apt源

首先明确我们有一个宿主机和一个docker环境&#xff0c;接下来的步骤是基于他们两个完成的 1.在宿主机上创建Dockerfile 随便将后面创建的Dockerfile放在一个位置,我这里选择的是 /Desktop 使用vim前默认你已经安装好了vim 2.在输入命令“vim Dockerfile”之后&#xff0c;…...

[C++][第三方库][jsoncpp]详细讲解

目录 1.介绍2.jsoncpp3.使用1.main.cc2.序列化3.反序列化 1.介绍 json是一种数据交换格式&#xff0c;采用完全独立于编程语言的文本格式来存储和表示数据json数据类型&#xff1a;对象、数组、字符串、数字 对象&#xff1a;使用{}括起来的表示一个对象数组&#xff1a;使用[…...

JavaScript中decodeURIComponent函数的深入解析与应用指南

在Web开发中&#xff0c;经常需要对URI&#xff08;统一资源标识符&#xff09;进行编码和解码&#xff0c;以保证数据传输的准确性和可靠性。decodeURIComponent函数是JavaScript中用于解码由encodeURIComponent函数或其他类似方法编码的部分统一资源标识符&#xff08;URI&am…...

DMA方式为什么无需保护现场

DMA&#xff08;Direct Memory Access&#xff09;方式无需保护现场的原因主要与其工作原理和硬件设计有关。以下是对这一问题的详细解释&#xff1a; DMA工作原理 DMA是一种通过硬件直接在内存和外设之间传输数据的技术&#xff0c;无需CPU的介入。在DMA传输过程中&#xff…...

区块链可投会议CCF C--FC 2025 截止10.8 附录用率

Conference&#xff1a;Financial Cryptography and Data Security (FC) CCF level&#xff1a;CCF C Categories&#xff1a;network and information security Year&#xff1a;2025 Conference time&#xff1a;14–18 April 2025, Miyakojima, Japan 录用率&#xff1…...

springboot系列--web相关知识探索四

一、前言 web相关知识探索三中研究了请求中所带的参数是如何映射到接口参数中的&#xff0c;也即请求参数如何与接口参数绑定。主要有四种、分别是注解方式、Servlet API方式、复杂参数、以及自定义对象参数。web相关知识探索三中主要研究了注解方式以及Servlet API方式。本次…...

在PyQt5中,清空一个QFrame中的所有控件

在PyQt5中&#xff0c;如果你想要清空一个QFrame中的所有控件&#xff0c;你需要遍历该QFrame的布局&#xff08;假设你已经在其中添加了一个布局&#xff0c;比如QVBoxLayout或QHBoxLayout&#xff09;&#xff0c;并从布局中移除所有的控件。由于直接从布局中移除控件并不会立…...

SpringBoot实现:校园资料分享平台开发指南

1系统概述 1.1 研究背景 如今互联网高速发展&#xff0c;网络遍布全球&#xff0c;通过互联网发布的消息能快而方便的传播到世界每个角落&#xff0c;并且互联网上能传播的信息也很广&#xff0c;比如文字、图片、声音、视频等。从而&#xff0c;这种种好处使得互联网成了信息传…...

Redis篇(缓存机制 - 基本介绍)(持续更新迭代)

目录 一、缓存介绍 二、经典三缓存问题 1. 缓存穿透 1.1. 简介 1.2. 解决方案 1.3. 总结 2. 缓存雪崩 2.1. 简介 2.2. 解决方案 2.3. 总结 3. 缓存击穿 3.1. 简介 3.2. 解决方案 3.3. 总结 4. 经典三缓存问题出现的根本原因 三、常见双缓存方案 1. 缓存预热 1…...

引领5G驱动的全球数字营销革新:章鱼移动广告全球平台的崛起

引领5G驱动的全球数字营销革新&#xff1a;章鱼移动广告全球平台的崛起 作为章鱼移动广告平台的营销战略顾问&#xff0c;黄珍珍通过她在市场营销、品牌推广、技术整合等多方面的丰富经验&#xff0c;成功推动了这一平台在全球广告市场的崛起。她不仅为平台的国际化扩展奠定了基…...

思维链ChatGPT

建立客户端 from openai import OpenAI client OpenAI(base_url"https://api.chatanywhere.tech/v1" )示例1 response client.chat.completions.create(model"gpt-3.5-turbo",messages[{"role": "user","content": &quo…...

idea中的Java版本运行错误

1.java: java.lang.NoSuchFieldError: Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field com.sun.tools.javac.tree.JCTree qualid 这个错误通常是由于升级到Java 21后,Lombok等库无法正确访问内部的Java编译器API导致的。具体原因如下: Lombok在…...

用HTML5+CSS+JavaScript庆祝国庆

用HTML5CSSJavaScript庆祝国庆 中华人民共和国的国庆日是每年的10月1日。 1949年10月1日&#xff0c;中华人民共和国中央人民政府成立&#xff0c;在首都北京天安门广场举行了开国大典&#xff0c;中央人民政府主席毛泽东庄严宣告中华人民共和国成立&#xff0c;并亲手升起了…...

《OpenCV 计算机视觉》—— 视频背景建模

文章目录 一、背景建模的目的二、背景建模的方法三、背景建模的步骤四、注意事项五、代码实现 一、背景建模的目的 视频背景建模的主要目的是从视频序列中提取出静态背景&#xff0c;以便将动态的前景对象与静态的背景进行分离。这有助于进一步分析和处理视频内容&#xff0c;…...

【Mac】和【安卓手机】 通过有线方式实现投屏

Mac 和 安卓手机 实现投屏&#xff08;有线&#xff09; 1.下载HomeBrew /bin/bash -c "$(curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/install/master/install.sh)"2.安装Scrcpy brew install scrcpy3.安装adb brew install android-platfor…...

BiliBiliToolPro:解放双手的B站自动化神器,让你的账号管理从未如此轻松

BiliBiliToolPro&#xff1a;解放双手的B站自动化神器&#xff0c;让你的账号管理从未如此轻松 【免费下载链接】BiliBiliToolPro B 站&#xff08;bilibili&#xff09;自动任务工具&#xff0c;支持docker、青龙、k8s等多种部署方式。全面拥抱AI。敏感肌也能用。 项目地址:…...

避坑指南:在Ubuntu 22.04上用Anaconda配置Vision-Mamba环境,解决‘bimamba_type‘报错

深度避坑&#xff1a;Ubuntu 22.04下Vision-Mamba环境配置全攻略 在深度学习项目部署过程中&#xff0c;环境配置往往是第一个拦路虎。最近在配置Vision-Mamba环境时&#xff0c;我遇到了几个令人头疼的问题&#xff0c;特别是那个让人摸不着头脑的bimamba_type报错。经过一番折…...

5步实现Windows电脑直接运行安卓应用:APK安装器终极指南

5步实现Windows电脑直接运行安卓应用&#xff1a;APK安装器终极指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer APK安装器是一款革命性的Windows工具&#xff0c;让…...

ESP32 OTA升级避坑指南:用Python脚本一键搭建本地服务器,告别手动配置

ESP32 OTA升级实战&#xff1a;Python自动化方案与高频问题破解 当你的ESP32设备部署在难以物理接触的场合——比如嵌入墙体的智能开关、高架桥上的环境监测节点&#xff0c;或是旋转机械内部的振动传感器&#xff0c;固件更新就成了开发者的噩梦。传统烧录器方案需要专人携带设…...

嵌入式操作系统选型实战指南:从硬件约束到商业考量的五维决策框架

1. 项目概述&#xff1a;一个困扰无数工程师的经典难题干了十几年嵌入式&#xff0c;从8位单片机玩到多核ARM&#xff0c;从裸机撸到各种RTOS&#xff0c;再到Linux、Android&#xff0c;最常被问到也最头疼的问题之一就是&#xff1a;“老大&#xff0c;新项目用哪个操作系统好…...

SpringBoot3 + JDK17 项目实战:用MyBatis-Plus和Redis快速搭建一个用户管理系统

SpringBoot3 JDK17 实战&#xff1a;构建高性能用户管理系统 最近在重构公司内部的管理系统时&#xff0c;我选择了SpringBoot3和JDK17这套组合。新版本带来的性能提升和语法糖让开发效率提高了不少&#xff0c;特别是记录日志和编写Lambda表达式时。本文将带你从零开始&#…...

从API密钥管理角度感受Taotoken控制台的安全与便捷

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 从API密钥管理角度感受Taotoken控制台的安全与便捷 作为项目或团队的技术负责人&#xff0c;管理多个大模型服务的API密钥是一项既…...

【免费下载】 Windows Installer Clean Up 简体中文版

Windows Installer Clean Up 简体中文版 【下载地址】WindowsInstallerCleanUp简体中文版 本仓库提供了一个名为“Windows Installer Clean Up 简体中文”的资源文件下载。该工具是一款专门用于清理Windows系统中的安装程序残留文件的实用工具。通过使用此工具&#xff0c;您可…...

别再混淆了!用PyTorch代码带你彻底搞懂PointNet里的Shared MLP和普通MLP

用PyTorch代码解密PointNet中的Shared MLP与普通MLP本质差异 第一次阅读PointNet论文时&#xff0c;看到"Shared MLP"这个术语总让人困惑——它和普通MLP到底有什么区别&#xff1f;为什么点云处理非要强调"共享"这个概念&#xff1f;本文将通过PyTorch代码…...

观察Taotoken用量看板如何清晰展示各项目与模型的Token消耗明细

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 观察Taotoken用量看板如何清晰展示各项目与模型的Token消耗明细 对于依赖大模型API进行开发的团队而言&#xff0c;成本透明与资源…...