发布时间:2024-07-06 13:01
如下图列举了常用的BPM引擎的演进,可以看出BPM引擎的皆起源于jBPM4,
后续分化出Activity5,然后由Activity5分化出Camunda7,由Activity6分化出Flowable6。
关于BPM引擎的具体选型及对比可参见:osworkflow、jbpm、activiti、flowable、camunda开源流程引擎哪个好? - 2021年5月,
现阶段综合考虑主流技术框架、功能性、稳定性、性能、社区活跃度等,优先选择 Camunda7:
注:
Camunda 提供社区版(开源免费)、企业版、Cloud版(Saas版),
关于社区版和企业版功能对比参见:https://camunda.com/enterprise/,
本文关于Camunda的介绍皆是基于社区版7.16版。
Process Definition(流程定义)
即通过Camunda Modeler工具建模BPMN(流程)、DMN(决策)、Form(表单)等,
可以将设计好的流程等保存成对应格式*.bpmn、*.dmn, 、*form文件,
最后需将流程文件部署到对应的工作流平台。
Process Deployment(流程部署)
即将之前流程定义的成果物(.bpmn、.dmn, 、*form)部署到工作流平台,
即将流程定义持久化到工作流平台后端的的RMDB中。
后续Process Engine即可到RMDB中读取并解析处理相应的流程。
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 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(流程变量)
即在启动流程、流程表单中传递(task间传递)的变量及其值
Process(流程) - 将流程定义部署后即对应一个流程
Process Instance(流程实例) - 启动后(运行)的流程即对应一个流程实例
Task(任务) - 流程实例中的某个待执行的任务即task
Camunda Process Engine是一个Java框架,持久层采用Mybatis,
可以内嵌集成到Java应用、SpringBooot应用中,
也可以独立运行(通过REST API提供服务,支持非Java语言)。
Camunda平台的部署架构分为:
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/