首页 > 其他分享 >camunda开源工作流平台技术架构

camunda开源工作流平台技术架构

时间:2024-07-06 14:52:26浏览次数:26  
标签:架构 流程 应用程序 RPA 开源 引擎 camunda Camunda

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、流程引擎架构

01-流程引擎架构(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、嵌入式流程引擎

02-嵌入式架构(1)

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

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

03-共享架构(1)

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

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

04-分布式架构(1)

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

3、集群部署架构

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

05-集群部署架构(1)

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

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 安装为多个独立方提供服务,流程引擎支持多租户。支持以下多租户模型:

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

06-多租户架构1(1)

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

07-多租户架构2(1)

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

https://docs.camunda.org/manual/7.19/user-guide/process-engine/multi-tenancy/

5、Web 应用程序架构

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

使用的框架:

  • 基于 JAX-RS 的 Rest API
  • AngularJS
  • RequireJS
  • jQuery
  • Twitter Bootstrap

Camunda 其他自定义开发框架:

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

 

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

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

08-待办任务处理界面

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

09-vue开发的界面

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

6、RPA架构

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

10-rpa架构(1)

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 版本。

https://docs.camunda.org/manual/7.20/reference/bpmn20/

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

https://docs.camunda.org/manual/7.20/reference/cmmn11/

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

https://docs.camunda.org/manual/7.20/reference/dmn/

 

标签:架构,流程,应用程序,RPA,开源,引擎,camunda,Camunda
From: https://www.cnblogs.com/hibpm/p/18287245

相关文章

  • SpringBoot如何集成和使用开源工作流引擎camunda
    使用camunda开源工作流引擎有:通过docker运行、使用springboot集成、部署camunda发行包、基于源代码编译运行等多种方式。其中,通过源代码编译运行的方式最为复杂,具体参考:https://lowcode.blog.csdn.net/article/details/136206057文本重点介绍如何在SpringBoot应用程序中如何集......
  • 调度系统揭秘(下):调度算法与架构设计
    一、调度算法在调度系统中,调度算法常见是以下两种:广度优先深度优先1.1、广度优先:广度优先搜索算法按照任务之间的依赖关系进行逐级遍历,先执行所有直接前置任务,再执行所有直接后继任务,以此类推,直到所有的任务都被遍历和执行完成。其特点如下:执行顺序合理:广度优先搜索保......
  • [图解]企业应用架构模式2024新译本讲解19-数据映射器1
    100:00:01,720-->00:00:03,950下一个我们要讲的就是200:00:04,660-->00:00:07,420数据映射器这个模式300:00:09,760-->00:00:13,420这个也是在数据源模式里面400:00:13,430-->00:00:14,820用得最广泛的500:00:16,250-->00:00:19,170大多数都是用600:......
  • 站在架构师角度:深入剖析Spring事务管理底层原理
    摘要Spring框架的事务管理是企业级应用开发中的一个核心特性,它为不同的事务使用场景提供了统一的抽象和实现。本文从架构师的角度出发,深入探讨Spring事务管理的底层原理,包括其设计哲学、核心组件、以及事务传播行为等。1.事务管理概述事务是数据库操作中的一个基本概念,它保......
  • 系统架构设计师——计算机体系结构
    分值占比3-4分计算机硬件组成计算机硬件组成主要包括主机、存储器和输入/输出设备。主机:主机是计算机的核心部分,包括运算器、控制器、主存等组件。运算器负责执行算术和逻辑运算;控制器负责协调和控制计算机的各个部件;主存(内存)用于存储正在运行的程序和数据。存储器:存......
  • Java项目:基于SSM框架实现的中小企业人力资源管理系统【ssm+B/S架构+源码+数据库+开题
    一、项目简介本项目是一套基于SSM框架实现的中小企业人力资源管理系统包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。项目都经过严格调试,eclipse或者idea确保可以运行!该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值......
  • 企业升级利器:如何选择契合的大模型架构
    在现代企业中,大模型业务的应用越来越广泛,主要体现在AIEmbedded模式、AICopilot模式和AIAgent模式这三种架构。本文将详细探讨这三种模式,分析它们的特点和适用场景,并对如何选择合适的大模型业务架构提出建议。一、AIEmbedded模式1.概念与特点AIEmbedded模式指的是......
  • Eureka服务实例的健康检查机制:确保微服务架构的稳定性
    引言在微服务架构中,服务实例的健康状态对于整个系统的稳定性至关重要。Eureka作为Netflix开源的服务发现框架,提供了一套机制来对服务实例进行健康检查。本文将详细探讨Eureka中的服务实例健康检查机制,包括其工作原理、实现方式以及如何配置。Eureka服务健康检查的基本概念......
  • aippt 实现原理 & AI生成PPT开源项目
    通过AI生成PPT火了好长一段时间了,该类型产品也越来越多,我分析了几个主流的aippt产品,其中有一家公司的技术原理让我眼前一亮:文多多AI生成PPT,官网: https://docmee.cn该产品在github上有对应开源项目:https://github.com/veasion/aippt还提供了在线体验页面: ......
  • 微服务架构是什么?他有什么优缺点。其实的安全问题如何解决?
    微服务是指把一个应用程序划分多个独立的服务单元。服务单元之间使用轻量级的通信机制进行通信。优点:1,技术栈比较灵活,2.易于维护和升级3,易于扩展;针对需要的服务单元进行扩展而不必对整个程序进行重构缺点:1,部署难度大,运维复杂2.安全性问题,服务单元通信可能导致数据的泄露......