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是独立的属性。

相关文章
|
存储 数据库
13activiti - 流程管理定义(部署流程定义)
13activiti - 流程管理定义(部署流程定义)
74 0
|
XML 缓存 数据格式
12activiti - 流程管理定义(设计流程定义文档)
12activiti - 流程管理定义(设计流程定义文档)
132 0
18activiti - 流程管理定义(删除key相同的所有不同版本的流程定义)
18activiti - 流程管理定义(删除key相同的所有不同版本的流程定义)
54 0
22activiti - 流程管理定义(查询流程状态)
22activiti - 流程管理定义(查询流程状态)
147 0
15activiti - 流程管理定义(删除流程定义)
15activiti - 流程管理定义(删除流程定义)
105 0
17activiti - 流程管理定义(查询最新版本的流程定义)
17activiti - 流程管理定义(查询最新版本的流程定义)
46 0
14activiti - 流程管理定义(查看流程定义)
14activiti - 流程管理定义(查看流程定义)
77 0
|
Java Maven 数据库
Maven的聚合 继承 属性 版本管理 多环境资源配置 跳过测试
Maven的聚合 继承 属性 版本管理 多环境资源配置 跳过测试
Maven的聚合 继承 属性 版本管理 多环境资源配置 跳过测试
|
XML 数据格式
Camunda流程引擎启动一条流程实例
Camunda完成一条简单的流程实例
1605 0
Camunda流程引擎启动一条流程实例
|
Java 数据库连接
JBPM学习(三):管理流程定义
本文主要讲管理流程定义
165 0