SpringBoot整合Camunda工作流

Springboot整合Camunda工作流引擎实现审批流程实例 环境:Spingboot2.6.14 + 阅读详情

什么是工作流?

概述
工作流是将一组任务组织起来以完成某个经营过程:定义了任务的触发顺序和触发条件,每个任务可以由一个或多个软件系统完成,也可以由一个或一组人完成,还可以由一个或多个人与软件系统协作完成,

BPM
BPM(Business Process Management,业务流程管理),是一套系统的管理方法论和学科。它强调以“流程”为视角来设计、执行、管理和优化企业的各种业务活动,其最终目标是提高组织效率、增强敏捷性并实现战略目标。

BPMN
BPMN(Business Process Model and Notation,业务流程模型与标记)是一套全球通用的标准图形符号和规范,由对象管理组织(OMG)维护。它是为 BPM 方法论中的“建模”阶段服务的具体工具。BPMN2.0正式版本于2011年1月3日发布,目前常见的工作流引擎如:Activiti、Flowable、Camunda都基于 BPMN 2.0 标准。

Activiti、Flowable、Camunda有什么区别?

概述

Activiti、Flowable、Camunda都是从JBPM中诞生出来,jBPM4发展了1年出现了Activiti5,Activiti5发展了几年后第一次分叉出现了Camunda,第二次分叉出现了Flowable。

Camunda
2013年:因团队对 Activiti 发展方向分歧(如商业化策略),部分核心成员(包括 Tom Baeyens)离开 Alfresco,创建 Camunda,延续 Activiti 5 代码分支,保留 PVM 架构。

Flowable
2016年:Activiti 6 开发团队因与 Salaboy 团队(主导 Activiti 7)理念不合,分叉 Activiti 6 代码创建 Flowable。移除 PVM,重构引擎内核,强化异步机制和多模型支持(BPMN/CMMN/DMN)

支持的数据库:

MySQL
Activiti 支持但未明确具体版本;Flowable 支持 5.6 和 5.7;Camunda 也支持 5.7、 8.0。

Oracle
Activiti 支持但未明确版本;Flowable 支持 10g、11g 和 12c;Camunda 支持 12c 、19c。

PostgreSQL
Activiti 支持但未明确版本;Flowable 支持 9.1、9.3、9.4、9.6 和 10.4;Camunda 支持 9.6、 10 、 11、 12、13。

SQL Server
Activiti 支持但未明确版本;Flowable 支持 2008 R2、2012、2014 和 2016;Camunda 支持2014 、 2016 、 2017、 2019。

DB2
Activiti 支持但未明确版本;Flowable 支持 9.7、10.1、10.5 和 11.1;Camunda 支持 11.1。

H2
Activiti 将其作为默认数据库支持;Flowable 和 Camunda 均支持 1.4 版本。

MariaDB
Activiti 未明确提及是否支持;Flowable 明确不支持;Camunda 支持 10.2 和 10.3 版本。

Camunda

文档

官网地址:https://camunda.com/
中文站点:http://camunda-cn.shaochenfeng.com/

Camunda Modele

Camunda Modeler 是Camunda 官方提供的一个流程设计器,用于编辑流程图以及其他模型【表单】,也就是一个流程图的绘图工具
在这里插入图片描述
Camunda BPM

Camunda BPM 是Camunda官方提供的一个业务流程管理平台,用来管理,部署的流程定义、执行任务,策略等。解压文件后,执行名为start.bat脚本,打开浏览器访问http://localhost:8080/进入欢迎页面,Camunda的管理平台。
在这里插入图片描述

核心表结构

ACT_GE_:表示流程通用数据,用于不同场景下。
ACT_RE_
:表示流程资源存储,这个前缀的表包含了流程定义和流程静态资源(图片,规则等)。
ACT_RU_:表示流程运行时。这些运行时的表,包含流程实例,任务,变量,Job等运行中的数据。 Camunda只在流程实例执行过程中保存这些数据,在流程结束时就会删除这些记录, 这样运行时表的数据量最小,可以最快运行。
ACT_ID_
:表示组织用户信息,比如用户,组等。
ACT_HI_*:表示流程历史记录。这些表包含历史数据,比如历史流程实例,变量,任务等。

SpringBoot整合Camunda示例

Spring Boot 版本和Camunda版本兼容

