您当前的位置:首页 > 电脑百科 > 程序开发 > 架构

开源流程引擎Camunda技术架构

时间:2022-07-19 15:33:20  来源:  作者:数字说

Camunda是一个基于JAVA框架,支持用于工作流和流程自动化的BPMN、用于案例管理的CMMN和用于业务决策管理的DMN。

本篇文章我们仅考虑BPMN流程引擎,先不涉及CMMN和DMN引擎。就流程引擎而言,Camunda是一个灵活的工作流框架,它的核心是一个在Java虚拟机内部运行的原生BPMN 2.0流程引擎,因此它可以嵌入到任何Java应用程序或运行时容器中。Camunda与Java EE 集成,并可以与Spring Framework和Spring Boot完美匹配。

一、Camunda的总体架构

Camunda BPMS到底包括哪些功能,我们拿官方的一张架构图进行解读分析。

开源流程引擎Camunda技术架构

 

1.从BPM应用维度看

Camunda分为流程设计和流程运行两个阶段,见图中最下方的蓝色大箭头,Model和Execute,按照这两个阶段,Camunda划分为两大部分功能,对应设计阶段的功能有 Modeler,对应运行阶段的功能有Engine、TaskList、Cockpit、Admin。

2.从BPM功能维度看

Camunda包括了流程设计器(Modeler)、流程引擎(Engine)、API接口(REST/Java API)、任务列表(TaskList)、流程管理控制台(Cockpit)、系统管理工具(Admin)。在Camunda商业产品中还包括了流程监控预警工具(Optimize)、流程协同设计工具(Cawemo)。这里重点先说一下Camunda流程设计器,支持两种模式,一种是富客户端的流程建模工具Camunda Modeler,需要在客户端安装;另一种是基于浏览器的流程设计器bpmn.io,这两款软件均开源。

3.从BPM角色维度看

Camunda分为业务分析师、流程开发工程师、最终用户、流程管理员、系统管理员这几个角色,每个角色对应BPMS不同的功能。业务分析师、流程开发工程师使用流程设计器(Modeler)进行流程建模,最终用户使用任务列表(TaskList)进行流程发起和审批,流程管理员使用流程管理控制台(Cockpit)进行流程管理,比如流程暂停恢复、流程异常干预等,系统管理员使用系统管理工具(Admin)进行系统管理,比如组织用户管理、权限管理等。

 

二、Camunda的集成能力

1.支持与Spring框架集成

Camunda支持与spring框架集成,把 camunda-engine-spring框架引入到项目的maven模块内,它可以与Spring 3、4或5版本一起使用,具体集成过程后面有文章单独介绍。

2.支持与spring boot集成

后面文章专题介绍

3.支持与CDI and Java EE 集成

CDI (Context and Dependency Injection)是 Java EE6的标准和依赖注入,Camunda通过camunda-engine-cdi模块集成可利用camunda引擎的配置和cdi的可扩展性。

4.支持与Runtime Container 集成

支持与Tomcat、JBoss等常见的运行容器集成。

 

三、Camunda支持的部署架构

Camunda BPM是一个灵活的框架,支持嵌入式、分布式、集群等多种部署模式。

1.嵌入式部署

流程引擎以Jar包方式添加到应用程序中,通过这种方式,可以在应用程序生命周期中轻松启动和停止流程引擎。

开源流程引擎Camunda技术架构

 

2.基于web容器启动,多应用共享

流程引擎在运行时容器(Servlet容器、应用程序服务器等)中启动,流程引擎作为容器服务提供,可以由容器内部署的所有应用程序共享。这种方式在实际应用场景中不多见。

开源流程引擎Camunda技术架构

 

3.独立部署,多应用共享

在这种情况下,流程引擎独立部署,通过网络提供服务,网络上运行的不同应用程序可以通过远程通信通道与进程引擎交互,远程访问流程引擎的最简单方法是使用内置的REST服务接口。在企业级流程中心部署架构中,这是一种最常见的部署模式,在现在的微服务部署架构中,也可以采取这种方式。

