流程引擎之Camunda简介
背景
Camunda 是支持 BPMN(工作流和流程自动化)、CMMN(案例管理) 和 DMN(业务决策管理) java 框架。Camunda 基于Activiti5 保留了 PVM,其开发团队也是从 activiti 中分裂出来的。Camunda 来自拉丁语动词”capere”(理解)和“munda”(干净),它意味着我们想要深入了解我们周围的世界,并基于这种了解,我们想要以一种既有效又道德正确的方式让世界成为一个更美好的地方,为了我们所有人。Camunda 的发展史如下(大图参考:流程引擎之发展史及对比总结):
2013 年,从 Activiti5 分离出 camunda BPM
2014年3月,camunda BPM 7.1.0-Final 版本
......
2022年11月,camunda BPM 7.18.0 版本
附 Camunda 官方地址:
Camunda 官方首页:https://camunda.com/
Camunda 官方文档:https://docs.camunda.org/get-started/quick-start/
Camunda 中文翻译文档:http://camunda-cn.shaochenfeng.com/
Camunda github:https://github.com/camunda/
Camunda 使用
Camunda 官方提供了 Camunda Platform、Camunda Modeler,其中 Camunda Platform 以 Camunda engine 为基础为用户提供可视化界面,Camunda Modeler 是流程文件建模平台,在 Camunda Modeler 创建的流程文件可以 deploy 到 Camunda Platform 并进行管理。另外三方服务可通过 Camunda 官方提供的 rest 或者 java api 来访问 Camunda engine,操作的结果也可以在 Camunda Platform 查看和管理。

1)Camunda Platform 安装及使用
Camunda Platform 即 Camunda 平台(类似于 jBPM 的 Business Central ),提供Web管理界面,包括流程(process)、任务(task)和用户(user)管理功能,默认以 H2 为数据库。使用步骤如下:
Step 1:下载 camunda-bpm-run-7.18.0.zip 解压,然后执行 start.bat (Windows系统) 或者 start.sh (Linux系统)
Camunda Platform 安装包下载地址:https://camunda.com/download/

Step 2:访问并登录(账号密码:demo/demo)url: http://localhost:8080/camunda-welcome/index.html
进入 index 页面后,并账密登录(demo/demo):


附官方文档:
Camunda Platform 的使用有兴趣的可参考:https://docs.camunda.org/manual/7.9/webapps/
2)Camunda Modeler 安装及使用
Camunda Modeler 是流程文件建模(设计)平台,只做文件的设计,支持BPMN、DMN 和 Form 三种类型的文件设计,具体实现集成了开源框架 https://bpmn.io/ ,以下是安装使用过程:
Step 1:下载并安装 Camunda Modeler
以下以 mac 版本作为示例,安装文件:camunda-modeler-5.6.0-mac.dmg
官方下载地址:https://camunda.com/download/modeler/
Step 2:打开 Camunda Modeler

Step 3:设计请假流程文件 holiday.bpmn
Camunda Modeler 集成了开源框架 https://bpmn.io/ ,所以流程文件的设计过程与其类似,这里以请假流程文件示例:

3)Camunda 与 Spring Boot 集成请假 demo 示例
以请假流程作为 Camunda 基本使用示例(流程示例同 Camunda Modeler 流程文件示例),学生先发起请假,然后老师审批,若审批时需要进一步审批,则再次发起审批(demo 示例如下,完整代码参考:https://download.csdn.net/download/zhuqiuhui/87462397):

Spring Boot 通过 camunda-bpm-spring-boot-starter-webapp 依赖集成了 Camunda Platform,通过 java api (应用代码调用)和 rest api(主要支持 Camunda Platform) 都可以操作流程任务,即示例代码中可通过 http 请求操作的任务可在 Camunda Platform 界面中看到。
Step 1:发起请假请求

发起请求请求后,从 Camunda Platform 可以看到任务执行到“Class Teacher”结点,接下来老师进行审批:

Step 2:老师审批同意,同时需要进行进一步审批

老师审批后,从 Camunda Platform 可以看到任务执行到“HOD”结点,接下来老师需要进一步审批:

Step 3:最终同意,请假流程结束

附:
上述 demo 源码地址:https://download.csdn.net/download/zhuqiuhui/87462397
Camunda 官方 Spring Boot 工程初始化地址:https://start.camunda.com/
4)流程引擎对比
使用
Camunda 相对于 Activiti 和 Flowable 比较轻量和灵活,且配套文档比较丰富
性能
Camunda 基于 Acitviti 为迁移方便,但并没有去掉 PVM(据说性能不好,Activiti已经在 6.X 版本已放弃 PVM,Flowable亦是如此)。另外但有人基于流程引擎进行压测,得出 Camunda 性能比 Flowable 提升最小10%,同时 Camunda 在高并发场景下稳定性更好
功能
Camunda 和 Flowable 都是基于 Activiti5,所以其很多功能都是相似的。另外在功能上,Camunda 更多支持如支持流程实例的迁移、提供批处理 API 操作等
Camunda 整体架构
1)Camunda 整体架构

