camunda7流程平台技术架构概述

news2025/1/12 3:54:47

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://www.coloradmin.cn/o/1471367.html

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

相关文章

【TCP/IP】内核网络堆栈

在Linux内核中,网络堆栈(network stack)是一套实现网络通信功能的软件包,负责处理数据包的发送和接收。网络堆栈按照OSI模型(开放式系统互联通信参考模型)或TCP/IP模型的层次结构来组织,实现了从…

Linux-部署各类软件(黑马学习笔记)

MYSQL MYSQL5.7版本在CentOS系统安装 注意:安装操作需要root权限 MySQL的安装我们可以通过前面学习的yum命令进行。 安装 1.配置yum仓库 # 更新密钥 rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022# 安装Mysql yum库 rpm -Uvh http://repo.mysql.…

端口映射的软件有哪些?

端口映射软件是一种实用工具,能够帮助用户在网络中实现远程通信,解决不同地区电脑与电脑、设备与设备、电脑与设备之间的信息传输问题。其中,【天联】组网天联是一款功能强大的端口映射软件,它通过在全国各主要节点部署加速服务器…

介绍 Gradio 与 Hugging Face

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 我们可以使用 Gradio 库为我们的模型构建演示。Gradio 允许您完全使用 Python 为任何机器学习模型构建、自定义和共享基于 Web 的演示。使机器学习模型变得可交互和易于使用。 为什么首先要为您的机器…

贪心算法(算法竞赛、蓝桥杯)--奶牛耍杂技

1、B站视频链接&#xff1a;A24 贪心算法 P1842 [USACO05NOV] 奶牛玩杂技_哔哩哔哩_bilibili 题目链接&#xff1a;[USACO05NOV] 奶牛玩杂技 - 洛谷 #include <bits/stdc.h> using namespace std; const int N50005; struct node{int w,s;bool operator<(node &…

外贸精英催单秘籍:突破观望犹豫,抓住订单黄金时机!

年底将至&#xff0c;对于外贸人来说&#xff0c;这是一个重要的订单冲刺时机。在这个关键时刻&#xff0c;如何向国外客户催单成为一项关键任务。本文将分享催单的技巧&#xff0c;并附带销冠年底工作安排计划。同时&#xff0c;我们将引入Focussend&#xff0c;一款具有邮件自…

Linux软件高级编程-进程基本概念--day6

1.进程&#xff1a; 程序&#xff1a; 存放在外存的一段数据组成的文件 进程&#xff1a; 是一个程序动态执行的过程&#xff0c;包括进程的创建、进程的调度、进程的消亡 2.进程相关命令&#xff1a; 1&#xff09;top&#xff1a; 动态查看当前系统中所有进程信息&#xff08…

Jmeter系列(1)Mac下载安装启动

目录 Jmeter下载安装启动下载启动 Jmeter下载安装启动 注意⚠️&#xff1a;使用jmeter需要有java环境 下载 官网下载地址&#xff1a;https://jmeter.apache.org/ 会看到这里有两个版本&#xff0c;那么有什么区别么&#xff1f; Binaries是可执行版&#xff0c;直接下载解…

Redis哨兵模式和Redis Cluster模式

文章目录 &#x1f50a;博主介绍&#x1f964;本文内容Redis Cluster 模式支持自动故障转移功能吗&#xff1f;Redis Cluster 模式支持自动故障转移功能和哨兵有什么区别&#xff1f;Redis Cluster 模式和哨兵模式&#xff08;Sentinel&#xff09;在自动故障转移方面有一些关键…

Niginx介绍和安装使用

Nginx是什么&#xff1f; Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器&#xff0c;同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔赛索耶夫为俄罗斯访问量第二的Rambler.ru站点&#xff08;俄文&#xff1a;Рамблер&#xff09;开发的&#xff0c;第一…

什么是Elasticsearch SQL

