Camunda 7.x 系列【3】Camunda 简介

有道无术,术尚可求,有术无道,止于术。

本系列Spring Boot 版本 2.7.9

本系列Camunda 版本 7.19.0

源码地址:https://gitee.com/pearl-organization/camunda-study-demo

文章目录

    • 1. 概述
    • 2. 核心组件
      • 2.1 流程引擎
      • 2.2 模型
      • 2.3 Web应用
    • 3. 下载
    • 4. 许可协议
    • 5. 平台架构
      • 5.1 嵌入式流程引擎
      • 5.2 分布式的、容器管理的流程引擎
      • 5.3 独立运行的(远程)流程引擎服务
    • 6. 集群模式
    • 7. 多租户
    • 8. 网络应用程序架构
    • 9. 实现协议
      • 9.1 BPMN
      • 9.2 CMMN
      • 9.3 DMN
    • 10. 运行环境
      • 10.1 Java
      • 10.2 数据库
      • 10.3 Camunda Modeler
    • 11. 第三方依赖库
    • 12. 公共 API
    • 13. 遥测

1. 概述

Camunda是一种基于Java的框架,三大核心功能:

  • BPMN:工作流和过程自动化
  • CMMN:案例管理
  • DMN:业务决策管理

注: 本系列主要是讲解BPMNCMMNDMN后期会在扩展篇简单讲解。

2. 核心组件

Camunda平台核心组件:
在这里插入图片描述

2.1 流程引擎

流程引擎是最核心的集成组件,它由多个组件构成,是一个轻量级的Java库。负责执行BPMN 2.0流程、CMMN 1.1案例和CMMN 1.3决策。
在这里插入图片描述

简要说明:

  1. Java API:提供了很多Java 类和方法,直接通过对象和流程引擎进行交互
  2. Rest API:提供了很多REST接口,直接通过Http和流程引擎进行交互
  3. 核心引擎:轻量级BPMNCMMN CMMN执行引擎,
  4. 作业执行器:作业执行程序,负责处理异步的后台工作,如流程中的定时器或异步延续
  5. 持久层:负责将所有数据持久化到数据库中,使用的是MyBatis框架

2.2 模型

Model模型,通过建模工具对BPMNCMMN DMN进行建模。

Camunda建模工具:

  • Camunda Modeler:Camunda官方提供的BPMNCMMN DMN、表单建模器
  • bpmn.io:一个开源的建模JS框架,可集成到前端,实现自定义的建模器
  • IDEA插件:在IDEA中进行建模,但是问题较多,不推荐使用

建立模型后,可以通过流程引擎存储在数据库中。

2.3 Web应用

Camunda提供了Web应用,包含以下三大模块:

  • Cockpit:流程监控和操作,可以搜索流程实例,检查其状态并修复执行失败的实例
  • Admin:管理用户,组和授权
  • Tasklist:管理工作流和用户任务,允许流程参与者检查其工作流任务并导航到任务列表,然后进行处理

3. 下载

Camunda是一个灵活的框架,可以在不同的环境中使用,选择不同的运行方式。因为是基于Java开发,所以需要事先安装JDK环境。

Camunda为社区用户和企业用户提供不同的运行时下载:

  • 社区版下载地址
  • 企业版下载地址

当然也可以通过Spring BootDocker的方式运行Camunda平台。

Camunda也提供了整合包,可以快速安装和运行Camunda平台,不需要任何额外的设置或安装步骤,整合包包含:

  • 已配置好的分布式流程引擎
  • Web应用控制台:TasklistCockpitAdmin
  • Rest Api接口
  • 容器/应用服务器

此外还提供了建模工具Camunda Modeler,用于BPMN 2.0DMN 1.3建模,下载地址。

4. 许可协议

Camunda社区版的开源许可证主要是Apache2.0MIT,可以在源代码根目录中查看源文件。

Camunda企业版,除了社区版组件外,还包含受知识产权法保护的其他企业版组件,如果没有订阅购买获取授权,不得以任何形式或方式使用、复制、翻译、广播、修改、许可、传输、分发、展示、执行、发布企业组件或展示任何部分。禁止对企业组件进行逆向工程、反汇编或反编译。

5. 平台架构

