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

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 项目结构

项目文件结构如下图所示:
Alt
我项目是用 groovy + spring boot + gradle 搭建的,所以大家可以将groovy转换为java (Tip: 后续文刊都是用 groovy 写的,其实groovyJava的语法大多是共同的),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 程序 引言&#xff1a;当今技术发展迅猛&#xff0c;企业对于业务流程的高效管理和自动化需求也日益增长。在这个背景下&#xff0c;Spring Boot和Camunda7成…...

手持式静电测试仪的运用原理

手持式静电测试仪&#xff08;Handheld Electrostatic Test Meter&#xff09;是一种用于测量和检测静电电荷的便携式设备。它通常用于工业生产、实验室研究、防静电控制和监测等领域。 手持式静电测试仪可以帮助用户快速准确地测量物体表面静电电荷的状态&#xff0c;从而评估…...

【css问题】flex布局中,子标签宽度超出父标签宽度,导致布局出现问题

场景&#xff1a;文章标题过长时&#xff0c;只显示一行&#xff0c;且多余的部分用省略号显示。 最终效果图&#xff1a; 实现时&#xff0c;flex布局&#xff0c;出现问题&#xff1a; 发现text-overflow: ellipsis不生效&#xff0c;省略符根本没有出现。 而且因为设置了 …...

【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基本概念 应用&#xff08;Application&am…...

微服务基础总结

1.服务注册和发现 服务注册维护一个登记簿&#xff0c;管理系统内所有服务地址&#xff0c;服务启动后会向登记簿交待自己的地址信息。 服务注册形式&#xff1a;客户端注册和第三方注册 客户端注册&#xff08;zookeeper&#xff09; 服务自身要负责注册和注销工作&#xf…...

实现vscode上用gdb调试stm32

实现vscode上用gdb调试stm32 这周负责编写设备的某个模块&#xff0c;其中遇到了一些变量地址不正确的错误&#xff0c;按理这种底层变量错误用gdb一类的调试器就能很快查到&#xff0c;可是初入嵌入式一行&#xff0c;此C语言非彼C语言&#xff0c;对于gdb怎么对接到项目上根…...

第4章 变量、作用域与内存

引言 由于js是一门只有在声明变量后才能明确类型的语言&#xff0c;并且在任意时刻都可以改变数据类型。这也引起了一些问题 原始值与引用值 原始值就是基本数据类型&#xff0c;引言值就是复杂数据类型 变量在赋值的时候。js会判断如果是原始值&#xff0c;访问时就是按值访问…...

Python爬虫遇到重定向问题解决办法汇总

在进行Python爬虫任务时&#xff0c;遇到重定向问题是常见的问题之一。重定向是指在发送请求时&#xff0c;服务器会返回一个新的URL&#xff0c;将请求重新定向到该URL。为了帮助您解决这个问题&#xff0c;本文将提供一些实用的解决办法&#xff0c;并给出相关的代码示例&…...

R并行计算

1-lapply()函数介绍&#xff1a; 为什么介绍这个函数呢&#xff1f;因为在windows中使用parLapply()函数和lapply()的结构和用法是非常相似的&#xff0c;我们只需要将原本用lapply(x, fun)迭代函数 直接改写成 parLapply(makeCluster(c1), x, fun)即可&#xff0c;这里的直接…...

STM32 低功耗-待机模式

STM32 待机模式 文章目录 STM32 待机模式第1章 低功耗模式简介第2章 待机模式简介2.1 进入待机模式2.1 退出待机模式 第3章 待机模式代码部分总结 第1章 低功耗模式简介 在 STM32 的正常工作中&#xff0c;具有四种工作模式&#xff1a;运行、睡眠、停止和待机模式。 在系统或…...

极海APM32F003F6P6烧写问题解决记录

工作中遇到的&#xff0c;折腾了好久&#xff0c;因为电脑重装过一遍系统&#xff0c;软件也都重新安装了&#xff0c;所以不知道之前的配置是什么&#xff0c;旧项目代码编译没问题&#xff0c;烧写时疯狂报错&#xff0c;用的是JLink。 keil版本v5.14 win10版本 JLink版本…...

【大数据】Flink 详解(一):基础篇

Flink 详解&#xff08;一&#xff09;&#xff1a;基础篇 1、什么是 Flink &#xff1f; Flink 是一个以 流 为核心的高可用、高性能的分布式计算引擎。具备 流批一体&#xff0c;高吞吐、低延迟&#xff0c;容错能力&#xff0c;大规模复杂计算等特点&#xff0c;在数据流上提…...

ChatGPT 作为 Python 编程助手

推荐&#xff1a;使用 NSDT场景编辑器 助你快速搭建可编辑的3D应用场景 简单的数据处理脚本 我认为一个好的起点是某种数据处理脚本。由于我打算让 ChatGPT 之后使用各种 Python 库编写一些机器学习脚本&#xff0c;这似乎是一个合理的起点。 目标 首先&#xff0c;我想尝试…...

饿了么输入框限制只能输入数字,并且保留小数

可以使用饿了么ui中的input-number组件实现输入框只能输入数字&#xff0c;这样就不能输入数字以外的&#xff0c;controls隐藏输入框左右俩边的加减按钮&#xff0c;precision小数点保留多少位&#xff0c;2则是俩位&#xff0c;但是会导致默认值为0.00的情况&#xff0c;俩种…...

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接口加密技术&#xff0c;JavaScript有以下两个特点&#xff1a; JS代码运行在客户端&#xff0c;所以它必须在用户浏览器加载并运行JS代码公开透明&#xff0c;所以浏览器可以直接获取到正在运行的JS源码。 所以JS代码不安全&#xff0c;任何…...

