camunda7流程平台技术架构概述

Camunda Platform 是一个基于 Java 的BPMN(流程引擎)、DMN(规则引擎)、CMMN(案例管理)的开源框架。主要组件是用 Java 编写的,主要专注于为 Java 开发人员提供在 JVM 上设计、实现和运行业务流程和工作流所需的工具(开源流程引擎、规则引擎等)。尽管如此,我们也希望将流程引擎技术提供给非 Java 开发人员。这就是为什么Camunda Platform还提供REST API,允许您构建连接到远程流程引擎的应用程序。Camunda7和Camunda8在架构上有重大差异,关于Camunda8的架构,以及Camunda7和Camunda8对比差别,请参考:https://lowcode.blog.csdn.net/article/details/129764438

文本重点介绍Camunda7版本的架构。

Camunda Platform 既可以用作独立的流程引擎服务器,也可以嵌入到自定义 Java 应用程序中。可嵌入性要求是Camunda Platform中许多架构决策的核心。例如,我们使流程引擎组件成为轻量级组件,尽可能少地依赖第三方库。此外,可嵌入性激发了编程模型的选择,例如流程引擎参与 Spring Managed 或 JTA 事务的能力以及线程模型

1、流程引擎架构

  • Process Engine Public API:面向服务的 API,允许 Java 应用程序与 Process Engine 进行交互。流程引擎的不同职责(即流程存储库、运行时流程交互、任务管理等)被分离到各个服务中。公共 API 具有命令式访问模式:进入进程引擎的线程通过命令拦截器进行路由,该拦截器用于设置线程上下文,例如事务。
  • BPMN 2.0 核心引擎:这是流程引擎的核心。它具有用于图形结构的轻量级执行引擎(PVM - Process Virtual Machine)、一个将 BPMN 2.0 XML 文件转换为 Java 对象的 BPMN 2.0 解析器以及一组 BPMN 行为实现(为 BPMN 2.0 结构(如网关或服务任务)提供实现)。
  • 作业执行器:作业执行器负责处理进程中的异步后台工作,例如计时或异步延续。
  • 持久层:进程引擎具有一个持久层,负责将进程实例状态持久化到关系数据库。我们使用 MyBatis 映射引擎进行对象关系映射,支持常见的数据库有mysql、oracle、db2、pg等,国产化信创数据库需要自己扩展实现,具体参考:https://lowcode.blog.csdn.net/article/details/109052520。

2、Camunda 平台架构

Camunda Platform是一个灵活的框架,可以部署在不同的场景中。本部分概述了最常见的部署方案。

2.1、嵌入式流程引擎

在这种情况程引擎将作为应用程序库添加到自定义应用程序中,前提条件是你的应用程序和camunda技术栈要一致。这样,流程引擎就可以在应用程序生命周期中轻松启动和停止。比如:OA办公自动化项目中的工作流引擎,ERP项目的流程引擎。

2.2、共享的、容器管理的流程引擎

在这种情况下,进程引擎在运行时容器(Servlet 容器、Application Server 等)内启动。流程引擎作为容器服务提供,可以由容器内部署的所有应用程序共享。这个概念可以比作 JMS 消息队列,它由运行时提供,可以被所有应用程序使用。流程部署和应用程序之间存在一对一的映射:流程引擎跟踪应用程序部署的流程定义,并将执行委托给相关应用程序。在当前微服务云原生技术背景下,这种部署架构不推荐使用。

2.3、独立(远程)流程引擎服务器

在这种情况程引擎作为网络服务提供。在网络上运行的不同应用程序可以通过远程通信通道与流程引擎进行交互。使流程引擎可远程访问的最简单方法是使用内置的 REST API。不同的通信通道(如SOAP Web服务或JMS)是可能的,但需要由用户实现。这种部署架构可以理解为微服务架构,camunda流程引擎独立部署为一个服务,应用程序通过rest服务调用流程引擎。

3、集群部署架构

为了提供纵向扩展或故障转移功能,可以将流程引擎分发到集群中的不同节点。然后,每个进程引擎实例都必须连接到共享数据库。

