目录

  • 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。

#mermaid-svg-oQlL528gWEby7xt5 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-oQlL528gWEby7xt5 .error-icon{fill:#552222;}#mermaid-svg-oQlL528gWEby7xt5 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-oQlL528gWEby7xt5 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-oQlL528gWEby7xt5 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-oQlL528gWEby7xt5 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-oQlL528gWEby7xt5 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-oQlL528gWEby7xt5 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-oQlL528gWEby7xt5 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-oQlL528gWEby7xt5 .marker.cross{stroke:#333333;}#mermaid-svg-oQlL528gWEby7xt5 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-oQlL528gWEby7xt5 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-oQlL528gWEby7xt5 .cluster-label text{fill:#333;}#mermaid-svg-oQlL528gWEby7xt5 .cluster-label span{color:#333;}#mermaid-svg-oQlL528gWEby7xt5 .label text,#mermaid-svg-oQlL528gWEby7xt5 span{fill:#333;color:#333;}#mermaid-svg-oQlL528gWEby7xt5 .node rect,#mermaid-svg-oQlL528gWEby7xt5 .node circle,#mermaid-svg-oQlL528gWEby7xt5 .node ellipse,#mermaid-svg-oQlL528gWEby7xt5 .node polygon,#mermaid-svg-oQlL528gWEby7xt5 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-oQlL528gWEby7xt5 .node .label{text-align:center;}#mermaid-svg-oQlL528gWEby7xt5 .node.clickable{cursor:pointer;}#mermaid-svg-oQlL528gWEby7xt5 .arrowheadPath{fill:#333333;}#mermaid-svg-oQlL528gWEby7xt5 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-oQlL528gWEby7xt5 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-oQlL528gWEby7xt5 .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-oQlL528gWEby7xt5 .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-oQlL528gWEby7xt5 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-oQlL528gWEby7xt5 .cluster text{fill:#333;}#mermaid-svg-oQlL528gWEby7xt5 .cluster span{color:#333;}#mermaid-svg-oQlL528gWEby7xt5 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-oQlL528gWEby7xt5 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}#mermaid-svg-oQlL528gWEby7xt5 .jBPM>*{fill:#87CEFA!important;stroke:#87CEFA!important;color:white!important;}#mermaid-svg-oQlL528gWEby7xt5 .jBPM span{fill:#87CEFA!important;stroke:#87CEFA!important;color:white!important;}#mermaid-svg-oQlL528gWEby7xt5 .activity>*{fill:#00FA9A!important;stroke:#00FA9A!important;color:white!important;}#mermaid-svg-oQlL528gWEby7xt5 .activity span{fill:#00FA9A!important;stroke:#00FA9A!important;color:white!important;}#mermaid-svg-oQlL528gWEby7xt5 .flowable>*{fill:#EEB4B4!important;stroke:#EEB4B4!important;color:white!important;}#mermaid-svg-oQlL528gWEby7xt5 .flowable span{fill:#EEB4B4!important;stroke:#EEB4B4!important;color:white!important;}#mermaid-svg-oQlL528gWEby7xt5 .camunda>*{fill:#FF3030!important;stroke:#FF3030!important;color:white!important;}#mermaid-svg-oQlL528gWEby7xt5 .camunda span{fill:#FF3030!important;stroke:#FF3030!important;color:white!important;}

抛弃pvm启用Drools Flow
沿用pvm
内核引擎无变化
bugfix,DMN,BPEL
pvm,BPMN,CMMN,DMN
jBPM4
jBPM5
jBPM6
jBPM7
Activity5
Activity6
Activity7
Flowable6
Camunda7