5.1 嵌入式流程引擎

流程引擎被作为一个库添加到一个自定义的应用程序中,通过这种方式,流程引擎可以很容易地随着应用程序的生命周期而启动和停止,可以在共享数据库之上运行多个嵌入式流程引擎。

在这里插入图片描述

5.2 分布式的、容器管理的流程引擎

在这里插入图片描述
流程引擎在运行时容器(Servlet容器、应用服务器…)内启动。流程引擎作为容器服务提供,可以被部署在容器内的所有应用程序共享。这个概念就像JMS消息队列,它由运行时提供,可以被所有应用程序使用。流程部署和应用程序之间有一对一的映射:流程引擎跟踪应用程序部署的流程定义,并将执行委托给相对应的应用程序。

5.3 独立运行的(远程)流程引擎服务

在这里插入图片描述

独立的(远程)流程引擎服务器即流程引擎,作为网络服务提供。流程引擎作为容器服务提供的,可以被部署在容器内的所有应用程序共享。在网络上运行的不同应用程序可以通过一个远程通信与流程引擎进行交互。使流程引擎可以远程访问的最简单方法是使用内置的REST API。不同的通信渠道,如SOAP WebservicesJMS也是可以的,但需要由用户自行实现。

6. 集群模式

在这里插入图片描述
为了提供扩展或故障转移能力,流程引擎可以发布到集群中的不同节点。然后每个流程引擎实例必须连接到同一个共享数据库。

各个流程引擎实例不会跨事务维护会话状态。每当流程引擎运行一个事务时,就会将整个状态刷新到共享数据库中。这使得负载均衡成为可能,也就是将在相同流程实例中工作的后续请求路由到不同的集群节点上。这个模型非常简单易懂,并且在部署集群时施加的限制很有限。就流程引擎而言,用于扩展的设置和用于故障转移的设置之间没有区别(因为流程引擎在事务之间不会保持会话状态)。

7. 多租户

为了使一个 Camunda 引擎为多个独立方提供服务,流程引擎支持多租户。它支持以下两种多租户模式:

  • 使用不同的数据库模式或数据库进行表级数据分离
  • 使用租户标记进行行级数据分离

8. 网络应用程序架构

Camunda平台的网络应用程序是基于RESTful架构的。

使用的框架有:

  • JAX-RS
  • AngularJS
  • RequireJS
  • jQuery
  • Twitter Bootstrap

Camunda工程师开发以及其他自定义框架:

  • camunda-bpmn.js
  • ngDefine
  • angular-data-depend

9. 实现协议

Camunda在业务流程方面实现了三种不同的标准:BPMN 2.0CMMN 1.1DMN 1.3。 这三个标准是由Object Management Group在Camunda的积极合作下定义的。Camunda平台提供执行和建模工具的开源实现。

9.1 BPMN

Business Process Model and Notation (BPMN) 是一个工作流和流程自动化标准。

Camunda支持BPMN 2.0

  • 快速入门实现BPMN流程:Quick Start (Java / JS)
  • 快速了解BPMN建模语言:BPMN Modeling Tutorial
  • BPMN建模相关信息:BPMN Modeling Reference
  • BPMN建模工具:BPMN Modeler
  • 实现BPMN流程: BPMN Implementation Reference
  • 执行BPMN:Process Engine

9.2 CMMN

Case Management Model and Notation (CMMN) 是一个案例管理标准。

Camunda支持CMMN 1.1版本:

  • 快速入门实现CMMN
  • 实现CMMN案例:CMMN Implementation Reference
  • 执行CMMN: Process Engine

9.3 DMN

Decision Model and Notation (DMN) 是一个业务决策标准。

Camunda支持DMN 1.1 版本:

  • 快速入门实现DMN决策表: DMN Getting Started
  • 了解DMN: DMN Modeling Tutorial
  • 学习用于编辑DMN的工具: DMN Editor
  • 实现DMN决策::DMN Implementation Reference
  • 执行DMN: DMN Engine

10. 运行环境

可以在任何可运行Java的环境中运行Camunda平台。

10.1 Java

支持Java 8 / 11 / 17