单个流程引擎实例不会跨事务维护会话状态。每当流程引擎运行事务时,完整状态都会刷新到共享数据库。这样就可以将在同一流程实例中工作的后续请求路由到不同的集群节点。此模型非常简单易懂,在部署群集安装时施加了有限的限制。就流程引擎而言,纵向扩展的设置和故障转移的设置之间没有区别(因为流程引擎在事务之间不保留会话状态)。

3.1、群集环境中的会话状态

Camunda Platform 不提供开箱即用的负载平衡功能或会话复制功能。负载平衡功能需要由第三方系统提供(比如:nginx),会话复制需要由主机应用程序服务器提供。

在群集设置中,如果用户要登录 Web 应用程序,则需要采取额外的步骤来确保不会要求用户多次登录。存在两种选择:

  1. 可以在负载平衡解决方案中配置和启用“粘性会话”。这将确保来自给定用户的所有请求在可配置的时间段内定向到同一实例。
  2. 可以在应用程序服务器中启用会话共享,以便应用程序服务器实例共享会话状态。这将允许用户连接到集群中的多个实例,而无需多次登录。

如果上述方法均未在群集设置中实现,则与多个节点的连接将导致多个登录请求。

3.2、群集环境中的作业执行程序

进程引擎作业执行器也是群集的,并在每个节点上运行。这样,就流程引擎而言,没有单点故障。作业执行程序可以在同类集群和异构集群中运行。

3.3、时区的设置

以下是对群集中时区使用的一些限制。

https://docs.camunda.org/manual/7.19/user-guide/process-engine/time-zones/#cluster-setup

4、多租户模型

为了通过一个 Camunda 安装为多个独立方提供服务,流程引擎支持多租户。支持以下多租户模型:

多租户户方案一:使用不同的数据库架构或数据库进行表级数据分离。每个租户使用独立的数据库用户或者实例或者表空间,这样性能是最好的,也容易扩展维护。

 

多租户方案二:使用租户标记进行行级数据分隔。该方式可能存在数据量大导致出现性能问题,需要结合分库分表方案解决。

 

用户应选择适合其数据分离需求的模型。Camunda 的 API 提供对特定于每个租户的流程和相关数据的访问。更多详细信息可以在多租户部分找到。

Multi-Tenancy | docs.camunda.org

5、Web 应用程序架构

Camunda Platform Web 应用程序基于 RESTful 架构。

使用的框架:

  1. 基于 JAX-RS 的 Rest API
  2. AngularJS
  3. RequireJS
  4. jQuery
  5. Twitter Bootstrap

Camunda 其他自定义开发框架:

  1. camunda-bpmn.js:Camunda BPMN 2.0 JavaScript 库
  2. ngDefine:将 AngularJS 集成到 RequireJS 支持的应用程序中
  3. angular-data-depend:用于实现复杂、数据密集型 AngularJS 应用程序的工具包

Camunda 提供了一套基于AngularJS开发的前端UI界面,但开源版本的功能有限,而且也不适合中国人操作系统,这部分需要项目中自己扩展开发实现。

这就是camunda自带的待办任务处理界面:

我们可以用vue开发自己的用户界面:

更多功能体验请访问:http://www.yunchengxc.com

6、RPA架构

机器人流程自动化 (RPA) 编排是一个利用多个 Camunda 产品模块功能的用例。它允许使用 RPA 技术和(无人值守)机器人自动编排任务。目前,Camunda Platform 积极支持 UiPath 和 Automation Anywhere,但未来版本将支持更多 RPA 供应商。

Camunda Automation Platform 7.19 是保持与 Camunda RPA bridge接器兼容性的最后一个版本。Camunda 自动化平台 7.19 和 Camunda RPA 桥将再维护 18 个月,到 2024 年 10 月以后,Camunda 停止维护 Camunda RPA bridge组件。Camunda RPA Bridge 在 Camunda 8 中被 RPA 开箱即用的连接器所取代。

RPA 仅限企业版,RPA 编排需要有效的企业许可证。您可以获取企业试用许可证,用于在本地测试 RPA Bridge 和 Cawemo。

