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

流程引擎之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可以配置成适应多种环境&#xff0c;不过每个SqlSessionFactory实例只能选择一种环境。Mybatis默认事务管理器是JDBC&#xff0c;连接池&#xff1a;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 插件&#xff0c;可以直接去对我们写出来的路由和视图函数进行调试&#xff0c;作为后端程序员是必须要知道的一个工具。 安装方式1&#xff1a;去 Chrome 商店直接搜索 PostMan…...

(考研湖科大教书匠计算机网络)第五章传输层-第四节:TCP流量控制

获取pdf&#xff1a;密码7281专栏目录首页&#xff1a;【专栏必读】考研湖科大教书匠计算机网络笔记导航 文章目录一&#xff1a;流量控制概述二&#xff1a;流量控制举例三&#xff1a;拓展阅读&#xff08;可不看&#xff09;&#xff08;1&#xff09;TCP流量控制完整例子&a…...

使用Docker-Compose搭建Redis集群

1. 集群配置3主3从由于仅用于测试&#xff0c;故我这里只用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 行 …...

【数据结构】————栈

文章目录前言栈是什么&#xff0c;栈的特点实现栈的基本操作栈的相关操作声明1.创建栈2.对栈进行初始化3.销毁栈4.判断栈是否为空5.压栈操作6.删除栈顶元素7.取出栈顶元素8.计算栈内存放多少个数据总结前言 本文主要讲述特殊的线性表——栈&#xff1a; 栈是什么&#xff0c;栈…...

从零编写linux0.11 - 第十一章 可执行文件

从零编写linux0.11 - 第十一章 可执行文件 编程环境&#xff1a;Ubuntu 20.04、gcc-9.4.0 代码仓库&#xff1a;https://gitee.com/AprilSloan/linux0.11-project linux0.11源码下载&#xff08;不能直接编译&#xff0c;需进行修改&#xff09; 本章目标 本章会加载并运行…...

Win10上通过nginx代理配置远程非445端口SMB

引言 家里架了一个SMB文件服务器&#xff0c;想要远程访问&#xff0c;开了445端口&#xff0c;但仅限某些特殊网络可以远程访问&#xff0c;其他网络全部拒绝445端口&#xff0c;因此网上找了很多将Win10的SMB指向别的端口的教程&#xff0c;但所有教程均使用环回网卡解决&am…...

Allegro如何快速清除多余的规则设置操作指导

Allegro如何快速清除多余的规则设置操作指导 在用Allegro做PCB设计的时候,会给PCB设置一些规则,在PCB设计完成之后,可能会有一些没有使用到的规则,如下图 Physical规则中的45OHM的规则是多余的 单独某个规则可以直接在规则管理器中删除,如果比较多可以用下面方法批量删除…...

ROS2 入门应用 引用自定义消息(Python)

ROS2 入门应用 引用自定义消息&#xff08;Python&#xff09;1. 查看自定义消息2. 修改话题发布3. 修改话题订阅4. 修改依赖关系5. 编译和运行1. 查看自定义消息 引用在《ROS2 入门应用 创建自定义接口》中自定义的消息Sphere.msg ros2 interface show tutorial_interfaces/…...

SmS-Activate一款好用的短信验证码接收工具

前言 有些国外应用在使用应用上的功能时需要注册账号&#xff0c;由于某种不可抗因素&#xff0c;我们的手机号一般不支持注册&#xff0c;接收不到信息验证码&#xff0c;于是我们可以使用SmS-Activate提供的服务&#xff0c;使用$实现我们的需求&#xff08;大概一次验证1-5…...

SpringBoot+Elasticsearch按日期实现动态创建索引(分表)

&#x1f60a; 作者&#xff1a; 一恍过去&#x1f496; 主页&#xff1a; https://blog.csdn.net/zhuocailing3390&#x1f38a; 社区&#xff1a; Java技术栈交流&#x1f389; 主题&#xff1a; SpringBootElasticsearch按日期实现动态创建索引(分表)⏱️ 创作时间&…...

Terraform基础入门 (Infrastructure as Code)

文章目录前言介绍Terraform 术语Terraform 如何工作关于provider安装开启本地缓存demo1(dockernginx)demo2(dockerzookeeperkafka)参考资料前言 像写代码一样管理基础设施。 Terraform 使用较为高级的配置文件语法来描述基础设施&#xff0c;这个特性让你对配置文件进行版本化…...

Redis内存回收

Redis 内存回收 Redis之所以性能很强&#xff0c;最主要的原因是基于内存存储&#xff0c;然而单节点的Redis其内存大小不宜过大&#xff0c;会影响持久化或主从同步性能 可以通过修改配置文件来设置Redis的最大内存 maxmemory <bytes>当内存达到上限时&#xff0c;就…...

ROS2 入门应用 引用自定义消息(C++)

ROS2 入门应用 引用自定义消息&#xff08;C&#xff09;1. 查看自定义消息2. 修改话题发布3. 修改话题订阅4. 修改依赖关系5. 修改编译信息6. 编译和运行1. 查看自定义消息 引用在《ROS2 入门应用 创建自定义接口》中自定义的消息Sphere.msg ros2 interface show tutorial_i…...