docker: CMD和ENTRYPOINT的区别

ENTRYPOINT&#xff1a; 容器的执行命令&#xff08;属于正统命令&#xff09; 可以使用--build-arg ENVIROMENTintegration参数覆盖 ocker build --build-arg ENVIROMENTintegration 两者同时存在时 CMD作为ENTRYPOINT的默认参数使用外部提供参数会覆盖CMD提供的参数。 CMD单…...

DC电源模块对于定制的要求主要有这几点

BOSHIDA DC电源模块对于定制的要求主要有这几点 DC电源模块是一种将交流电转换成为稳定的直流电的装置。在现代工业生产中&#xff0c;DC电源模块被广泛应用于各种电子设备中&#xff0c;例如计算机、手机、电视等。为了满足不同用户需求&#xff0c;DC电源模块的定制需求也是…...

OpenClaw排错大全:Phi-3-mini-128k-instruct接口连接失败7种解决方案

OpenClaw排错大全&#xff1a;Phi-3-mini-128k-instruct接口连接失败7种解决方案 1. 问题背景与排查思路 上周我在本地部署Phi-3-mini-128k-instruct模型时&#xff0c;遇到了OpenClaw连接失败的棘手问题。控制台不断报错"Model connection timeout"&#xff0c;但…...

基于51单片机的蓝牙+PM2.5+DHT11温湿度上下限报警系统设计

一、系统概述 设计以STC89C52RC单片机&#xff08;11.0592MHz晶振&#xff09;为核心&#xff0c;集成蓝牙通信&#xff08;HC-05&#xff09;、PM2.5空气质量检测&#xff08;GP2Y1010AU0F&#xff09;、DHT11温湿度检测三大模块&#xff0c;实现环境参数的实时采集、上下限报…...

Java SpringBoot+Vue3+MyBatis 图书进销存管理系统系统源码|前后端分离+MySQL数据库

摘要 随着信息技术的快速发展&#xff0c;传统图书进销存管理方式逐渐暴露出效率低下、数据冗余和人工操作繁琐等问题。图书行业对高效、精准的管理系统需求日益增长&#xff0c;尤其在库存管理、销售统计和数据分析方面&#xff0c;亟需一套智能化解决方案。基于前后端分离架构…...

在PhpStudy中进行PHP版本切换的详细流程(Linux和Windows)

在使用多样化的 PHP Web 应用程序时&#xff0c;选择合适的 PHP 版本至关重要。例如&#xff0c;一些老旧的应用程序可能是基于早期版本的 PHP 开发的&#xff0c;如果使用最新版本的 PHP 来运行&#xff0c;可能会遇到兼容性问题&#xff0c;导致错误。反之&#xff0c;如果用…...

RStudio Server卡在‘R启动慢’?别慌,手把手教你清理session文件恢复访问

RStudio Server启动缓慢的深度排查与解决方案 当你正赶着提交分析报告&#xff0c;RStudio Server却卡在"R is taking longer to start than usual"的提示界面&#xff0c;那种焦虑感数据工作者都懂。这不是简单的等待问题&#xff0c;而是系统在尝试恢复一个可能已经…...

Pixel Language Portal部署案例:在信创环境(麒麟OS+海光CPU)中运行Hunyuan-MT-7B

Pixel Language Portal部署案例&#xff1a;在信创环境&#xff08;麒麟OS海光CPU&#xff09;中运行Hunyuan-MT-7B 1. 项目背景与价值 **像素语言跨维传送门(Pixel Language Portal)**是基于腾讯Hunyuan-MT-7B大模型构建的创新翻译工具&#xff0c;其独特的16-bit像素冒险界…...

什么是共轭表达式?解决了什么问题?

什么是共轭表达式&#xff1f;解决了什么问题&#xff1f;为什么导数是 1/x&#xff1f; 导数衡量的是“每增加 1 单位的 xxx&#xff0c;y 能增加多少”...

Oracle EBS 6+2 段式 COA 架构 拆到最细、可直接落地 EBS 的版本,每一段的作用、限定词、长度、编码规则、为什么这么设计全部讲清楚

把 62 段式 COA 架构 拆到最细、可直接落地 EBS 的版本&#xff0c;每一段的作用、限定词、长度、编码规则、为什么这么设计全部讲清楚&#xff0c;你可以直接拿去做方案文档。一、62 段式架构总定义6 段 法定核算 管理核算的核心骨架&#xff08;必须固定&#xff09;2 段 …...

C++ lambda 捕获机制剖析

C lambda 捕获机制剖析 在现代C编程中&#xff0c;lambda表达式因其简洁性和灵活性成为开发者常用的工具之一。lambda的核心特性之一是其捕获机制&#xff0c;它允许在匿名函数内部访问外部变量。理解捕获机制不仅能提升代码效率&#xff0c;还能避免潜在的内存和逻辑错误。本…...

AGI能力边界与安全约束

AGI能力边界与安全约束&#x1f4dd; 本章学习目标&#xff1a;通过本章学习&#xff0c;你将全面掌握"AGI能力边界与安全约束"这一核心主题&#xff0c;建立系统性认知。一、引言&#xff1a;为什么这个话题如此重要 在人工智能快速发展的今天&#xff0c;AGI能力边…...