https://docs.camunda.org/get-started/archive/rpa/

7、实现的标准规范

Camunda 在业务流程管理范围内实现了三个不同的标准:BPMN 2.0、CMMN 1.1 和 DMN 1.3。 这三个标准由对象管理小组Object Management Group 在Camunda的积极合作下定义。

BPMN:业务流程模型和表示法 (BPMN) 是工作流和流程自动化的标准。 Camunda 支持 BPMN 的 2.0 版本。

BPMN 2.0 Implementation Reference | docs.camunda.org

CMMN:案例管理模型和符号 (CMMN) 是案例管理的标准。 Camunda 支持 CMMN 的 1.1 版本。

CMMN 1.1 Implementation Reference | docs.camunda.org

DMN:决策模型和表示法 (DMN) 是业务决策管理的标准。 Camunda 支持 DMN 的 1.1 版本。

DMN 1.3 Reference | docs.camunda.org

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2809719.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【AIGC大模型】跑通wonder3D (windows)

论文链接:https://arxiv.org/pdf/2310.15008.pdf windows10系统 显卡:NVIDIA rtx 2060 一、安装anaconda 二、安装CUDA 11.7 (CUDA Toolkit 11.7 Downloads | NVIDIA Developer) 和 cudnn 8.9.7(cuDNN Archive | NVIDIA Developer)库 CUDA选择自定…

接口自动化测试用例如何设计

说到自动化测试,或者说接口自动化测试,多数人的第一反应是该用什么工具,比如:Python Requests、Java HttpClient、Apifox、MeterSphere、自研的自动化平台等。大家似乎更关注的是哪个工具更优秀,甚至出现“ 做平台的 &…

前后端分离Vue+node.js在线学习考试系统gqw7o

与其它应用程序相比,在线学习平台的设计主要面向于学校,旨在为管理员和学生、教师、院系提供一个在线学习平台。学生、教师、院系可以通过系统及时查看公告信息等。 在线学习平台是在Windows操作系统下的应用平台。为防止出现兼容性及稳定性问题&#xf…

多输入时序预测|WOA-CNN|鲸鱼算法优化的卷积神经网络时序预测(Matlab)

目录 一、程序及算法内容介绍: 基本内容: 亮点与优势: 二、实际运行效果: 三、部分程序: 四、完整程序数据下载: 一、程序及算法内容介绍: 基本内容: 本代码基于Matalb平台编译&…

无人集群试验评估现状及技术方法综述

源自:系统工程与电子技术 作者:赵蕊蕊, 于海跃, 游雅倩, 张涛, 陶敏, 姜江 “人工智能技术与咨询” 发布 摘 要 试验评估是促进装备系统作战能力生成和实战化应用的重要手段。无人集群依靠自组网实现复杂交互, 具备典型的智能性和涌现性, 开展无人集…

【大数据】Flink SQL 语法篇(四):Group 聚合

Flink SQL 语法篇(四):Group 聚合 1.基础概念2.窗口聚合和 Group 聚合3.SQL 语义4.Group 聚合支持 Grouping sets、Rollup、Cube 1.基础概念 Group 聚合定义(支持 Batch / Streaming 任务):Flink 也支持 G…

复制策略深入探讨

在之前的博客中,我们讨论了复制最佳实践和不同类型的复制,例如批量、站点和存储桶。但是,随着所有这些不同类型的复制类型的出现,人们不得不想知道在哪里使用哪种复制策略?从现有 S3 兼容数据存储迁移数据时&#xff0…

SV-6301 IP网络可视对讲报警柱简介

SV-6301 IP网络可视对讲报警柱简介 18123651365微信 功能特点: 1.全金属外壳,户外防风雨,坚固耐用,易于识别 2.单键呼叫,可通过软件指定呼叫目标,双向可视对讲广播喊话 3.终端内置扬声器和话筒眯头&…

GZ036 区块链技术应用赛项赛题第10套

2023年全国职业院校技能大赛 高职组 “区块链技术应用” 赛项赛卷(10卷) 任 务 书 参赛队编号: 背景描述 养老保险是对于老年人的最基本的生活保障。各种数据显示,当前的养老金市场规模庞大。2016年美国的养老金资…