开源流程引擎Camunda技术架构

 

4.集群部署

为了提供扩展或故障转移功能,流程引擎可以分布到集群中的不同节点,每个流程引擎实例都必须连接到共享数据库。Camunda BPM不提供现成的负载平衡功能,可以采用Nginx等第三方负载均衡软件实现。

四、Camunda依赖的第三方类库

本文介绍了第三方库及其在Camunda中的使用。对于Camunda的每个组件,都列出了第三方库。对于每个库,都解释了该库是必需的依赖项还是可选的依赖项。必需的依赖是Camunda提供核心功能所依赖的库。在下面的列表中标记为(Required Dependency)。可选的依赖项是可以与Camunda集成的库。在下面的列表中标记为(可选依赖项)。

以下是Camunda7.15版本依赖得第三方类库:

1、Process Engine

流程引擎依赖于以下第三方类库:

MyBatis mApping framework (Required Dependency) for object-relational mapping.

Joda Time (Required Dependency) for parsing date formats.

Java Uuid Generator (JUG) (Optional Dependency) Id Generator. See the documentation on Id-Generators

SLF4J (Required Dependency) Logging Facade

此外,流程引擎还可以集成:

Apache Commons Email (Optional Dependency) for mail task support.

Spring Framework Spring-Beans (Optional Dependency) for configuration using camunda.cfg.xml.

Spring Framework Spring-Core (Optional Dependency) for configuration using camunda.cfg.xml.

Spring Framework Spring-ASM (Optional Dependency) for configuration using camunda.cfg.xml.

Groovy (Optional Dependency) for groovy script task support.

Jython (Optional Dependency) for Python/ target=_blank class=infotextkey>Python script task support.

JRuby (Optional Dependency) for Ruby script task support.

Freemarker (Optional Dependency) for freemarker template engine support.

Apache Velocity (Optional Dependency) for apache velocity template engine support.

SAXON (Optional Dependency) for XSLT and XQuery template engine support.

2、REST API

REST API依赖于以下第三方库:

Jackson JAX-RS (Required Dependency) provider for JSON content type

Apache Commons FileUpload (Required Dependency)

此外,当使用Apache Tomcat时:

RESTEasy (Required Dependency)

3、Spring Support

Spring支持可以与以下第三方库集成:

Apache Commons DBCP (Optional Dependency)

Spring Framework Spring-Beans (Optional Dependency)

Spring Framework Spring-Core (Optional Dependency)

Spring Framework Spring-ASM (Optional Dependency)

Spring Framework Spring-Context (Optional Dependency)

Spring Framework Spring-JDBC (Optional Dependency)

Spring Framework Spring-ORM (Optional Dependency)

Spring Framework Spring-TX (Optional Dependency)

4、Camunda Spin

Camunda Spin依赖于以下第三方库:

Jackson Json (Required Dependency) for Json Dataformat Support

此外,Camunda Spin可以与以下库集成:

Jayway Json Path (Optional Dependency) for Json Path Support

5、Camunda Connect

Camunda Connect依赖于以下第三方库:

Apache Http Components (Required Dependency) for REST and SOAP support.

 

五、Camunda支持的开发运行环境

1、支持的Java开发环境

• Java版本: 8 / 9 / 10 / 11 / 12 / 13 / 14

• Springboot版本: 2.3.x.RELEASE

2、支持的Java运行环境

• Oracle JDK 8 / 9 / 10 / 11 / 12 / 13 / 14

• IBM JDK 8 (with J9 JVM)

• OpenJDK 8 / 9 / 10 / 11 / 12 / 13 / 14

3、支持的数据库软件

MySQL 5.6 / 5.7

• MariaDB 10.0 / 10.2 / 10.3

• Oracle 11g / 12c / 18c / 19c

• IBM DB2 10.5 / 11.1