附:上图详细描述参考:https://docs.camunda.org/manual/7.18/introduction/
建模阶段:业务分析人员或者开发都在 Camunda Modeler 上进行建模(如流程文件设计)
执行阶段:终端用户在应用程序中使用 rest api 或者 java api 访问 engine 进行流程任务管理,同时也可以查看任务列表(通过 rest api 实现),操作者可查看任务运行报告(通过 rest api 访问 engine 实现) ,管理员进行用户管理(通过 rest api 实现)
2)REST API
Camunda BPM 是一个基于 Java 的框架,主要组件是用 Java 编写的,另外 Camunda 还希望让非 Java 开发人员可以使用流程引擎技术,这就是 Camunda BPM 还提供 rest api 的原因。
Camunda engine rest api 详细接口及参数参考:https://docs.camunda.org/manual/7.9/reference/rest/
3)其他
其中更详细有关 Camunda 架构的文档参考:https://docs.camunda.org/manual/7.18/introduction/architecture/
Process Engine 架构
Camunda Platform 架构
集群架构
流程引擎系列文章
• 流程引擎之发展史及对比总结:https://blog.csdn.net/zhuqiuhui/article/details/128986403
• 流程引擎之KIE项目简介:https://blog.csdn.net/zhuqiuhui/article/details/129035796
• 流程引擎之jBPM简介:https://blog.csdn.net/zhuqiuhui/article/details/129052162
• 流程引擎之Activiti简介:https://blog.csdn.net/zhuqiuhui/article/details/129107741
• 流程引擎之Camunda简介:https://blog.csdn.net/zhuqiuhui/article/details/129107897
• 流程引擎之Flowable简介:https://blog.csdn.net/zhuqiuhui/article/details/129109273
• 流程引擎之compileflow简介:https://blog.csdn.net/zhuqiuhui/article/details/129109391
相关文章:
流程引擎之Camunda简介
背景Camunda 是支持 BPMN(工作流和流程自动化)、CMMN(案例管理) 和 DMN(业务决策管理) java 框架。Camunda 基于Activiti5 保留了 PVM,其开发团队也是从 activiti 中分裂出来的。Camunda 来自拉…...
Mybatis笔记整理
1. 相关文档地址 中文文档 https://mybatis.org/mybatis-3/zh/index.htmlMybatis可以配置成适应多种环境,不过每个SqlSessionFactory实例只能选择一种环境。Mybatis默认事务管理器是JDBC,连接池:POOLEDMaven仓库:下载地址<dependency>…...
【react全家桶】面向组件编程
文章目录02 【面向组件编程】1.组件的使用1.1 函数式组件1.2 类式组件1.3 组合组件1.4 提取组件组件实例的三大属性 state props refs2.state2.1 基本使用2.2 setState()2.3 简化版本2.4 State 的更新可能是异步的2.5 异步更新解决方案2.6 数据是向下流动的3.props3.1 基本使用…...
Django框架之模型视图-使用 PostMan 对请求进行测试
使用 PostMan 对请求进行测试 PostMan 是一款功能强大的网页调试与发送网页 HTTP 请求的 Chrome 插件,可以直接去对我们写出来的路由和视图函数进行调试,作为后端程序员是必须要知道的一个工具。 安装方式1:去 Chrome 商店直接搜索 PostMan…...
(考研湖科大教书匠计算机网络)第五章传输层-第四节:TCP流量控制
获取pdf:密码7281专栏目录首页:【专栏必读】考研湖科大教书匠计算机网络笔记导航 文章目录一:流量控制概述二:流量控制举例三:拓展阅读(可不看)(1)TCP流量控制完整例子&a…...
使用Docker-Compose搭建Redis集群
1. 集群配置3主3从由于仅用于测试,故我这里只用1台服务器进行模拟redis列表2.编写redis.conf在server上创建一个目录用于存放redis集群部署文件。这里我放的路径为/root/redis-cluster 在/opt/docker/redis-cluster目录下创建redis-1,redis-2,redis-3,redis-4,redis…...
华为OD机试 -计算网络信号(Js)
计算网络信号 题目 网络信号经过传递会逐层衰减,且遇到阻隔物无法直接穿透,在此情况下需要计算某个位置的网络信号值。 注意:网络信号可以绕过阻隔物 array[m][n] 的二维数组代表网格地图,array[i][j] = 0代表 i 行 j 列是空旷位置;array[i][j] = x(x 为正整数)代表 i 行 …...
【数据结构】————栈
文章目录前言栈是什么,栈的特点实现栈的基本操作栈的相关操作声明1.创建栈2.对栈进行初始化3.销毁栈4.判断栈是否为空5.压栈操作6.删除栈顶元素7.取出栈顶元素8.计算栈内存放多少个数据总结前言 本文主要讲述特殊的线性表——栈: 栈是什么,栈…...
从零编写linux0.11 - 第十一章 可执行文件
从零编写linux0.11 - 第十一章 可执行文件 编程环境:Ubuntu 20.04、gcc-9.4.0 代码仓库:https://gitee.com/AprilSloan/linux0.11-project linux0.11源码下载(不能直接编译,需进行修改) 本章目标 本章会加载并运行…...
Win10上通过nginx代理配置远程非445端口SMB
引言 家里架了一个SMB文件服务器,想要远程访问,开了445端口,但仅限某些特殊网络可以远程访问,其他网络全部拒绝445端口,因此网上找了很多将Win10的SMB指向别的端口的教程,但所有教程均使用环回网卡解决&am…...
Allegro如何快速清除多余的规则设置操作指导
Allegro如何快速清除多余的规则设置操作指导 在用Allegro做PCB设计的时候,会给PCB设置一些规则,在PCB设计完成之后,可能会有一些没有使用到的规则,如下图 Physical规则中的45OHM的规则是多余的 单独某个规则可以直接在规则管理器中删除,如果比较多可以用下面方法批量删除…...
ROS2 入门应用 引用自定义消息(Python)
ROS2 入门应用 引用自定义消息(Python)1. 查看自定义消息2. 修改话题发布3. 修改话题订阅4. 修改依赖关系5. 编译和运行1. 查看自定义消息 引用在《ROS2 入门应用 创建自定义接口》中自定义的消息Sphere.msg ros2 interface show tutorial_interfaces/…...
SmS-Activate一款好用的短信验证码接收工具
前言 有些国外应用在使用应用上的功能时需要注册账号,由于某种不可抗因素,我们的手机号一般不支持注册,接收不到信息验证码,于是我们可以使用SmS-Activate提供的服务,使用$实现我们的需求(大概一次验证1-5…...
SpringBoot+Elasticsearch按日期实现动态创建索引(分表)
😊 作者: 一恍过去💖 主页: https://blog.csdn.net/zhuocailing3390🎊 社区: Java技术栈交流🎉 主题: SpringBootElasticsearch按日期实现动态创建索引(分表)⏱️ 创作时间&…...
Terraform基础入门 (Infrastructure as Code)
文章目录前言介绍Terraform 术语Terraform 如何工作关于provider安装开启本地缓存demo1(dockernginx)demo2(dockerzookeeperkafka)参考资料前言 像写代码一样管理基础设施。 Terraform 使用较为高级的配置文件语法来描述基础设施,这个特性让你对配置文件进行版本化…...
Redis内存回收
Redis 内存回收 Redis之所以性能很强,最主要的原因是基于内存存储,然而单节点的Redis其内存大小不宜过大,会影响持久化或主从同步性能 可以通过修改配置文件来设置Redis的最大内存 maxmemory <bytes>当内存达到上限时,就…...
ROS2 入门应用 引用自定义消息(C++)
ROS2 入门应用 引用自定义消息(C)1. 查看自定义消息2. 修改话题发布3. 修改话题订阅4. 修改依赖关系5. 修改编译信息6. 编译和运行1. 查看自定义消息 引用在《ROS2 入门应用 创建自定义接口》中自定义的消息Sphere.msg ros2 interface show tutorial_i…...
Spring中的数据校验
数据校验基础 参考: Java Bean Validation 规范 Spring对Bean Validation的支持 Spring定义了一个接口org.springframework.validation.Validator,用于应用相关的对象的校验器。 这个接口完全从基础设施或者上下文中脱离的,这意味着它没有…...
python批量翻译excel表格中的英文
python批量翻译excel表格中的英文需求背景主要设计分析具体实现表格操作请求百度翻译api多线程控制台显示进度完整源码需求背景 女朋友的论文需要爬取YouTube视频热评,但爬下来的都是外文。 主要设计 读取一个表格文件,获取需要翻译的文本 使用百度翻译…...
基于SSM框架的RBAC权限系统设计与 实现
基于SSM框架的RBAC权限系统设计与 实现 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景…...
IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...
莫兰迪高级灰总结计划简约商务通用PPT模版
莫兰迪高级灰总结计划简约商务通用PPT模版,莫兰迪调色板清新简约工作汇报PPT模版,莫兰迪时尚风极简设计PPT模版,大学生毕业论文答辩PPT模版,莫兰迪配色总结计划简约商务通用PPT模版,莫兰迪商务汇报PPT模版,…...
MySQL 8.0 事务全面讲解
以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...
