Java spring boot 全解Camunda 7,从 0 到 1 构建工作流平台——第二节:Spring boot 简单集成

目录
- 1. 成果展示
- 2. 环境准备
- 3. 项目构建
- 3.1 项目结构
- 3.2 引入Camunda 依赖
- 3.3 启动spring boot 程序
- 3.4 启动 web app 程序
引言:当今技术发展迅猛,企业对于业务流程的高效管理和自动化需求也日益增长。在这个背景下,Spring Boot和Camunda7成为了两个备受推崇的开源框架。Spring Boot作为一种快速开发的Java框架,提供了简化企业级应用开发的工具和技术,而Camunda7作为一个流程引擎,帮助企业建模、执行和监控业务流程。将Spring Boot与Camunda7集成,不仅可以充分利用Spring Boot的便捷开发特性,还能够实现灵活的业务流程管理和优化。本文将简单介绍如何使用Spring Boot与Camunda7集成,为读者提供一个简单易操作的这两个框架集成指南。无论您是一名Java开发者还是一个对业务流程管理感兴趣的专业人士,本文都会为您带来有价值的知识和实践经验。
当然,大家也可以直接阅读官方提供的camunda7 英文指南,直接上手集成。官网地址:https://docs.camunda.org/manual/latest/
1. 成果展示