SpringCloud-Docker原理解析

Spring Cloud和Docker的结合为微服务架构的部署和管理提供了强大的支持。本文深入剖析Spring Cloud与Docker的集成原理,从服务注册与发现、配置管理、负载均衡到容器化部署等方面展开详细解析。探讨Spring Cloud如何利用Docker容器技术实现服务的弹性伸缩&#xff0…

Linux系统中前后端分离项目部署指南

目录 一.nginx安装以及字启动 解压nginx 一键安装4个依赖 安装nginx 启动 nginx 服务 开放端口号 并且在外部访问 设置nginx自启动 二.配置负载均衡 1.配置一个tomact 修改端口号 8081端口号 2.配置负载均衡 ​编辑 三.部署前后端分离项目 1.项目部署后端 ​编辑…

SpringBoot3——核心特性——快速入门(三)

4、核心技能 4.1、常用注解 SpringBoot摒弃XML配置方式,改为全注解驱动 4.1.1、组件注册 Configuration、SpringBootConfiguration Bean、Scope Controller、 Service、Repository、Component Import ComponentScan 步骤: 1、Configuration 编写一个配置…

MFC由初值终值步长生成数值序列

matlab的冒号运算符可以生成数值序列; 下面来生成自己的数值序列; vc6新建一个对话框工程; 放几个控件;添加成员变量如下; void CMycolonDlg::OnButton1() {// TODO: Add your control notification handler code hereUpdateData(TRUE);double d1, d2;CString str1, …

Linux基础命令—进程管理

基础知识 linux进程管理 什么是进程 开发写代码->代码运行起来->进程 运行起来的程序叫做进程程序与进程区别 1.程序是一个静态的概念,主要是指令集和数据的结合,可以长期存放在操作系统中 2.进程是一个动态的概念,主要是程序的运行状态,进程存在生命周期,生命周期结…

YOLO算法改进Backbone系列之:EfficientViT

EfficientViT: Memory Effificient Vision Transformer with Cascaded Group Attention 摘要:视觉transformer由于其高模型能力而取得了巨大的成功。然而,它们卓越的性能伴随着沉重的计算成本,这使得它们不适合实时应用。在这篇论文中&#x…

ChatGPT/GPT4科研应用与AI绘图及论文高效写作

原文:ChatGPT/GPT4科研应用与AI绘图及论文高效写作 第一:2024年AI领域最新技术 1.OpenAI新模型-GPT-5 2.谷歌新模型-Gemini Ultra 3.Meta新模型-LLama3 4.科大讯飞-星火认知 5.百度-文心一言 6.MoonshotAI-Kimi 7.智谱AI-GLM-4 第二:…

【CT成像】VGSTUDIO MAX最小系统要求检查缺少支持OpenGL3.3的解决办法

【CT成像】VGSTUDIO MAX最小系统要求检查缺少支持OpenGL3.3的解决办法 1.背景2.分析3.解决办法4.资源 1.背景 我把自己的台式机电脑进行了VMware ESXi 虚拟化。 在vmware ESXi系统中安装了windows系统, 并在windows系统中安装了VGSTUDIO MAX软件。 在运行VGSTUDIO…

matlab一维二维和三维RBF插值方法

1、内容简介 略 50-可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 matlab一维二维和三维RBF插值方法_哔哩哔哩_bilibili 4、参考论文 略

电商赠品数据可以监测吗

很多店铺为了引流,会在标题、图片上标明促销活动,常见的有赠品描述,由于现在监测价格技术的壁垒,其实很多时候,主图上的赠品信息因其描述方式、字体等的不同,会导致监测不出来的情况出现,这也给…

代码签名常见问题解答!!!

1、什么是代码签名证书? 代码签名证书(Code Signing Certificate)是受信任的证书颁发机构颁发给软件开发者,对其开发的可执行脚本、软件代码和内容进行数字签名的数字证书。代码签名证书用于验证开发者身份真实性、保护代码的完整…