10.2 数据库

  • 支持的数据库:
  • MySQL 8.0
  • MariaDB 10.6
  • Oracle 12c / 19c
  • IBM DB2 11.5
  • PostgreSQL 12 / 13 / 14 / 15
  • Amazon Aurora PostgreSQL compatible with PostgreSQL 12 / 13 / 14
  • Microsoft SQL Server 2017 / 2019
  • Microsoft Azure SQL with Camunda-supported SQL Server compatibility levels
    • SQL Server on Azure Virtual Machines
    • Azure SQL Managed Instance
    • Azure SQL Database
  • H2 2.1 (not recommended for Cluster Mode - see Deployment Note)
  • CockroachDB v20.1.3 (see Configuration guide for more details)

10.3 Camunda Modeler

Camunda Modeler支持以下平台:

  • Windows 7 / 10
  • Mac OS X 10.11
  • Ubuntu LTS

11. 第三方依赖库

可以在官方文档中查看Camunda第三方依赖项。
在这里插入图片描述

12. 公共 API

Camunda平台提供了一个公共API,包含两部分:

  • Java API
  • HTTP API (REST API)

Java API模块:

  • camunda-engine
  • camunda-engine-spring
  • camunda-engine-cdi
  • camunda-engine-dmn
  • camunda-bpmn-model
  • camunda-cmmn-model
  • camunda-dmn-model
  • camunda-spin-core
  • camunda-connect-core
  • camunda-commons-typed-values

REST API模块:

  • camunda-engine-rest

Camunda的版本管理方案遵循语义化版本模式:

大版本号.小版本号.补丁

Camunda将保持小版本号版本更新是向后兼容性的。例如:从版本7.1.x7.2.x 公共API是向后兼容的。

13. 遥测

遥测:是将对象参量的近距离测量值传输至远距离的测量站来实现远距离测量的技术。

Camunda致力于提供高水平、稳定的卓越用户体验,会收集环境和使用数据,这些见解有助于解典型的环境设置和产品使用模式,并将用于做出明智的产品改进决策。

进程引擎有一个名为Telemetry Reporter的专用线程,用于定期向Camunda报告遥测数据。默认情况下,此线程始终在运行,但仅在显式启用遥测时报告数据。

简要概述Camunda中有一个后台线程,会定期向Camunda官方地址发送检测数据…

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

金融反欺诈的应用实践

“根据980起全球重大金融欺诈事件分析,60%的欺诈发生在移动端,同比增长170%。“,在香港近日举办的金融科技沙龙上,顶象金融业务安全专家史博表示,金融业已成为不法分子重要的攻击对象。 本届金融科技沙龙由Databricks…

【Linux 网络】 数据链路层协议

数据链路层协议 数据链路层解决的问题以太网协议认识以太网以太网帧格式 认识MAC地址对比理解MAC地址和IP地址认识MTUMTU对IP协议的影响MTU对UDP协议的影响MTU对于TCP协议的影响ARP协议ARP协议的作用ARP协议的工作流程ARP数据报的格式 总结 数据链路层解决的问题 IP拥有将数据跨…

Springboot04--vue前端部分+element-ui

注意点: 这边v-model和value的区别:v-model是双向绑定的,value是单向绑定 li的key的问题 vue的组件化开发: 1. NPM(类似maven,是管理前段代码的工具) 安装完之后可以在cmd里面使用以下指令 2.…

智汇云舟入选IDC《中国智慧城市数字孪生技术评估,2023》报告

8月7日,国际数据公司(IDC)发布了《中国智慧城市数字孪生技术评估,2023》报告。智汇云舟凭借在数字孪生领域的创新技术与产品,入选《2023中国数字孪生城市技术提供商图谱》。 报告通过公开征集的形式进行申报&am…

大数据课程I2——Kafka的架构

文章作者邮箱:yugongshiyesina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 掌握Kafka的架构; ⚪ 掌握Kafka的Topic与Partition; 一、Kafka核心概念及操作 1. producer生产者,可以是一个测试线程,也…

80. 删除有序数组中的重复项 II

题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 解题思路:因为数组有序,相等的元素一定相邻,所以可以使用一个变量num统计相等元素的个数,如果当前元素和前一个元素相等&#xff0c…

Java解决四大查找(一)

