开源流程引擎Camunda技术架构(开源流程图js)
ccwgpt 2024-11-01 11:31 59 浏览 0 评论
Camunda是一个基于Java的框架,支持用于工作流和流程自动化的BPMN、用于案例管理的CMMN和用于业务决策管理的DMN。
本篇文章我们仅考虑BPMN流程引擎,先不涉及CMMN和DMN引擎。就流程引擎而言,Camunda是一个灵活的工作流框架,它的核心是一个在Java虚拟机内部运行的原生BPMN 2.0流程引擎,因此它可以嵌入到任何Java应用程序或运行时容器中。Camunda与Java EE 集成,并可以与Spring Framework和Spring Boot完美匹配。
一、Camunda的总体架构
Camunda BPMS到底包括哪些功能,我们拿官方的一张架构图进行解读分析。
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包方式添加到应用程序中,通过这种方式,可以在应用程序生命周期中轻松启动和停止流程引擎。
2.基于web容器启动,多应用共享
流程引擎在运行时容器(Servlet容器、应用程序服务器等)中启动,流程引擎作为容器服务提供,可以由容器内部署的所有应用程序共享。这种方式在实际应用场景中不多见。
3.独立部署,多应用共享
在这种情况下,流程引擎独立部署,通过网络提供服务,网络上运行的不同应用程序可以通过远程通信通道与进程引擎交互,远程访问流程引擎的最简单方法是使用内置的REST服务接口。在企业级流程中心部署架构中,这是一种最常见的部署模式,在现在的微服务部署架构中,也可以采取这种方式。
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 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
相关推荐
- Spring WebFlux vs. Spring MVC(springboot是什么)
-
背景随着异步I/O和Netty等框架的流行,响应式编程逐渐走入大众的视野。但是,响应式编程本身并不是太新的概念,这个术语最早出现在1985年DavidHarel和AmirPnue...
- 深度解析微服务高并发:适配SpringMVC框架适配模块及实现原理
-
适配主流框架如果不借助Sentinel提供的适配主流框架的模块,则在使用Sentinel时需要借助try-catchfinally将要保护的资源(方法或代码块)包起来,在目标方法或代码块执行之前,调...
- Spring MVC 底层原理深度解析:从请求到响应的全链路拆解
-
一、Servlet容器与DispatcherServlet的启动博弈1.Tomcat初始化阶段java//Tomcat初始化流程StandardContext#startInterna...
- 改造总结之传统SpringMVC架构转换为SpringBoot再到集群
-
改造出发点,是基于现在服务都在向上云的目标前进,传统SpringMVC难以满足项目持续构建、服务节点任意扩展的需求,所以开始了历史项目的改造。项目改造考虑的主要是兼容以前的业务代码,以及session...
- SpringBoot3 整合 Spring MVC 全解析:开启高效 Web 开发之旅
-
在当今的JavaWeb开发领域,Spring框架家族无疑占据着重要的地位。其中,SpringBoot3和SpringMVC更是开发者们构建强大、高效Web应用的得力工具。今天,...
- 一文读懂SpringMVC(一文读懂!残疾人低保边缘家庭能领的超实用福利政策)
-
1.SpringMVC定义1.1.MVC定义Model(模型):是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据View(视图):是应用程序中处理数据显示的部分。通常...
- 69 个Spring mvc 全部注解:真实业务使用案例说明(必须收藏)
-
SpringMVC框架的注解为Web开发提供了一种简洁而强大的声明式方法。从控制器的定义、请求映射、参数绑定到异常处理和响应构建,这些注解涵盖了Web应用程序开发的各个方面。它们不仅简化了编码工作,...
- Spring MVC工作原理:像拼积木一样构建Web应用
-
SpringMVC工作原理:像拼积木一样构建Web应用在Java的Web开发领域,SpringMVC无疑是一个让人又爱又恨的存在。它像一位神通广大的积木搭建大师,将一个个分散的功能模块巧妙地拼接在...
- 5千字的SpringMVC总结,我觉得你会需要
-
思维导图文章已收录到我的Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary概述SpringMVC再熟悉不过的框架了,因为现在最火的...
- SpringMVC工作原理与优化指南(springmvc工作原理和工作流程)
-
SpringMVC工作原理与优化指南在现代Java开发中,SpringMVC无疑是构建Web应用程序的首选框架之一。它以其优雅的设计和强大的功能吸引了无数开发者。那么,SpringMVC究竟是如何工作...
- Spring MVC框架源码深度剖析:从入门到精通
-
SpringMVC框架源码深度剖析:从入门到精通SpringMVC框架简介SpringMVC作为Spring框架的一部分,为构建Web应用程序提供了强大且灵活的支持。它遵循MVC(Model-V...
- 3000字搞明白SpringMVC工作流程、DispatcherServlet类、拦截器!
-
SpringMVC基础虽然SpringBoot近几年发展迅猛,但是SpringMVC在Web开发领域仍然占有重要的地位。本章主要讲解SpringMVC的核心:DispatcherServlet类...
- 多年经验大佬用2000字透彻解析SpringMVC的常用注解及相关示例
-
SpringMVC注解SpringMVC框架提供了大量的注解,如请求注解、参数注解、响应注解及跨域注解等。这些注解提供了解决HTTP请求的方案。本节主要讲解SpringMVC的常用注解及相关示例...
- 知乎热议:如何成为前端架构师,赚百万年薪?
-
作者|慕课网精英讲师双越最近有一条知乎热议:从一个前端工程师,如何根据目标,制定计划,才能快速进阶成为前端架构师?不久之前我参与了一次直播,讲到了自己对于Web前端架构师的理解。架构师这个角色...
- 学习笔记-前端开发架构设计(前端架构设计方案)
-
前端开发的技术选项主要包含以下几点,下面对一些名词概念的解释做了笔记:1、分层架构:把功能相似,抽象级别相近的实现进行分层隔离优势:松散耦合(易维护,易复用,易扩展)常见分层方式:MVC,MVVM2、...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- Spring WebFlux vs. Spring MVC(springboot是什么)
- 深度解析微服务高并发:适配SpringMVC框架适配模块及实现原理
- Spring MVC 底层原理深度解析:从请求到响应的全链路拆解
- 改造总结之传统SpringMVC架构转换为SpringBoot再到集群
- SpringBoot3 整合 Spring MVC 全解析:开启高效 Web 开发之旅
- 一文读懂SpringMVC(一文读懂!残疾人低保边缘家庭能领的超实用福利政策)
- 69 个Spring mvc 全部注解:真实业务使用案例说明(必须收藏)
- Spring MVC工作原理:像拼积木一样构建Web应用
- 5千字的SpringMVC总结,我觉得你会需要
- SpringMVC工作原理与优化指南(springmvc工作原理和工作流程)
- 标签列表
-
- MVC框架 (46)
- spring框架 (46)
- 框架图 (58)
- bootstrap框架 (43)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- jpa框架 (47)
- laravel框架 (46)
- express框架 (43)
- springmvc框架 (49)
- scrapy框架 (52)
- beego框架 (42)
- java框架spring (43)
- grpc框架 (55)
- orm框架有哪些 (43)
- ppt框架 (48)
- 内联框架 (52)
- winform框架 (46)
- gui框架 (44)
- cad怎么画框架 (58)
- ps怎么画框架 (47)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)
- oracle提交事务 (47)