Camunda入门(一) - 选型及核心概念
目录
- 1. 关于BPM选型 - 推荐Camunda
- 2. Camunda核心概念
- Process Definition
- Process Deployment
- Process Engine
- Process Application
- Process Variables
- Process、Process Instance、Task
- 3. Camunda核心架构
- Process Engine
- Camunda Platform
- 集群模型
1. 关于BPM选型 - 推荐Camunda
如下图列举了常用的BPM引擎的演进,可以看出BPM引擎的皆起源于jBPM4,
后续分化出Activity5,然后由Activity5分化出Camunda7,由Activity6分化出Flowable6。
关于BPM引擎的具体选型及对比可参见:osworkflow、jbpm、activiti、flowable、camunda开源流程引擎哪个好? - 2021年5月,
现阶段综合考虑主流技术框架、功能性、稳定性、性能、社区活跃度等,优先选择 Camunda7:
- Java语言编写、支持SpringBoot集成、采用MyBatis ORM(便于与现有应用架构集成)
- 支持RMDB持久化(H2、Mysql、MariaDB、Oracle、SqlServer…)
- 支持BPMN 2.0、CMMN 1.1、DMN 1.3
- 核心组件包括:
- Process Engine - 流程引擎,集成到应用中的Java包,用于执行BPMN、CMMN、DMN
- Web Applicatons - web管理平台(支持独立启动(linux、windows)和集成到SpringBoot启动,支持集群部署(SharedDB、需自定义LB及SessionState))
- REST API - 提供process engine相关处理接口
- Cockpit - 管理流程process及流程实例process instances
- Tasklist - 管理流程process中的具体任务task(导航到具体task、提供表单form输入、修复流程实例等)
- Admin - 管理用户users、组织group、授权authorizations
- Modeler - 独立安装的建模器(windows、linux、mac),支持BPMN 2.0、CMMN 1.1、DMN 1.3建模,具体实现集成开源框架https://bpmn.io/。
注:
Camunda 提供社区版(开源免费)、企业版、Cloud版(Saas版),
关于社区版和企业版功能对比参见:https://camunda.com/enterprise/,
本文关于Camunda的介绍皆是基于社区版7.16版。
2. Camunda核心概念
Process Definition
Process Definition(流程定义)
即通过Camunda Modeler工具建模BPMN(流程)、DMN(决策)、Form(表单)等,
可以将设计好的流程等保存成对应格式*.bpmn、*.dmn, 、*form文件,
最后需将流程文件部署到对应的工作流平台。
Process Deployment
Process Deployment(流程部署)
即将之前流程定义的成果物(.bpmn、.dmn, 、*form)部署到工作流平台,
即将流程定义持久化到工作流平台后端的的RMDB中。
后续Process Engine即可到RMDB中读取并解析处理相应的流程。
Process Engine
Process Engine(流程引擎)
即Camunda提供的一个Jar包,
用于集成到Process Application(下文会介绍)中,
可以理解为Process Engine为一系列与流程处理相关的Service集合,
用于解析BPMN、CMMN、DMN并执行相关流程,
且Process Engine需要连接指定的流程持久化RMDB。
Process Engine封装了流程处理相关的service、dao、db相关实现,
使用Process Engine统一了流程处理的相关操作,
也可避免开发者再重复定义这些操作。
Process Engine对应到SpringBoot具体maven依赖如下:
功能模块 |
SpringBoot maven坐标 注:group均为org.camunda.bpm.springboot |
---|---|
⭐️ProcessEngine 流程引擎 |
camunda-bpm-spring-boot-starter |
REST API 提供rest api操作接口 |
camunda-bpm-spring-boot-starter-rest |
WebApps Web管理平台cockpit, tasklist, admin |
camunda-bpm-spring-boot-starter-webapp |
external service task client实现 | camunda-bpm-spring-boot-starter-external-task-client |
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();RepositoryService repositoryService = processEngine.getRepositoryService();
RuntimeService runtimeService = processEngine.getRuntimeService();
TaskService taskService = processEngine.getTaskService();
IdentityService identityService = processEngine.getIdentityService();
FormService formService = processEngine.getFormService();
HistoryService historyService = processEngine.getHistoryService();
ManagementService managementService = processEngine.getManagementService();
FilterService filterService = processEngine.getFilterService();
ExternalTaskService externalTaskService = processEngine.getExternalTaskService();
CaseService caseService = processEngine.getCaseService();
DecisionService decisionService = processEngine.getDecisionService();
Process Application
Process Application(流程应用)
即使用Process Engine的Java应用,
这些应用可以内嵌Process engine、集成运行时容器的shared proceess engine。
Process Application可以:
(1)启动内嵌的Process engine 或 集成运行时容器的shared proceess engine
(2)自动部署流程定义
(3)通过ProcessEngine解析并执行流程相关操作
(4)作为Process Engine的Java代理实现(即流程定义中可以调用本地Java实现)
(5)通过resource/META-INF/process.xml定义多个Process Engine、多个自动部署资源
Process Variables
Process Variables(流程变量)
即在启动流程、流程表单中传递(task间传递)的变量及其值
Process、Process Instance、Task
Process(流程) - 将流程定义部署后即对应一个流程
Process Instance(流程实例) - 启动后(运行)的流程即对应一个流程实例
Task(任务) - 流程实例中的某个待执行的任务即task
3. Camunda核心架构
Process Engine
Camunda Process Engine是一个Java框架,持久层采用Mybatis,
可以内嵌集成到Java应用、SpringBooot应用中,
也可以独立运行(通过REST API提供服务,支持非Java语言)。
Camunda Platform
Camunda平台的部署架构分为:
部署架构 | 说明 | 架构图 |
---|---|---|
内嵌Process Engine | 即应用自身集成Process Engine |
![]() |
共享容器管理的Process Engine | 由部署容器(Servlet Container, Application Server, …)运行Process Engine,容器内的应用都可使用此共享的Process Engine |
![]() |
独立部署的Process Engine,通过REST API提供服务 | 即独立部署Process Engine并提供REST API接口,其他应用可调用此REST API与Process Engine进行交互 |
![]() |
集群模型
https://docs.camunda.org/manual/7.16/introduction/architecture/#clustering-model
参考:
https://docs.camunda.org/manual/latest/
https://docs.camunda.org/get-started/
https://docs.camunda.org/manual/latest/introduction/architecture/
https://camunda.com/best-practices/handling-data-in-processes/
Camunda入门(一) - 选型及核心概念相关推荐
- 二.Kafka入门到精通-Kafka核心概念
前言 上一篇我们认识了一下Kafka以及完成了一个快速入门程序.这篇文章我们将学习Kafka的整体架构,工作流程,以及一些核心概念,正所谓知其然知其所以然. Kafka的架构 我们知道,消息队列的工作 ...
- Spark入门必读:核心概念介绍及常用RDD操作
导读:Spark是由加州大学伯克利分校AMP实验室开源的分布式大规模数据处理通用引擎,具有高吞吐.低延时.通用易扩展.高容错等特点.Spark内部提供了丰富的开发库,集成了数据分析引擎Spark SQ ...
- RocketMQ_01 RocketMQ入门简介及核心概念
RocketMQ_01 RocketMQ入门简介及核心概念 伟大的事物不是一时冲动做起来的,而是由一系列小事共同造就的 一.RocketMQ简介 RocketMQ是一款分布式.列队模型的消息中间件,由 ...
- 【ROS入门-4】嘴对嘴讲解ROS的核心概念——ROS话题通信机制
文章目录 前言 ROS系列文章 ROS的通信机制 话题(topic) 发布者 订阅者 消息(Message) 用C++来写话题通信的代码 发布者 订阅者 使用rqt_graph 源码附录 引用说明 参 ...
- 【ROS入门-3】嘴对嘴讲解ROS的核心概念——节点与节点管理器
文章目录 前言 ROS系列文章 ROS的通信机制 节点(Node) 节点管理器(Master) 简单运行 引用说明 参考 前言 我要给大家来介绍一下ROS当中一些核心的概念,帮助大家去在后面的ROS学 ...
- 区块链技术入门——核心概念与原理
区块链的前世今生 密码朋克(Cypherpunk):是一个邮件组,里面有许多大牛. 比特币的底层技术: 点对点网络 时间戳 加密技术 工作量证明 可以应用到其他领域. 将这些技术提炼出来,就提出了区块 ...
- 并发框架Disruptor(核心概念 入门 高性能原理-伪共享 CAS 环形数据 生产和消费模式 高级使用 )
并发框架Disruptor 并发框架Disruptor Disruptor概述 背景 什么是Disruptor 为什么使用Disruptor Disruptor 的核心概念 Ring Buffer S ...
- 从零开始入门 K8s| 阿里技术专家详解 K8s 核心概念
作者| 阿里巴巴资深技术专家.CNCF 9个 TCO 之一 李响 一.什么是 Kubernetes Kubernetes,从官方网站上可以看到,它是一个工业级的容器编排平台.Kubernetes 这个 ...
- 入门RabbitMQ核心概念
这里mark一下 发送者开启 confirm 确认机制 spring.rabbitmq.publisher-confirm-type=correlated 发送者开启 return 确认机制 spri ...
最新文章
- Open vSwitch介绍
- ioctl之FIONREAD
- C++类型转换基本语法
- 区块链教程(五):合约编写实战实例
- 解决Ubuntu系统“无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系”的有效方法
- 华农2012年java答案_2012年计算机二级Java应用章节练习题及答案
- 为什么微软应该通过收购Docker来与Kubernetes竞争
- 阿里代码规范检查自定义规则扩展
- Linux 引导过程与服务控制
- 汉字风格迁移篇--基于生成对抗网络的无监督字体风格转换模型
- SameSite Cookie
- NLP学习(七)使用stanford实现句法分析-Python3实现
- 中学计算机教师薪资,中学教师
- 完美移除ESXI 7.0默认120G虚拟闪存,并支持自由调整,释放被占用的磁盘空间
- idea2018版本 整合git不显示代码编辑记录和信息
- 2021年A股年度行情回顾与总结
- HPE BL460c 配置536 FLB网卡VMware Esxi 6.0开启FCOE功能方法
- 网站设计风格有很多种,看看哪种适合你?
- [Luogu P3960] [UOJ 334] [NOIP 2017 tg]列队
- 【论文学习笔记-10】ActiveStereoNet(Google ECCV2018)主动式双目相机自监督学习立体匹配网络
热门文章
- Filter过滤器的例子与注解配置
- 半个生物专业的我,硕士要毕业了。读研三年到底值不值得?
- 6——ZigZag Conversion
- 【汇正财经】仓位经营管理有哪些内容?
- int8_t、int16_t、int32_t转换
- 安全之路 —— C++实现进程守护
- 干货推荐 | 掌握这几点,轻松玩转Bokeh可视化
- 喜报,2021上海快递物流展- 观众预登记开始啦,观展攻略请收好!
- 虚拟机的ubuntu经常自动断网以及已经显示了已连接的图标但不能上网的解决办法
- 地址后面的sessionid怎么消除_分手了想要挽回,4步教你消除女人对你的负面印象,重新爱上你...