Spring Boot 版本和Camunda版本之间不匹配,会出现各种意想不到的错误,具体版本兼容可参照官方文档
在这里插入图片描述

Demo示例

相关的pom.xml中的依赖

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>

  <groupId>com.mshb.workflow</groupId>
  <artifactId>camunda-msb-demo</artifactId>
  <version>1.0.0-SNAPSHOT</version>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>17</maven.compiler.source>
    <maven.compiler.target>17</maven.compiler.target>
  </properties>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>3.2.2</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>

      <dependency>
        <groupId>org.camunda.bpm</groupId>
        <artifactId>camunda-bom</artifactId>
        <version>7.21.0</version>
        <scope>import</scope>
        <type>pom</type>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <dependencies>
    <dependency>
      <groupId>org.camunda.bpm.springboot</groupId>
      <artifactId>camunda-bpm-spring-boot-starter-rest</artifactId>
    </dependency>

    <dependency>
      <groupId>org.camunda.bpm.springboot</groupId>
      <artifactId>camunda-bpm-spring-boot-starter-webapp</artifactId>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
    </dependency>

    <dependency>
      <groupId>org.camunda.bpm</groupId>
      <artifactId>camunda-engine-plugin-spin</artifactId>
    </dependency>

    <dependency>
      <groupId>org.camunda.spin</groupId>
      <artifactId>camunda-spin-dataformat-all</artifactId>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
      <groupId>com.h2database</groupId>
      <artifactId>h2</artifactId>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>

  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <version>3.2.2</version>
      </plugin>
    </plugins>
  </build>

</project>

配置文件信息

spring.datasource.url: jdbc:h2:file:./camunda-h2-database
camunda.bpm.admin-user:
  id: demo
  password: demo

部署流程

通过启动类启动,访问http://localhost:8080/camunda/可登录camunda控制台界面

public void deploy() {
    Deployment deploy = repositoryService.createDeployment()
            .name("发起支付流程") // 定义部署文件的名称
            .addClasspathResource("payment.bpmn") // 绑定需要部署的流程文件
            .deploy();// 部署流程
}

启动流程

public void startFlow() {
    // 创建流程变量集合
    Map<String, Object> variables = new HashMap<>();

    // 添加支付相关参数(类型自动推断)
    variables.put("amount", 2999);          // 整数类型
    variables.put("item", "Premium Package");// 字符串类型
    variables.put("approved", true);        // 布尔类型

    // 部署流程
    ProcessInstance processInstance = runtimeService
            .startProcessInstanceByKey("Payment-gateway", variables);
    if (processInstance != null) {
        // 部署的流程实例的相关信息
        System.out.println("processInstance.getId() = " + processInstance.getId());
        System.out.println("processInstance.getProcessDefinitionId() = " + processInstance.getProcessDefinitionId());
        // 验证变量已注入(可选)
        Map<String, Object> actualVars = runtimeService.getVariables(processInstance.getId());
        System.out.println("流程变量: " + actualVars);
    } else {
        System.out.println("流程启动失败");
    }
}

查询待办

public void queryTask() {
    List<Task> list = taskService.createTaskQuery()
            .taskAssignee("demo")
            .list();
    if (list != null && !list.isEmpty()) {
        for (Task task : list) {
            System.out.println("task.getId() = " + task.getId());
            System.out.println("task.getAssignee() = " + task.getAssignee());
        }
    }
}

完成任务

public void completeTask() {
    // 根据用户找到关联的Task
    Task task = taskService.createTaskQuery()
            .taskAssignee("demo")
            .singleResult();
    if (task != null) {
        // 可更新任务属性
        //taskService.setAssignee(task.getId(), "new_assignee");
        taskService.complete(task.getId());
        System.out.println("任务审批完成...");
    }
}
【Camunda 二】Springboot集成Camunda工程(使用H2,Mysql, Postgresql数据库) 基于Camunda 7.17.0 + Springboot 2.6.4首先官网camunda7.17对应的springboot版本。camunda官网流程引擎:camunda-bpm-spring-boot-starterRest服务接口:camunda-bpm-spring-boot-starter-restweb界面模块:camunda-bpm-spring-boot-starter-webapp相关属性配置可参考Springboot集成配置。 阅读详情

相关推荐