Spring中的数据校验

数据校验基础 参考&#xff1a; Java Bean Validation 规范 Spring对Bean Validation的支持 Spring定义了一个接口org.springframework.validation.Validator&#xff0c;用于应用相关的对象的校验器。 这个接口完全从基础设施或者上下文中脱离的&#xff0c;这意味着它没有…...

python批量翻译excel表格中的英文

python批量翻译excel表格中的英文需求背景主要设计分析具体实现表格操作请求百度翻译api多线程控制台显示进度完整源码需求背景 女朋友的论文需要爬取YouTube视频热评&#xff0c;但爬下来的都是外文。 主要设计 读取一个表格文件&#xff0c;获取需要翻译的文本 使用百度翻译…...

基于SSM框架的RBAC权限系统设计与 实现

基于SSM框架的RBAC权限系统设计与 实现 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景…...

TranslucentTB:颠覆传统的Windows任务栏透明化解决方案

TranslucentTB&#xff1a;颠覆传统的Windows任务栏透明化解决方案 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 在当今数字化工作环境…...

【调优】OpenClaw从零开始群聊安全配置

未来已来,只需一句指令,养龙虾专栏导航,持续更新ing… 想象一下,你正在指挥一场精密的交响乐,每一个乐器(群组)都需要在正确的时间发出声音,既不能杂乱无章,也不能产生噪音。 对群组最核心的思考是:如何在“智能”与“安全”之间找到完美的平衡点? 答案就是“分层治…...

终极Hasklig字体完全指南:如何通过编程连字技术提升代码可读性

终极Hasklig字体完全指南&#xff1a;如何通过编程连字技术提升代码可读性 【免费下载链接】Hasklig Hasklig - a code font with monospaced ligatures 项目地址: https://gitcode.com/gh_mirrors/ha/Hasklig Hasklig是一款专为编程设计的等宽字体&#xff0c;通过创新…...

LongCat-Image-Edit V2影视后期应用:特效预处理与素材生成

LongCat-Image-Edit V2影视后期应用&#xff1a;特效预处理与素材生成 在影视后期制作中&#xff0c;每一个镜头的完美呈现都需要经过精心的打磨和处理。传统的后期流程往往需要艺术家们手动完成特效预处理、素材生成和连续帧编辑&#xff0c;这不仅耗时耗力&#xff0c;还难以…...

Qwen3-Reranker-0.6B与Java后端服务集成实战

Qwen3-Reranker-0.6B与Java后端服务集成实战 1. 为什么需要在Java服务中集成重排序模型 在企业级搜索和推荐系统中&#xff0c;我们经常遇到这样的场景&#xff1a;用户输入一个查询词&#xff0c;系统从千万级文档库中召回前100个候选结果&#xff0c;但这些结果的排序质量往…...

AI系统-21AI芯片之NoC总线

在大型SoC芯片&#xff0c;特别是AI SoC中&#xff0c;存在多个异构核子系统&#xff0c;非常的大和复杂。对应芯片设计中&#xff0c;一个重要的技术就是NoC&#xff0c;要想富先修路&#xff0c;NoC就是通信的路。而且SoC把很多硬件模块集成到一个芯片上就是为了让路好走&…...

深度学习环境配置太麻烦?试试这个训练环境镜像,一键部署快速上手

深度学习环境配置太麻烦&#xff1f;试试这个训练环境镜像&#xff0c;一键部署快速上手 1. 为什么选择这个训练环境镜像 深度学习项目开发的第一步就是搭建环境&#xff0c;这个过程往往充满挑战&#xff1a; 需要手动安装CUDA、cuDNN、PyTorch等框架&#xff0c;版本匹配问…...

AI编程专栏(三) - Cursor 高级技巧与实战优化

1. Cursor高级功能深度解析 第一次接触Cursor时&#xff0c;你可能觉得它就是个带AI的代码编辑器。但当我真正用它完成一个企业级项目后&#xff0c;才发现那些藏在深处的功能才是真正的生产力神器。比如最近在重构一个老旧的React项目时&#xff0c;通过合理使用MCP协议&#…...

工业质检新革命:无需标注数据,用ChatGPT式对话完成目标定位

工业质检新革命&#xff1a;无需标注数据&#xff0c;用ChatGPT式对话完成目标定位 1. 传统工业质检的痛点与挑战 在制造业的质检环节中&#xff0c;目标定位一直是个技术难题。传统方法通常需要&#xff1a; 大量标注数据训练专用模型针对每种产品定制算法频繁调整参数适应…...

通义千问3-Reranker-0.6B部署教程:模型服务SLA保障(P95延迟<800ms)调优

通义千问3-Reranker-0.6B部署教程&#xff1a;模型服务SLA保障&#xff08;P95延迟<800ms&#xff09;调优 1. 为什么你需要关注这个模型&#xff1f; 如果你正在做搜索系统、智能客服或者文档问答&#xff0c;肯定遇到过这样的问题&#xff1a;用户输入一个问题&#xff…...