有道无术,术尚可求,有术无道,止于术。
本系列Spring Boot 版本 2.7.9
本系列Camunda 版本 7.19.0
源码地址:https://gitee.com/pearl-organization/camunda-study-demo
文章目录
- 1. 概述
- 2. 核心组件
- 2.1 流程引擎
- 2.2 模型
- 2.3 Web应用
- 3. 下载
- 4. 许可协议
- 5. 平台架构
- 5.1 嵌入式流程引擎
- 5.2 分布式的、容器管理的流程引擎
- 5.3 独立运行的(远程)流程引擎服务
- 6. 集群模式
- 7. 多租户
- 8. 网络应用程序架构
- 9. 实现协议
- 9.1 BPMN
- 9.2 CMMN
- 9.3 DMN
- 10. 运行环境
- 10.1 Java
- 10.2 数据库
- 10.3 Camunda Modeler
- 11. 第三方依赖库
- 12. 公共 API
- 13. 遥测
1. 概述
Camunda
是一种基于Java
的框架,三大核心功能:
- BPMN:工作流和过程自动化
- CMMN:案例管理
- DMN:业务决策管理
注: 本系列主要是讲解BPMN
,CMMN
和DMN
后期会在扩展篇简单讲解。
2. 核心组件
Camunda
平台核心组件:
2.1 流程引擎
流程引擎是最核心的集成组件,它由多个组件构成,是一个轻量级的Java
库。负责执行BPMN 2.0
流程、CMMN 1.1
案例和CMMN 1.3
决策。
简要说明:
- Java API:提供了很多
Java
类和方法,直接通过对象和流程引擎进行交互 - Rest API:提供了很多
REST
接口,直接通过Http
和流程引擎进行交互 - 核心引擎:轻量级
BPMN
、CMMN
、CMMN
执行引擎, - 作业执行器:作业执行程序,负责处理异步的后台工作,如流程中的定时器或异步延续
- 持久层:负责将所有数据持久化到数据库中,使用的是
MyBatis
框架
2.2 模型
Model
模型,通过建模工具对BPMN
、CMMN
、DMN
进行建模。
Camunda
建模工具:
- Camunda Modeler:
Camunda
官方提供的BPMN
、CMMN
、DMN
、表单建模器 - bpmn.io:一个开源的建模
JS
框架,可集成到前端,实现自定义的建模器 - IDEA插件:在
IDEA
中进行建模,但是问题较多,不推荐使用
建立模型后,可以通过流程引擎存储在数据库中。
2.3 Web应用
Camunda
提供了Web
应用,包含以下三大模块:
- Cockpit:流程监控和操作,可以搜索流程实例,检查其状态并修复执行失败的实例
- Admin:管理用户,组和授权
- Tasklist:管理工作流和用户任务,允许流程参与者检查其工作流任务并导航到任务列表,然后进行处理
3. 下载
Camunda
是一个灵活的框架,可以在不同的环境中使用,选择不同的运行方式。因为是基于Java
开发,所以需要事先安装JDK
环境。
Camunda
为社区用户和企业用户提供不同的运行时下载:
- 社区版下载地址
- 企业版下载地址
当然也可以通过Spring Boot
和Docker
的方式运行Camunda
平台。
Camunda
也提供了整合包,可以快速安装和运行Camunda
平台,不需要任何额外的设置或安装步骤,整合包包含:
- 已配置好的分布式流程引擎
Web
应用控制台:Tasklist
,Cockpit
,Admin
Rest Api
接口- 容器/应用服务器
此外还提供了建模工具Camunda Modeler
,用于BPMN 2.0
和DMN 1.3
建模,下载地址。
4. 许可协议
Camunda
社区版的开源许可证主要是Apache2.0
和MIT
,可以在源代码根目录中查看源文件。
Camunda
企业版,除了社区版组件外,还包含受知识产权法保护的其他企业版组件,如果没有订阅购买获取授权,不得以任何形式或方式使用、复制、翻译、广播、修改、许可、传输、分发、展示、执行、发布企业组件或展示任何部分。禁止对企业组件进行逆向工程、反汇编或反编译。
5. 平台架构
5.1 嵌入式流程引擎
流程引擎被作为一个库添加到一个自定义的应用程序中,通过这种方式,流程引擎可以很容易地随着应用程序的生命周期而启动和停止,可以在共享数据库之上运行多个嵌入式流程引擎。
5.2 分布式的、容器管理的流程引擎
流程引擎在运行时容器(Servlet
容器、应用服务器…)内启动。流程引擎作为容器服务提供,可以被部署在容器内的所有应用程序共享。这个概念就像JMS
消息队列,它由运行时提供,可以被所有应用程序使用。流程部署和应用程序之间有一对一的映射:流程引擎跟踪应用程序部署的流程定义,并将执行委托给相对应的应用程序。
5.3 独立运行的(远程)流程引擎服务
独立的(远程)流程引擎服务器即流程引擎,作为网络服务提供。流程引擎作为容器服务提供的,可以被部署在容器内的所有应用程序共享。在网络上运行的不同应用程序可以通过一个远程通信与流程引擎进行交互。使流程引擎可以远程访问的最简单方法是使用内置的REST API
。不同的通信渠道,如SOAP Webservices
或JMS
也是可以的,但需要由用户自行实现。
6. 集群模式
为了提供扩展或故障转移能力,流程引擎可以发布到集群中的不同节点。然后每个流程引擎实例必须连接到同一个共享数据库。
各个流程引擎实例不会跨事务维护会话状态。每当流程引擎运行一个事务时,就会将整个状态刷新到共享数据库中。这使得负载均衡成为可能,也就是将在相同流程实例中工作的后续请求路由到不同的集群节点上。这个模型非常简单易懂,并且在部署集群时施加的限制很有限。就流程引擎而言,用于扩展的设置和用于故障转移的设置之间没有区别(因为流程引擎在事务之间不会保持会话状态)。
7. 多租户
为了使一个 Camunda 引擎为多个独立方提供服务,流程引擎支持多租户。它支持以下两种多租户模式:
- 使用不同的数据库模式或数据库进行表级数据分离
- 使用租户标记进行行级数据分离
8. 网络应用程序架构
Camunda
平台的网络应用程序是基于RESTful
架构的。
使用的框架有:
- JAX-RS
- AngularJS
- RequireJS
- jQuery
- Twitter Bootstrap
由Camunda
工程师开发以及其他自定义框架:
- camunda-bpmn.js
- ngDefine
- angular-data-depend
9. 实现协议
Camunda
在业务流程方面实现了三种不同的标准:BPMN 2.0
、CMMN 1.1
和DMN 1.3
。 这三个标准是由Object Management Group在Camunda
的积极合作下定义的。Camunda
平台提供执行和建模工具的开源实现。
9.1 BPMN
Business Process Model and Notation (BPMN)
是一个工作流和流程自动化标准。
Camunda
支持BPMN 2.0
:
- 快速入门实现
BPMN
流程:Quick Start (Java / JS) - 快速了解
BPMN
建模语言:BPMN Modeling Tutorial BPMN
建模相关信息:BPMN Modeling ReferenceBPMN
建模工具:BPMN Modeler- 实现
BPMN
流程: BPMN Implementation Reference - 执行
BPMN
:Process Engine
9.2 CMMN
Case Management Model and Notation (CMMN)
是一个案例管理标准。
Camunda
支持CMMN 1.1
版本:
- 快速入门实现
CMMN
- 实现
CMMN
案例:CMMN Implementation Reference - 执行
CMMN
: Process Engine
9.3 DMN
Decision Model and Notation (DMN)
是一个业务决策标准。
Camunda
支持DMN 1.1
版本:
- 快速入门实现
DMN
决策表: DMN Getting Started - 了解
DMN
: DMN Modeling Tutorial - 学习用于编辑
DMN
的工具: DMN Editor - 实现
DMN
决策::DMN Implementation Reference - 执行
DMN
: DMN Engine
10. 运行环境
可以在任何可运行Java
的环境中运行Camunda
平台。
10.1 Java
支持Java 8 / 11 / 17
10.2 数据库
- 支持的数据库:
- MySQL 8.0
- MariaDB 10.6
- Oracle 12c / 19c
- IBM DB2 11.5
- PostgreSQL 12 / 13 / 14 / 15
- Amazon Aurora PostgreSQL compatible with PostgreSQL 12 / 13 / 14
- Microsoft SQL Server 2017 / 2019
- Microsoft Azure SQL with Camunda-supported SQL Server compatibility levels
- SQL Server on Azure Virtual Machines
- Azure SQL Managed Instance
- Azure SQL Database
- H2 2.1 (not recommended for Cluster Mode - see Deployment Note)
- CockroachDB v20.1.3 (see Configuration guide for more details)
10.3 Camunda Modeler
Camunda Modeler
支持以下平台:
- Windows 7 / 10
- Mac OS X 10.11
- Ubuntu LTS
11. 第三方依赖库
可以在官方文档中查看Camunda
第三方依赖项。
12. 公共 API
Camunda
平台提供了一个公共API
,包含两部分:
- Java API
- HTTP API (REST API)
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
REST API
模块:
- camunda-engine-rest
Camund
a的版本管理方案遵循语义化版本模式:
大版本号.小版本号.补丁
Camunda
将保持小版本号版本更新是向后兼容性的。例如:从版本7.1.x
到 7.2.x
公共API
是向后兼容的。
13. 遥测
遥测:是将对象参量的近距离测量值传输至远距离的测量站来实现远距离测量的技术。
Camunda
致力于提供高水平、稳定的卓越用户体验,会收集环境和使用数据,这些见解有助于解典型的环境设置和产品使用模式,并将用于做出明智的产品改进决策。
进程引擎有一个名为Telemetry Reporter
的专用线程,用于定期向Camunda
报告遥测数据。默认情况下,此线程始终在运行,但仅在显式启用遥测时报告数据。
简要概述:Camunda
中有一个后台线程,会定期向Camunda
官方地址发送检测数据…