springboot集成Camunda审核流程(二):Camunda Modeler设计器设置BPMN流程

Springboot 整合Camunda流程控制二

LiuCJ_20000的博客 6918

SpringBoot:Camunda 流程引擎简介及实践

项目中需要用到工作流引擎来设计部分业务流程,框架选型最终选择了 Camunda7,关于 Camunda以及 Activity 等其他工作流 引擎的介绍及对比不再介绍,这里只介绍与现有Springboot项目的集成以及具体使用及配置。

GIS摆渡人 6196

Spring Boot整合Camunda打造高效工作流程_camunda 整合 springboot3

在设计好工作流模型后,需要为每个任务定义具体的操作。这些操作可以是函数、方法或服务调用等。# 执行任务1的代码逻辑pass# 执行任务2的代码逻辑pass# 条件判断的逻辑,返回True或Falseelse:workflow()和。和分别表示执行任务1和任务2的具体操作。用于进行条件判断,返回True或False。最后,定义了一个workflow函数来组织整个工作流程,根据条件判断的结果执行相应的任务。

2501_90225546的博客 1250

Camunda与springboot集成入门实战

Camunda与soringboot集成入门案例。

qq_40729302的博客 6363

SpringBoot项目整合Camunda工作流引擎实战:从Modeler设计到Platform部署全流程

本文详细介绍了如何在SpringBoot项目中整合Camunda工作流引擎,涵盖从Camunda Modeler流程设计到Platform部署的全流程。通过版本兼容性配置、BPMN元素解析和SpringBoot深度集成方案,帮助开发者高效实现业务流程自动化,提升企业级应用开发效率。

weixin_30825581的博客 65

jeecgboot、springboot整合camunda工作流

jeecgboot整合camunda 文章目录一、pom二、resources1、process.bpmn2、application.yaml3、resources下新建文件 一、pom <!--流程--> <dependency> <groupId>org.camunda.bpm.springboot</groupId> <artifactId>camunda-bpm-spri

csweldn520的专栏 2243

Spring Boot 整合 Camunda 实现工作流

工作流是我们开发企业应用几乎必备的一项功能,工作流引擎发展至今已经有非常多的产品。最近正好在接触Camunda,所以来做个简单的入门整合介绍。如果您也刚好在调研或者刚开始计划接入,希望本文对您有所帮助。如果您是一名Java开发或Spring框架爱好者,欢迎关注我程序猿DD,持续非常技术干货。Camunda简介Camunda是一个灵活的工作流和流程自动化框架。其核心是一个运行在Java虚拟机内部的原...

程序猿DD 1783

从ISCXTor2016到CICIDS2017:手把手教你下载和使用UNB的网络安全数据集

本文详细介绍了UNB大学发布的ISCXTor2016和CICIDS2017等网络安全数据集的下载与使用方法,特别适合加密流量识别和网络行为分析研究。文章提供了多种高效获取路径、文件结构解析及实战分析示例,帮助研究者快速上手这些真实场景捕获的精细标注数据集。

weixin_42524945的博客 632

Spring Boot整合Camunda打造高效工作流程

Spring Boot是一种基于Spring框架的开源Java开发框架,旨在简化新Spring应用的初始搭建以及开发过程。它通过提供一系列快速开发的工具和功能,使得开发者能够更加高效地构建和部署应用。简化配置:采用约定优于配置的理念,提供大量默认配置,大大减少了开发者的配置工作量。自动化管理:自动引入所需的依赖库,避免了手动管理依赖的繁琐。内嵌服务器:可以内嵌Tomcat、Jetty等服务器,无需单独部署应用,简化了应用的部署和管理。丰富的生态。

chen520的博客 9611

微信小程序爬虫终极指南:以电商小程序抓包与逆向分析为例(最新版)

在2026年的移动互联网生态中,微信小程序已经成为电商交易的核心载体之一。据统计,超过78%的头部电商平台都推出了微信小程序版本,其用户活跃度甚至超过原生App。对于数据从业者而言,小程序端往往藏着比Web端更丰富的接口数据——包括但不限于商品详情、价格波动、用户评价、库存变化、秒杀活动信息等。与传统的Web爬虫不同,微信小程序爬虫面临着三大核心挑战无URL地址栏:无法通过浏览器直接查看网络请求wx.request封装:所有请求均通过微信原生API发起,难以直接拦截然而,

