Camunda入门(一) - 选型及核心概念

1. 关于BPM选型 - 推荐Camunda

如下图列举了常用的BPM引擎的演进,可以看出BPM引擎的皆起源于jBPM4,
后续分化出Activity5,然后由Activity5分化出Camunda7,由Activity6分化出Flowable6。

抛弃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:

注:
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/

  • 15
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

罗小爬EX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值