Camunda Platform 7.0 于 2013 年作为 Activiti 5 的一个分支开始。从那时起,Camunda 已经发布了 17 个次要版本和 100 多个补丁版本。Camunda是基于Activiti5开发的一个工作流框架,同时提供开源版与商业版。Camunda目前主要包括2个长期维护的大版本:
- Camunda7:基于组件,支持BPMN,CMMN,DMN
- Camunda8:基于云原生SaaS模式,但开源功能较少
Camunda7是一个基于Java的轻量级流程开源框架,包含3大核心引擎能力:
- BPMN:工作流和过程自动化
- CMMN:案例管理
- DMN:业务决策管理
相比其他流程引擎,Camunda7具备如下特点:支持外部任务External Task、支持任意节点的跳转、支持重启Restart已经关闭的流程实例、支持流程实例的迁移、支持批量操作的 API、流程图绘制工具有桌面版本、定时节点、网关节点、、消息接收节点、执行监听器。
Camunda8相比于Camunda7是彻底性的颠覆与改变,后续计划在一个独立的章节部分再介绍Camunda8。
核心组成
上图为Camunda核心组件,截图来自官网。各个组件简要介绍如下:
- Modeler - 独立安装的建模器windows、linux、mac支持BPMN 2.0、CMMN 1.1、DMN 1.3建模具体实现集成开源框架https://bpmn.io/
- Process Engine - 流程引擎集成到应用中的Java包用于执行BPMN、CMMN、DMN
- Web Applicatons - web管理平台支持独立启动linux、windows和集成到SpringBoot启动支持集群部署SharedDB、需自定义LB及SessionState
- REST API - 提供process engine相关处理接口
- Cockpit - 管理流程process及流程实例process instances
- Tasklist - 管理流程process中的具体任务task导航到具体task、提供表单form输入、修复流程实例等
- Admin - 管理用户users、组织group、授权authorizations
流程引擎
流程引擎架构如图所示,其各部分简要说明如下:
- Java API:提供了Java类和方法,直接通过对象和流程引擎进行交互
- Rest API:提供了REST接口,支持通过HTTP与流程引擎进行交互
- 核心引擎:主要包括3大引擎,BPMN, CMMN, CMN执行引擎
- 作业执行器:作业执行程序,负则异步的处理后台工作,如流程中的定时器或异步延续
- 持久层:负则将所有数据持久化到数据库中,使用MyBatis框架
WEB应用
Camunda提供了原生的WEB应用,主要包含一下3大能力:
- Cockpit:驾驶舱,支持流程监控和操作,可以搜索流程实例,检查流程状态并修复失败的案例
- Admin:管理用户、组和授权
- Tasklist:管理工作流和用户任务,允许流程参与者检查其工作流任务并进行处理
模型
Model模型,通过建模工具对BPMN, CMMN, DMN进行建模。Camunda有3种建模工具:
- CamundaModeler:官方提供的建模器
- Bpmn.io:一个开源的建模JS框架,可集成到前端,实现自定义建模工具
- IDEA插件:Camunda BPMN visualizer,在IDEA中进行建模,相对不太成熟
许可协议
Camunda7社区版的开源许可是Apache2.0和MIT。
CamundaAPI
JavaAPI
Java API模块:
- camunda-engine
- camunda-engine-spring
- camunda-engine-cdi
- camunda-engine-dmn
- camunda-bpmn-model
- camunda-cmmn-model
- camunda-dmn-model
- camunda-spin-core
- camunda-connect-core
- camunda-commons-typed-values
这里先概要介绍一下JavaAPI的主要构成,详细的内容会在后续结合具体功能和源码核心分析时分享到。
RESTAPI
camunda-engine-rest:HTTP 接口(REST API 参考中所述的 REST API 接受的 HTTP 请求集。Java 类不是公共 API 的一部分),详见https://docs.camunda.org/manual/7.20/reference/rest/
遥测
Camunda官网说法是,Camunda一直致力于提供高水平、稳定的卓越用户体验,会收集环境和使用数据,这些内容有助于解决典型的环境设置和产品使用模式问题,并将用于产品改进决策。
引擎流程有一个名为Telemetry Reporter的专用流程,用于定期向Camunda报告遥测数据。默认情况下,此线程始终在运行,但仅在显示启用遥测报告时向远端官方发送数据。
这个大家在使用过程中需要注意,如果不想发送数据,就不要开启相关配置。