2201_76125261的博客 536

MFC实现简单UDP通信(附完整源码)

MFC实现简单UDP通信(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1109

Spring Boot整合Camunda实现工作流

通过本文的介绍,我们学习了如何在Spring Boot项目中整合Camunda工作流引擎,并创建并部署了一个简单的工作流程。Camunda提供了丰富的功能和灵活的部署方式,能够满足各种复杂业务流程的需求。希望本文能够帮助开发者更好地利用Camunda和Spring Boot构建高效的工作流应用。😊🙏Java面试技巧Java面试八股文 - 掌握面试必备知识(目录篇)Java学习路线2023年完整版Java学习路线图AIGC人工智能Chat GPT是什么,初学者怎么使用Chat GPT,需要注意些什么。

学IT,找陈寒 9166

2025年全国青少年信息素养大赛初赛真题(算法创意实践挑战赛C++初中组:文末附答案)

2025年全国青少年信息素养大赛初赛真题(算法创意实践挑战赛C++初中组:文末附答案)

王老师青少年编程 3396

【工作流】Spring Boot 项目与 Camunda 的整合

官网:https://camunda.com/ 中文网站:http://camunda-cn.shaochenfeng.com/(1)流程(PROCESS): 通过工具建模最终生成的BPMN文件,里面有整个流程的定义 (2)流程实例(Instance):流程启动后的实例 (3)流程变量(Variables):流程任务之间传递的参数 (4)任务(TASK):流程中定义的每一个节点 (5)流程部署:将之前流程定义的.bpmn文件部署到工作流平台提前安装Java1.8以上的JRE或JDKCamundaModele

weixin_44823875的博客 3800

AutoSAR EcuM系列01- EcuM模块的功能概述和变体类型

在【ECU的软硬件架构】文章中我们了解ECU的功能和组成,那么ECU具体是怎么启动的呢?我们知道,AutoSAR标准架构有三层,即APPL应用层、RTE层和BSW层。而这些层又被进一步划分为更多单独的组件,如BSW层可能有80多个组件。在ECU启动时,这些组件必须相互交互,有时也必须以某种顺序交互。这些组件的启动顺序由ECU管理器模块或EcuM处理。EcuM负责整个ECU的初始化和去初始化,包括对一些系统模块如。......

1766

Codex 100个真实案例 - 用AI生成建筑平面图SVG(室内设计师的新武器)

本案例用 Codex 生成一套完整的 Python 脚本,自动绘制 SVG 格式的建筑平面图。我们会设计一个90平两室一厅的户型——客厅、主卧、次卧、厨房、卫生间一应俱全,还会自动摆放家具(沙发、床、餐桌、橱柜)、标注尺寸和面积、绘制水电路走向、生成多种配色方案。最终输出的 SVG 文件可以直接用浏览器打开展示,也可以转成 PNG 交给客户。室内设计师看了都说好!

yueyeguzhuo的专栏 761

整合SpringBoot + Vue + Camunda + bpmn.js实现工作流前后端部署(若依框架实现)

以上类容讲解了springboot+vue+camunda+bpmn.js整合camunda工作流,下篇文章将会讲解利用bpmn在线建模来直接部署流程到后端中。有什么问题请指出。欢迎交流!

boydonotcry的博客 1万+

【微服务】SpringBoot 整合 FastExcel 实现导入导出操作详解

SpringBoot 整合 FastExcel 实现导入导出操作详解

congge 4234

Camunda7(二):springboot 整合Camunda 7使用工作流程(含完整代码)

Camunda(二):springboot 整合Camunda 使用工作流程(含完整代码) 前言:因为公司有个项目需求要使用到工作流引擎,考查了市面各种的工作流引擎,对比它们之间的优劣势,最后选择Camunda工作流引擎。此前自己对Camunda工作流引擎了解的并不多,所以就记录下自己学习Camunda工作流引擎到springboot项目中整合Camunda工作流引擎使用的过程。在上一篇文章中已经介绍了Camunda Platform和Modeler创建工作流的玩法了。在本文就将Camunda 应用在生产

gorylee的博客 6498

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

上一篇: MySQL深分页性能优化实战:大数据量情况下如何进行优化
下一篇: 使用EasyExcel根据模板导出文件
刘火锅
博客等级 码龄7年 121粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值