Camunda流程定义版本控制

简介: Camunda多版本

1、前言

实际项目中审批流程会持续好几天甚至好几个月,如果在这个过程中想修改流程定义,那需要考虑的问题就是修改后的流程定义重新部署后是否会影响之前发起的流程实例,而Camunda流程引擎是有版本控制的。

  • 如果重新部署已部署的流程定义,将在数据库中获得一个新版本。
  • 正在运行的流程实例将继续在它们启动时的版本中运行。
  • 新流程实例将在新版本中运行 - 除非明确指定。
  • 在一定限度内支持将流程实例迁移到新版本。

image.png这里也可以看出来流程定义id与流程定义才具有一对一关系。

2、使用哪个版本

发起流程实例时:

  • By key :它使用密钥启动流程定义的最新部署版本的实例。
  • By id:它使用数据库 id 启动已部署流程定义的实例。通过使用它,可以启动特定版本

默认和推荐的用法是使用startProcessInstanceByKey并始终使用最新版本:

runtimeService.startProcessInstanceByKey("key")

如果想使用指定的某个版本来发起流程实例,需要先查找正确的流程定义id。

ProcessDefinitionprocessDefinition=repositoryService.createProcessDefinitionQuery()
                .processDefinitionKey("Process_1na7bx4")
                .processDefinitionVersion(10)
                .singleResult();
runtimeService.startProcessInstanceById(processDefinition.getId());

web查看时左侧可选择流程定义版本号

image.png

3、版本标签

这个东西说实话实际项目中我也没用过。使用版本标记属性标记流程定义。这可以通过向进程添加 camunda:versionTag 扩展属性来完成。

image.png

从ProcessDefinition中可以获取

ProcessDefinitionpd=repositoryService.createProcessDefinitionQuery()
    .processDefinitionKey("invoice")
    .processDefinitionVersion(1).singleResult();
pd.getVersionTag();

或获取包含指定版本的所有已部署流程定义的列表

List<ProcessDefinition>pdList=repositoryService.createProcessDefinitionQuery()
    .versionTag("1.5-patch2")
    .list();

还可以versionTagLike用于查询一系列版本

List<ProcessDefinition>pdList=repositoryService.createProcessDefinitionQuery()
    .versionTagLike("1.5-%")
    .list();

以下示例显示如何启动版本标记的最新流程定义的流程实例

ProcessDefinitionpd=repositoryService.createProcessDefinitionQuery()
    .processDefinitionKey("invoice")
    .versionTag("1.5-patch2")
    .orderByVersion().
    .desc()
    .listPage(0,1);
runtimeService.startProcessInstanceById(pd.getId());

流程定义version和versionTag是独立的属性。

相关文章
深入探究Camunda加签问题
camunda加签的两种方式
3117 0
深入探究Camunda监听器
执行监听器与任务监听器
2121 1
深入探究Camunda监听器
|
存储 Java 测试技术
|
存储 XML Java
Flowable工作流-高级篇
Flowable工作流-高级篇
8691 1
|
监控 Java Linux
开源流程引擎Camunda
开源流程引擎Camunda
|
XML 数据格式
Camunda常用功能
Camunda常用接口简介
4578 1
Camunda常用功能
|
11月前
|
传感器 运维 监控
智慧看护:可穿戴设备在老年护理中的技术探索
智慧看护:可穿戴设备在老年护理中的技术探索
651 13
|
XML JSON 前端开发
bpmn.js 使用常见问题(不定时持续更新)
bpmn.js 使用常见问题(不定时持续更新)
6889 2
|
消息中间件 监控 数据库
Camunda BPM Run下载(7.20)
Camunda BPM Run下载(7.20)
579 1
|
存储 监控 测试技术
三大工作流引擎技术Activiti、Camunda、Flowable选型指南
三大工作流引擎技术Activiti、Camunda、Flowable选型指南