Java解决四大查找 一.线性查找1.1 题目1.2 思路分析1.3 代码演示 二.二分查找(双指针法)2.1 题目2.2 思路分析(图解加文字)2.3 代码演示 一.线性查找 1.1 题目 在数组{1,8,1024,521,1889}中查找数字8,如果有&#xff…

31 | 独角兽企业数据分析

独角兽企业:是投资行业尤其是风险投资业的术语,一般指成立时间不超过10年、估值超过10亿美元的未上市创业公司。 项目目的: 1.通过对独角兽企业进行全面地分析(地域,投资方,年份,行业等),便于做商业上的战略决策 项目数据源介绍 1.数据源:本项目采用的数据源是近…

智能质检技术的核心环节:语音识别和自然语言处理

随着呼叫中心行业的快速发展和客户服务需求的不断提高,越来越多的企业开始采用智能质检技术,以提高呼叫中心的质量和效率。而在智能质检技术中,语音识别和自然语言处理是其核心环节,对于提高质检的准确性和效率具有重要作用。 语音…

uniapp使用阿里矢量库

然后解压复制全部到你的项目文件 最后只要这几个 然后引入 最后在你需要的页面使用

使用罗技鼠标后 弹出当前页面的脚本发生错误AppData/Local/Temp/LogiUI/Pak/js/jquery-1.3.2.min.js解决

使用的台式机,没有蓝牙驱动,在用logi无线鼠标时,把鼠标连接插入台式机后弹出的如上图所示这个提示,无论是点是/否,还是X掉上图提示,电脑右下角的图依然存在。不习惯这丫的存在。 我重启还是有,然…

MATLAB图论合集(一)基本操作基础

本帖总结一些经典的图论问题,通过MATLAB如何计算答案。近期在复习考研,以此来巩固一下相关知识——虽然考研肯定不能用MATLAB代码哈哈,不过在实际应用中解决问题还是很不错的,比C易上手得多~ 图论中的图(Graph&#xf…

docker中的jenkins之流水线构建

docker中的jenkins之流水线构建项目 1、用node这种方式(因为我用pipeline方式一直不执行,不知道为什么) 2、创建项目 创建两个参数,一个是宿主端口号,一个是docker中的端口号 3、使用git项目中的Jenkinsfile 4、编写…

Kafka:安装和配置

producer:发布消息的对象,称为消息产生者 (Kafka topic producer) topic:Kafka将消息分门别类,每一个消息称为一个主题(topic) consumer:订阅消息并处理发布消息的对象…

鸿鹄工程项目管理系统em Spring Cloud+Spring Boot+前后端分离构建工程项目管理系统 em

​ Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下: 首页 工作台:待办工作、消息通知、预警信息,点击可进入相应的列表 项目进度图表:选择(总体或单个)项目…

ShardingSphere简单介绍

此文章为笔记,为阅读其他文章的感受、补充、记录、练习、汇总,非原创,感谢每个知识分享者。 文章目录 第01章 高性能架构模式1、读写分离架构2、数据库分片架构2.1、垂直分片2.2、水平分片 3、读写分离和数据分片架构4、实现方式4.1、程序代…

【果树农药喷洒机器人】Part6:基于深度相机与分割掩膜的果树冠层体积探测方法

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍…

计算机竞赛 GRU的 电影评论情感分析 - python 深度学习 情感分类

1 前言 🔥学长分享优质竞赛项目,今天要分享的是 🚩 GRU的 电影评论情感分析 - python 深度学习 情感分类 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分工作量:3分创新点:4分 这…

C++ STL vector 模拟实现

✅<1>主页&#xff1a;我的代码爱吃辣 &#x1f4c3;<2>知识讲解&#xff1a;C之STL &#x1f525;<3>创作者&#xff1a;我的代码爱吃辣 ☂️<4>开发环境&#xff1a;Visual Studio 2022 &#x1f4ac;<5>前言&#xff1a;上次我们已经数字会用…

Leetcode34 在排序数组中查找元素的第一个和最后一个位置

给你一个按照非递减顺序排列的整数数组 nums&#xff0c;和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target&#xff0c;返回 [-1, -1]。 你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。 代码&#xff1a; c…