什么是Elasticsearch SQL 一. 介绍二. SQL 入门 前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;神的孩子都在歌唱 一. 介绍 Elasticsearch SQL 是一个 X-Pack 组件&#xff0c;允许针对 Elasticsea…

linux系统---防火墙拓展

目录 一、iptables 1.基本语法 2.四表五链——重点记忆 2.1四表 2.2五链 2.3总结 3.iptables选项示例 3.1 -Z 清空流量计数 3.2 -P 修改默认规则 3.3 -D 删除规则 3.4 -R 指定编号替换规则 4.白名单 5.通用匹配 6.示例 6.1添加回环网卡 6.2可以访问端口 6.3 主…

matlab|计及源荷不确定性的综合能源生产单元运行调度与容量配置随机优化模型

目录 1 主要内容 1.1 风光场景聚类 1.2 主模型程序结果 1.3 随机模型和确定性模型对比 1.4 有无储气对比 1.5 煤价灵敏性分析 1.6 甲烷价格灵敏性分析 2 部分程序 3 下载链接 1 主要内容 本程序复现《计及源荷不确定性的综合能源生产单元运行调度与容量配置两阶段随机…

Bert基础(四)--解码器(上)

1 理解解码器 假设我们想把英语句子I am good&#xff08;原句&#xff09;翻译成法语句子Je vais bien&#xff08;目标句&#xff09;。首先&#xff0c;将原句I am good送入编码器&#xff0c;使编码器学习原句&#xff0c;并计算特征值。在前文中&#xff0c;我们学习了编…

Spring Boo项目中方法参数对象中字段上存在的自定义注解如何进行拦截解析

一、前言 在Spring Boot项目开发过程中&#xff0c;我们经常会使用到自定义注解的方式进行业务逻辑开发&#xff0c;此时注解我们一般是放在方法或者类上面&#xff0c;通过AOP切面拦截的方式进行自定义业务逻辑填充。但是如果自定义注解放在类的字段上&#xff0c;此时应该如…

Power Apps-组件使用全局变量

组件并不可以直接使用全局变量&#xff0c;若想使用全局变量可以使用如下方法&#xff1a; 首先点击整个组件&#xff0c;在右侧边栏中找到自定义属性&#xff0c;点击添加新的自定义属性 填写相关信息&#xff0c;显示名称和名称填写全局变量名称&#xff0c;说明随意编辑 再…

MATLAB环境下基于距离正则化水平集演化方法的图像分割

水平集图像分割方法实际上是基于曲线演化理论的一种数学方法在图像上的表示&#xff0c;能够处理曲线的拓扑结构变化&#xff0c;而且其数值实现的稳定性高,医学超声图像由于其成像原理一般会具有较高的斑点噪声并且一些区域存在对比度低的情况。传统的图像分割算法并不能在医学…

租赁小程序|租赁系统|租赁软件开发带来高效运营

随着社会的不断发展和科技的不断进步&#xff0c;越来越多的企业开始关注设备租赁业务。设备租赁作为一种短期使用设备的方式&#xff0c;为企业提供了灵活和成本节约的优势。针对设备租赁业务的管理和提升企业竞争力的需求&#xff0c;很多企业选择定制开发设备租赁系统。本文…

【每日一题】938. 二叉搜索树的范围和-2024.2.26

题目&#xff1a; 938. 二叉搜索树的范围和 给定二叉搜索树的根结点 root&#xff0c;返回值位于范围 [low, high] 之间的所有结点的值的和。 示例 1&#xff1a; 输入&#xff1a;root [10,5,15,3,7,null,18], low 7, high 15 输出&#xff1a;32示例 2&#xff1a; 输入…

ESP32(VSCode+PlatformIO)开发环境搭建教程(2024版)

目录 一、安装vscode&#xff1a;[点击下载](https://code.visualstudio.com/Download)二、安装Python环境三、安装VSCode platformio插件四、使用PlatformIO创建项目五、编译下载 一、安装vscode&#xff1a;点击下载 二、安装Python环境 本文以Win11系统做演示&#xff0c;其…