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。

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

Camunda入门(一) - 选型及核心概念_第1张图片

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入门(一) - 选型及核心概念_第2张图片

Camunda Platform

Camunda平台的部署架构分为:

部署架构 说明 架构图
内嵌Process Engine 即应用自身集成Process Engine Camunda入门(一) - 选型及核心概念_第3张图片
共享容器管理的Process Engine 由部署容器(Servlet Container, Application Server, …)运行Process Engine,容器内的应用都可使用此共享的Process Engine Camunda入门(一) - 选型及核心概念_第4张图片
独立部署的Process Engine,通过REST API提供服务 即独立部署Process Engine并提供REST API接口,其他应用可调用此REST API与Process Engine进行交互 Camunda入门(一) - 选型及核心概念_第5张图片

集群模型

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,camunda,工作流)