关于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入门(一) - 选型及核心概念相关推荐

  1. 二.Kafka入门到精通-Kafka核心概念

    前言 上一篇我们认识了一下Kafka以及完成了一个快速入门程序.这篇文章我们将学习Kafka的整体架构,工作流程,以及一些核心概念,正所谓知其然知其所以然. Kafka的架构 我们知道,消息队列的工作 ...

  2. Spark入门必读:核心概念介绍及常用RDD操作

    导读:Spark是由加州大学伯克利分校AMP实验室开源的分布式大规模数据处理通用引擎,具有高吞吐.低延时.通用易扩展.高容错等特点.Spark内部提供了丰富的开发库,集成了数据分析引擎Spark SQ ...

  3. RocketMQ_01 RocketMQ入门简介及核心概念

    RocketMQ_01 RocketMQ入门简介及核心概念 伟大的事物不是一时冲动做起来的,而是由一系列小事共同造就的 一.RocketMQ简介 RocketMQ是一款分布式.列队模型的消息中间件,由 ...

  4. 【ROS入门-4】嘴对嘴讲解ROS的核心概念——ROS话题通信机制

    文章目录 前言 ROS系列文章 ROS的通信机制 话题(topic) 发布者 订阅者 消息(Message) 用C++来写话题通信的代码 发布者 订阅者 使用rqt_graph 源码附录 引用说明 参 ...

  5. 【ROS入门-3】嘴对嘴讲解ROS的核心概念——节点与节点管理器

    文章目录 前言 ROS系列文章 ROS的通信机制 节点(Node) 节点管理器(Master) 简单运行 引用说明 参考 前言 我要给大家来介绍一下ROS当中一些核心的概念,帮助大家去在后面的ROS学 ...

  6. 区块链技术入门——核心概念与原理

    区块链的前世今生 密码朋克(Cypherpunk):是一个邮件组,里面有许多大牛. 比特币的底层技术: 点对点网络 时间戳 加密技术 工作量证明 可以应用到其他领域. 将这些技术提炼出来,就提出了区块 ...

  7. 并发框架Disruptor(核心概念 入门 高性能原理-伪共享 CAS 环形数据 生产和消费模式 高级使用 )

    并发框架Disruptor 并发框架Disruptor Disruptor概述 背景 什么是Disruptor 为什么使用Disruptor Disruptor 的核心概念 Ring Buffer S ...

  8. 从零开始入门 K8s| 阿里技术专家详解 K8s 核心概念

    作者| 阿里巴巴资深技术专家.CNCF 9个 TCO 之一 李响 一.什么是 Kubernetes Kubernetes,从官方网站上可以看到,它是一个工业级的容器编排平台.Kubernetes 这个 ...

  9. 入门RabbitMQ核心概念

    这里mark一下 发送者开启 confirm 确认机制 spring.rabbitmq.publisher-confirm-type=correlated 发送者开启 return 确认机制 spri ...

最新文章

  1. Open vSwitch介绍
  2. ioctl之FIONREAD
  3. C++类型转换基本语法
  4. 区块链教程(五):合约编写实战实例
  5. 解决Ubuntu系统“无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系”的有效方法
  6. 华农2012年java答案_2012年计算机二级Java应用章节练习题及答案
  7. 为什么微软应该通过收购Docker来与Kubernetes竞争
  8. 阿里代码规范检查自定义规则扩展
  9. Linux 引导过程与服务控制
  10. 汉字风格迁移篇--基于生成对抗网络的无监督字体风格转换模型
  11. SameSite Cookie
  12. NLP学习(七)使用stanford实现句法分析-Python3实现
  13. 中学计算机教师薪资,中学教师
  14. 完美移除ESXI 7.0默认120G虚拟闪存,并支持自由调整,释放被占用的磁盘空间
  15. idea2018版本 整合git不显示代码编辑记录和信息
  16. 2021年A股年度行情回顾与总结
  17. HPE BL460c 配置536 FLB网卡VMware Esxi 6.0开启FCOE功能方法
  18. 网站设计风格有很多种,看看哪种适合你?
  19. [Luogu P3960] [UOJ 334] [NOIP 2017 tg]列队
  20. 【论文学习笔记-10】ActiveStereoNet(Google ECCV2018)主动式双目相机自监督学习立体匹配网络

热门文章

  1. Filter过滤器的例子与注解配置
  2. 半个生物专业的我,硕士要毕业了。读研三年到底值不值得?
  3. 6——ZigZag Conversion
  4. 【汇正财经】仓位经营管理有哪些内容?
  5. int8_t、int16_t、int32_t转换
  6. 安全之路 —— C++实现进程守护
  7. 干货推荐 | 掌握这几点,轻松玩转Bokeh可视化
  8. 喜报,2021上海快递物流展- 观众预登记开始啦,观展攻略请收好!
  9. 虚拟机的ubuntu经常自动断网以及已经显示了已连接的图标但不能上网的解决办法
  10. 地址后面的sessionid怎么消除_分手了想要挽回,4步教你消除女人对你的负面印象,重新爱上你...