上图是一个简单的流程,想要构建这个流程,需要借助于BPMN画图。读者可以直接去官网上下载Camunda modeler。(传送门:https://camunda.com/download/modeler/#modeler)
如果spring boot + camunda 构建成功后,可以访问本地web界面,注册登录后,会有如下图所示的界面:

点击Deployments选项卡,会出现已经部署的 bpmn 流程信息,如下图所示:

OK,到这里就可以简单的了解到Spring boot + Camunda7集成后,Spring boot 官网提供的 web app后台管理程序了。
2. 环境准备
Java版本:jdk11
mysql版本:8.0.0+
Camunda版本:7.19
Spring boot版本:2.7.6
由于我的项目喜欢用groovy,所以此外还有 groovy: 3.0.4+
3. 项目构建
3.1 项目结构
项目文件结构如下图所示:

我项目是用 groovy + spring boot + gradle 搭建的,所以大家可以将groovy转换为java (Tip: 后续文刊都是用 groovy 写的,其实groovy和Java的语法大多是共同的),gradle 转换为 maven。
3.2 引入Camunda 依赖
gradle 引入:
dependencies {implementation 'org.springframework.boot:spring-boot-starter-data-jdbc'implementation 'org.springframework.boot:spring-boot-starter-web'implementation 'org.codehaus.groovy:groovy'compileOnly 'org.projectlombok:lombok'developmentOnly 'org.springframework.boot:spring-boot-devtools'runtimeOnly 'com.mysql:mysql-connector-j'annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'annotationProcessor 'org.projectlombok:lombok'testImplementation 'org.springframework.boot:spring-boot-starter-test'implementation 'org.camunda.bpm.springboot:camunda-bpm-spring-boot-starter:7.19.0'implementation 'org.camunda.bpm.springboot:camunda-bpm-spring-boot-starter-webapp:7.19.0'implementation 'org.camunda.bpm.springboot:camunda-bpm-spring-boot-starter-rest:7.19.0'
}
maven引入:
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jdbc</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.codehaus.groovy</groupId><artifactId>groovy</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><scope>provided</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional><scope>provided</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><scope>provided</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.camunda.bpm.springboot</groupId><artifactId>camunda-bpm-spring-boot-starter</artifactId><version>7.19.0</version></dependency><dependency><groupId>org.camunda.bpm.springboot</groupId><artifactId>camunda-bpm-spring-boot-starter-webapp</artifactId><version>7.19.0</version></dependency><dependency><groupId>org.camunda.bpm.springboot</groupId><artifactId>camunda-bpm-spring-boot-starter-rest</artifactId><version>7.19.0</version></dependency>
</dependencies>
3.3 启动spring boot 程序
spring boot 配置文件:application.yaml
server:port: 8080
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/camunda719password: rootusername: root
启动spring boot 程序,启动类如下所示:
package com.lm.lmcamunda7
import org.camunda.bpm.spring.boot.starter.annotation.EnableProcessApplication
import org.springframework.boot.SpringApplication
import org.springframework.boot.autoconfigure.SpringBootApplication
@SpringBootApplication
@EnableProcessApplication
class Application {static void main(String[] args) {def run = SpringApplication.run(Application, args)println run.getBeanDefinitionNames().toArrayString()}
}
3.4 启动 web app 程序
启动后,访问 localhost:8080,如下图所示:

接下来就可以操作了。
下一篇,介绍 camunda 的数据库 ER 结构。传送门
相关文章:
Java spring boot 全解Camunda 7,从 0 到 1 构建工作流平台——第二节:Spring boot 简单集成
目录 1. 成果展示2. 环境准备3. 项目构建3.1 项目结构3.2 引入Camunda 依赖3.3 启动spring boot 程序3.4 启动 web app 程序 引言:当今技术发展迅猛,企业对于业务流程的高效管理和自动化需求也日益增长。在这个背景下,Spring Boot和Camunda7成…...
手持式静电测试仪的运用原理
手持式静电测试仪(Handheld Electrostatic Test Meter)是一种用于测量和检测静电电荷的便携式设备。它通常用于工业生产、实验室研究、防静电控制和监测等领域。 手持式静电测试仪可以帮助用户快速准确地测量物体表面静电电荷的状态,从而评估…...
【css问题】flex布局中,子标签宽度超出父标签宽度,导致布局出现问题
场景:文章标题过长时,只显示一行,且多余的部分用省略号显示。 最终效果图: 实现时,flex布局,出现问题: 发现text-overflow: ellipsis不生效,省略符根本没有出现。 而且因为设置了 …...
【vue3】前端应用中使用WebSocket与服务器进行通信并管理连接状态。
1、写一个hook函数 export const useWebsocketToStore ({ onMessage }): any > {const url ws:地址 Math.random()const onConnected () > {}const onDisconnected () > {}const onError () > {}const onMessageDefault (ws: WebSocket, event: MessageEve…...
服务端高并发分布式结构演进之路
目录 一、常见概念 1.1基本概念 二、架构演进 2.1单机架构 2.2应用数据分离架构 2.3应用服务集群架构 2.4读写分离 / 主从分离架构 2.5引入缓存 —— 冷热分离架构 2.6垂直分库 2.7业务拆分 —— 微服务 一、常见概念 1.1基本概念 应用(Application&am…...
微服务基础总结
1.服务注册和发现 服务注册维护一个登记簿,管理系统内所有服务地址,服务启动后会向登记簿交待自己的地址信息。 服务注册形式:客户端注册和第三方注册 客户端注册(zookeeper) 服务自身要负责注册和注销工作…...
实现vscode上用gdb调试stm32
实现vscode上用gdb调试stm32 这周负责编写设备的某个模块,其中遇到了一些变量地址不正确的错误,按理这种底层变量错误用gdb一类的调试器就能很快查到,可是初入嵌入式一行,此C语言非彼C语言,对于gdb怎么对接到项目上根…...
第4章 变量、作用域与内存
引言 由于js是一门只有在声明变量后才能明确类型的语言,并且在任意时刻都可以改变数据类型。这也引起了一些问题 原始值与引用值 原始值就是基本数据类型,引言值就是复杂数据类型 变量在赋值的时候。js会判断如果是原始值,访问时就是按值访问…...
Python爬虫遇到重定向问题解决办法汇总
在进行Python爬虫任务时,遇到重定向问题是常见的问题之一。重定向是指在发送请求时,服务器会返回一个新的URL,将请求重新定向到该URL。为了帮助您解决这个问题,本文将提供一些实用的解决办法,并给出相关的代码示例&…...
R并行计算
1-lapply()函数介绍: 为什么介绍这个函数呢?因为在windows中使用parLapply()函数和lapply()的结构和用法是非常相似的,我们只需要将原本用lapply(x, fun)迭代函数 直接改写成 parLapply(makeCluster(c1), x, fun)即可,这里的直接…...
STM32 低功耗-待机模式
STM32 待机模式 文章目录 STM32 待机模式第1章 低功耗模式简介第2章 待机模式简介2.1 进入待机模式2.1 退出待机模式 第3章 待机模式代码部分总结 第1章 低功耗模式简介 在 STM32 的正常工作中,具有四种工作模式:运行、睡眠、停止和待机模式。 在系统或…...
极海APM32F003F6P6烧写问题解决记录
工作中遇到的,折腾了好久,因为电脑重装过一遍系统,软件也都重新安装了,所以不知道之前的配置是什么,旧项目代码编译没问题,烧写时疯狂报错,用的是JLink。 keil版本v5.14 win10版本 JLink版本…...
【大数据】Flink 详解(一):基础篇
Flink 详解(一):基础篇 1、什么是 Flink ? Flink 是一个以 流 为核心的高可用、高性能的分布式计算引擎。具备 流批一体,高吞吐、低延迟,容错能力,大规模复杂计算等特点,在数据流上提…...
ChatGPT 作为 Python 编程助手
推荐:使用 NSDT场景编辑器 助你快速搭建可编辑的3D应用场景 简单的数据处理脚本 我认为一个好的起点是某种数据处理脚本。由于我打算让 ChatGPT 之后使用各种 Python 库编写一些机器学习脚本,这似乎是一个合理的起点。 目标 首先,我想尝试…...
饿了么输入框限制只能输入数字,并且保留小数
可以使用饿了么ui中的input-number组件实现输入框只能输入数字,这样就不能输入数字以外的,controls隐藏输入框左右俩边的加减按钮,precision小数点保留多少位,2则是俩位,但是会导致默认值为0.00的情况,俩种…...
kylin-Desktop gsettings 获取或设置系统配置
gsettings提供了对GSetings的命令行操作。GSetings实际上是一套高级API,用来操作dconf。 dconf存储着GNOME3的配置,是二进制格式。它做为GSettings的后端系统存在,暴露出低级API。在GNOME2时代,类似的角色是gconf,但它是以XML文本形式存储。 更接地气的说法是,dconf是G…...
setmap使用
目录 set使用 set的模板参数 构造函数 成员函数 insert iterator 编辑 find count pair pair 的模板参数 make_pair multiset使用 multiset 的模板参数 set 与 multiset 的区别 count map使用 map 的模板参数 构造函数 insert iterator find 编辑 cou…...
Python3 网络爬虫开发实战
JavaScript逆向爬虫 JavaScript接口加密技术,JavaScript有以下两个特点: JS代码运行在客户端,所以它必须在用户浏览器加载并运行JS代码公开透明,所以浏览器可以直接获取到正在运行的JS源码。 所以JS代码不安全,任何…...
docker: CMD和ENTRYPOINT的区别
ENTRYPOINT: 容器的执行命令(属于正统命令) 可以使用--build-arg ENVIROMENTintegration参数覆盖 ocker build --build-arg ENVIROMENTintegration 两者同时存在时 CMD作为ENTRYPOINT的默认参数使用外部提供参数会覆盖CMD提供的参数。 CMD单…...
DC电源模块对于定制的要求主要有这几点
BOSHIDA DC电源模块对于定制的要求主要有这几点 DC电源模块是一种将交流电转换成为稳定的直流电的装置。在现代工业生产中,DC电源模块被广泛应用于各种电子设备中,例如计算机、手机、电视等。为了满足不同用户需求,DC电源模块的定制需求也是…...
OpenClaw硬件加速:Qwen3-4B-Thinking在GPU环境下的优化
OpenClaw硬件加速:Qwen3-4B-Thinking在GPU环境下的优化 1. 为什么需要GPU加速OpenClaw 去年冬天,当我第一次在MacBook Pro上运行OpenClaw对接Qwen3-4B模型时,一个简单的文件整理任务竟然花费了3分多钟。看着CPU占用率飙升到100%的风扇狂转&…...
分层dfs,一种介于dfs与bfs之间的算法
在算法设计的深邃丛林中,深度优先搜索与广度优先搜索如同两条风格迥异的小径。前者沿着一条道路走到黑,不撞南墙不回头,却往往在最优解的门口徘徊——它难以回答"最少需要几步"这样的问题,因为一旦深入某个分支…...
Matlab综合能源系统优化代码:CSP电站与ORC整合建模求解
Matlab综合能源系统优化代码 考虑光热电站(CSP电站)和ORC的综合能源系统优化的建模求解 程序中包含了新能源发电、ORC循环等,以运行成本、碳排放成本、弃风弃光惩罚成本等为目标函数,基于9节点电网、6节点气网、8节点热网、4节点冷…...
DevOps 实践与自动化:从开发到运维的无缝衔接
DevOps 实践与自动化:从开发到运维的无缝衔接 前言 作为一个在数据深渊里捞了十几年 Bug 的女码农,我深知 DevOps 在现代软件开发中的重要性。DevOps 不仅是一种技术实践,更是一种文化和思维方式,它强调开发和运维团队的紧密协作&…...
目前遇到问题
手机重启以后,app虽然已经启动了自启动,但是实际并没有启动应该是没有启动监听开机广播...
RL训练像点外卖?ProRL底层逻辑拆解(非常详细),从入门到精通看这篇!
一句话讲清楚👉🏻 NVIDIA提出ProRL Agent,把多轮LLM Agent的RL训练中「轨迹生成(Rollout)」这一步从训练框架中彻底剥离出来,变成一个独立的HTTP服务,训练侧只需发HTTP请求就能拿到轨迹和奖励信…...
Flash内容还能复活吗?这款浏览器让你重温经典Flash游戏和课件
Flash内容还能复活吗?这款浏览器让你重温经典Flash游戏和课件 【免费下载链接】CefFlashBrowser Flash浏览器 / Flash Browser 项目地址: https://gitcode.com/gh_mirrors/ce/CefFlashBrowser 还记得那些陪伴我们成长的Flash小游戏和交互课件吗?当…...
WinThumbsPreloader:让Windows图片预览提速80%的缓存优化工具
WinThumbsPreloader:让Windows图片预览提速80%的缓存优化工具 【免费下载链接】WinThumbsPreloader-V2 WinThumbsPreloader is a powerful open source tool for quickly preloading thumbnails in Windows Explorer. 项目地址: https://gitcode.com/gh_mirrors/w…...
在 Android 上跑大模型,我踩过的那些推理加速坑
有人问过我:在 Android 上跑大模型,和在服务器上跑有什么本质区别? 我想了一下,说:服务器上你在意的是吞吐,手机上你在意的是不要把电池榨干、不要让用户等三秒、不要因为内存不够直接崩。本质区别不是算法…...
AI辅助开发:让快马AI成为你的编程搭档,迭代优化openclaw风格代码
今天想和大家分享一个开发小技巧:如何用AI辅助工具快速迭代优化代码。最近我在做一个数据抓取的小项目,需要实现类似openclaw的功能,正好用InsCode(快马)平台的AI功能试了试,效果出乎意料的好。 基础功能实现 最开始我只需要一个简…...
