流程引擎之Camunda简介

news2024/12/26 14:04:45

背景

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/356037.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

KubeSphere实战

文章目录一、KubeSphere平台安装1、Kubernetes上安装KubeSphere1.1 安装docker1.2 安装Kubernetes1.3 前置环境之nfs存储1.4 前置环境之metrics-server1.5 安装KubeSphere2、Linux单节点部署KubeSphere3、Linux多节点部署KubeSphere(推荐)二、KubeSphere实战1、多租户实战2、中…

Spring中的数据校验--进阶

分组校验 场景描述 在实际开发中经常会遇到这种情况:添加用户时,id是由后端生成的,不需要校验id是否为空,但是修改用户时就需要校验id是否为空。如果在接收参数的User实体类的id属性上添加NotNull,显然无法实现。这时…

【飞桨AI-Python小白逆袭大神课程】作业3-《青春有你2》选手数据分析

目录 一、数据准备 1、文件数据以json文件格式保存: 二、数据分析 2、数据分析四剑客: (1)Numpy (2)pandas (3)Matplotlib (4)PIL (5&#x…

操作系统题目收录(十一)

1、操作系统采用分页存储管理方式,要求()。 A:每个进程拥有一张页表,且进程的页表驻留在内存中B:每个进程拥有一张页表,但只有执行进程的页表驻留在内存中C:所有进程共享一张页表&a…

django项目实战(django+bootstrap实现增删改查)

目录 一、创建django项目 二、修改默认配置 三、配置数据库连接 四、创建表结构 五、在app当中创建静态文件 六、页面实战-部门管理 1、实现一个部门列表页面 2、实现新增部门页面 3、实现删除部门 4、实现部门编辑功能 七、模版的继承 1、创建模板layout.html 1&…

Django框架之模型视图--Session

Session 1 启用Session Django项目默认启用Session。 可以在settings.py文件中查看,如图所示 如需禁用session,将上图中的session中间件注释掉即可。 2 存储方式 在settings.py文件中,可以设置session数据的存储方式,可以保存…

基于springboot的网上图书商城的设计与实现(程序+详细设计文档)

大家好✌!我是CZ淡陌。在这里为大家分享优质的实战项目,本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目,希望你能有所收获,少走一些弯路! 🍅更多优质项目👇&…

Rust学习入门--【17】Rust Slice(切片)类型

系列文章目录 Rust 语言是一种高效、可靠的通用高级语言,效率可以媲美 C / C 。本系列文件记录博主自学Rust的过程。欢迎大家一同学习。 Rust学习入门–【1】引言 Rust学习入门–【2】Rust 开发环境配置 Rust学习入门–【3】Cargo介绍 Rust学习入门–【4】Rust 输…

RocketMQ云服务器和本地基础安装搭建及可视化控制台安装使用

一起学编程,让生活更随和! 如果你觉得是个同道中人,欢迎关注博主gzh:【随和的皮蛋桑】。 专注于Java基础、进阶、面试以及计算机基础知识分享🐳。偶尔认知思考、日常水文🐌。 目录一、RocketMQ 介绍1、Ro…

分布式事务--理论基础

1、事务基础 1.1、什么是事务 事务可以看做是一次大的活动,它由不同的小活动组成,这些活动要么全部成功,要么全部失败。 1.2、本地事务 在同一个进程内,控制同一数据源的事务,称为本地事务。例如数据库事务。 在计…

PyTorch 并行训练 DistributedDataParallel完整代码示例

使用大型数据集训练大型深度神经网络 (DNN) 的问题是深度学习领域的主要挑战。 随着 DNN 和数据集规模的增加,训练这些模型的计算和内存需求也会增加。 这使得在计算资源有限的单台机器上训练这些模型变得困难甚至不可能。 使用大型数据集训练大型 DNN 的一些主要挑…

SpringBoot监控

文章目录一、PrometheusGrafana监控Springboot1、简介2、SpringBoot应用镜像搭建2.1 springboot应用创建2.2 镜像创建3、Prometheus3.1 概述3.2 Prometheus创建4、Grafana可视化监控4.1 可视化4.2 告警设置二、轻量级日志系统Loki1、简介1.1 介绍1.2 与ELK差异2、grafana loki日…

linux宝塔安装和部署node全栈项目

使用服务器:阿里云ECS系列 服务器操作系统: Alibaba Cloud Linux 2.1903 LTS 64位 连接服务器方式: Workbench远程连接 使用公网IP登录 Workbench远程桌面,使用命令安装linux宝塔面板操作服务器: 1.登录linux宝塔面板,使用终端命令安装linux宝塔 yum i…

【操作系统】计算机系统概述

文章目录操作系统的概念、功能和目标熟悉的操作系统计算机系统的层次结构操作系统的概念操作系统的功能和目标作为系统资源的管理者作为用户和计算机之间的接口作为最接近硬件的层次操作系统的四个特征并发共享并发和共享的关系虚拟异步操作系统的发展和分类手工操作阶段单道批…

1207. 大臣的旅费/树的直径【AcWing】

1207. 大臣的旅费 很久以前,T王国空前繁荣。 为了更好地管理国家,王国修建了大量的快速路,用于连接首都和王国内的各大城市。 为节省经费,T国的大臣们经过思考,制定了一套优秀的修建方案,使得任何一个大…

使用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…

Python 使用 pip 安装 matplotlib 模块(秒解版)

长话短说:本人下载 matplotlib 花了大概三个半小时屡屡碰壁,险些暴走。为了不让新来的小伙伴走我的弯路,特意创作本片文章指明方向。 1.首先需要下载 python 我直接是在电脑自带的软件商店里下载的,图方便,当然在官网下…

操作系统 四(设备管理)

I/O系统功能 隐藏I/O设备的细节;保证设备无关性;提高处理机和I/O设备的利用率;对I/O设备进行控制;确保对设备的正确共享;处理错误。中断、通道、DMA概念 中断:CPU对I/O设备发来的中断信号的一种响应DMA&am…

【配电网优化】基于串行和并行ADMM算法的配电网优化研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

超详细讲解文件函数

超详细讲解文件函数!!!!字符输入/输出函数fgetcfputc文本行输入/输出函数fgetsfputs格式化输入/输出函数fscanffprintf二进制输入/输出函数freadfwrite打开/关闭文件函数fopenfclose字符输入/输出函数 fgetc fgetc函数可以从指定…