背景
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