• PostgreSQL 9.4 / 9.6 / 10.4 / 10.7 / 11.1 / 11.2 / 12.2

• Microsoft SQL Server 2012/2014/2016/2017

• H2 1.4

4、支持的应用服务器

• Apache Tomcat 7.0 / 8.0 / 9.0

• JBoss EAP 6.4 / 7.0 / 7.1 / 7.2

• Wildfly Application Server 10.1+

• IBM WebSphere Application Server 8.5 / 9.0 企业版

• Oracle WebLogic Server 12c (12R2) 企业版

5、支持的浏览器

google Chrome

• Mozilla Firefox

• Microsoft Edge

6、流程设计器支持的操作系统

windows 7 / 10

mac OS X 10.11

• Ubuntu LTS



Tags:架构   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
几年前,在通信领域的技术咨询经历,初步了解到预分配内存管理机制,其对于性能的改善是多么的明显。最近,也从点点滴滴的金融科技的领域,看到了高频交易所需要的低延时架构技术(当然...【详细内容】
2022-10-25  Tags: 架构  点击:(8)  评论:(0)  加入收藏
近日,国家标准化管理委员会发布2022年第13号中华人民共和国国家标准公告,批准发布国家标准GB/T 42021-2022《工业互联网 总体网络架构》,这是我国工业互联网网络领域发布的首个...【详细内容】
2022-10-25  Tags: 架构  点击:(38)  评论:(0)  加入收藏
前端架构需要解决的问题前端网页就是这么简单,除去图片、视频等资源外只有三部分,即标记网页元素的HTML、设置元素样式的CSS和负责交互处理的JavaScript。在软件开发上,普遍认...【详细内容】
2022-10-24  Tags: 架构  点击:(5)  评论:(0)  加入收藏
前导近期有个同事跟我说遇到一件很奇怪的事情,时不时收到售后反馈说 部分用户无法接收到聊天室(WebSocket 服务)消息,然而在测试服以各种方式测试都无法复现这种现象。于是陷...【详细内容】
2022-10-21  Tags: 架构  点击:(14)  评论:(0)  加入收藏
微服务的痛点在产品研发过程中,引入一种技术来解决一个业务问题并不难,难的是能否合理评估技术风险,这个观点对微服务同样适用。因此,本节将专门讨论微服务会带来哪些问题,这部分...【详细内容】
2022-10-17  Tags: 架构  点击:(8)  评论:(0)  加入收藏
Web 3.0 应用程序(或“DApps”)的架构与 Web 2.0 应用程序完全不同。以 Medium 为例,这是一个简单的博客网站,用户可以发布自己的内容并与其他人的内容进行交互。作为一个 web 2...【详细内容】
2022-10-10  Tags: 架构  点击:(59)  评论:(0)  加入收藏
译者 | 布加迪数据在急剧增多。全球每天生成的数据量三年后将达到463 EB。相比之下,人类迄今生成的所有单词量估计总共也就5 EB。为了在当今的数字经济下取得成功,许多企业在...【详细内容】
2022-10-08  Tags: 架构  点击:(15)  评论:(0)  加入收藏
大家好!在本手册中,您将了解软件架构这一广阔而复杂的领域。当我第一次开始编码之旅时,我发现这是一个既令人困惑又令人生畏的领域。所以我会尽量避免你的困惑。在这本手册中,我...【详细内容】
2022-10-08  Tags: 架构  点击:(7)  评论:(0)  加入收藏
在云原生架构出现之前,大家谈论最多的是微服务架构。有的企业可能只有一种架构,有的企业经历过多种架构的演变。架构的选择与企业当前所处的阶段有很大关系,好的架构都是为了解...【详细内容】
2022-10-06  Tags: 架构  点击:(22)  评论:(0)  加入收藏
Apache Kafka 已成为大多数技术栈中的主流组件。使用 Kafka 的好处包括确保事件中的因果顺序,同时保持并行性,通过在服务器之间快速复制分区来恢复故障,等等。 然而,运行 Kafka...【详细内容】
2022-10-04  Tags: 架构  点击:(36)  评论:(0)  加入收藏
▌简易百科推荐
在了解SpringBoot项目拆分之前首先我们需要了解微服务架构什么是微服务?单个轻量级服务一般为一个单独微服务,微服务讲究的是 专注某个功能的实现,比如登录系统只专注于用户登...【详细内容】
2022-10-27  java小悠  今日头条  Tags:Spring Boot   点击:(13)  评论:(0)  加入收藏
本文整理自字节跳动基础架构的大数据开发工程师魏中佳在 ApacheCon Aisa 2022 「大数据」议题下的演讲,主要介绍 Cloud Shuffle Service(CSS) 在字节跳动 Spark 场景下的设计与...【详细内容】
2022-10-26  开源中国   网易号  Tags:Cloud Shuffle Service   点击:(10)  评论:(0)  加入收藏
几年前,在通信领域的技术咨询经历,初步了解到预分配内存管理机制,其对于性能的改善是多么的明显。最近,也从点点滴滴的金融科技的领域,看到了高频交易所需要的低延时架构技术(当然...【详细内容】
2022-10-25  科技资料库     Tags:架构   点击:(8)  评论:(0)  加入收藏
前端架构需要解决的问题前端网页就是这么简单,除去图片、视频等资源外只有三部分,即标记网页元素的HTML、设置元素样式的CSS和负责交互处理的JavaScript。在软件开发上,普遍认...【详细内容】
2022-10-24  程序员高级码农II  今日头条  Tags:架构   点击:(5)  评论:(0)  加入收藏
数据一致性前面总结了微服务的9个痛点,有些痛点没有好的解决方案,而有些痛点是有对策的,从本章开始,就来讲解某些痛点对应的解决方案。这一章先解决数据一致性的问题,先来看一个...【详细内容】
2022-10-23  互联共商     Tags:微服务   点击:(5)  评论:(0)  加入收藏
前导近期有个同事跟我说遇到一件很奇怪的事情,时不时收到售后反馈说 部分用户无法接收到聊天室(WebSocket 服务)消息,然而在测试服以各种方式测试都无法复现这种现象。于是陷...【详细内容】
2022-10-21  raylin666  今日头条  Tags:WebSocket   点击:(14)  评论:(0)  加入收藏
引言笔者在经历的的一些项目中都使用了 DDD 领域驱动设计进行架构设计,尤其是在业务梳理、中台规划以及微服务划分等方面,DDD 是重要的架构设计方法论,对业务领域建模、微服务...【详细内容】
2022-10-20  宫心职场攻略   网易号  Tags:DDD   点击:(11)  评论:(0)  加入收藏
微服务的痛点在产品研发过程中,引入一种技术来解决一个业务问题并不难,难的是能否合理评估技术风险,这个观点对微服务同样适用。因此,本节将专门讨论微服务会带来哪些问题,这部分...【详细内容】
2022-10-17  大数据架构师  今日头条  Tags:微服务   点击:(8)  评论:(0)  加入收藏
译者 | 布加迪数据在急剧增多。全球每天生成的数据量三年后将达到463 EB。相比之下,人类迄今生成的所有单词量估计总共也就5 EB。为了在当今的数字经济下取得成功,许多企业在...【详细内容】
2022-10-08    51CTO  Tags:架构   点击:(15)  评论:(0)  加入收藏
大家好!在本手册中,您将了解软件架构这一广阔而复杂的领域。当我第一次开始编码之旅时,我发现这是一个既令人困惑又令人生畏的领域。所以我会尽量避免你的困惑。在这本手册中,我...【详细内容】
2022-10-08  一个即将被退役的码农  今日头条  Tags:软件架构   点击:(7)  评论:(0)  加入收藏
站内最新
站内热门
站内头条