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

相关文章
|
XML 缓存 数据格式
12activiti - 流程管理定义(设计流程定义文档)
12activiti - 流程管理定义(设计流程定义文档)
146 0
|
存储 数据库
13activiti - 流程管理定义(部署流程定义)
13activiti - 流程管理定义(部署流程定义)
79 0
18activiti - 流程管理定义(删除key相同的所有不同版本的流程定义)
18activiti - 流程管理定义(删除key相同的所有不同版本的流程定义)
63 0
15activiti - 流程管理定义(删除流程定义)
15activiti - 流程管理定义(删除流程定义)
120 0
17activiti - 流程管理定义(查询最新版本的流程定义)
17activiti - 流程管理定义(查询最新版本的流程定义)
70 0
14activiti - 流程管理定义(查看流程定义)
14activiti - 流程管理定义(查看流程定义)
96 0
|
Java API 数据库
Activiti-流程操作
Activiti-流程操作
Activiti-流程操作
|
Java 数据库连接 API
Activiti-流程操作2
Activiti-流程操作2
Activiti-流程操作2
|
jenkins 持续交付
项目构建细节1-常用的构建触发器
Jenkins内置4种构建触发器: 触发远程构建 其他工程构建后触发(Build after other projects are build) 定时构建(Build periodically) 轮询SCM(Poll SCM)
项目构建细节1-常用的构建触发器
|
XML 网络协议 安全
Activiti中工作流的生命周期详细解析!一个BPMN流程示例带你认识项目中流程的生命周期
本文详细说明了在工作流Activiti框架中的BPMN流程定义整个运行的生命周期。介绍了BPMN流程工作的运行环境,从定义流程开始,首先介绍了BPMN流程的几个组成部分,包括用例,流程图,以及流程图的XML内容。然后开始启动一个流程,生成任务列表,然后到领取任务,完成任务后结束流程。
735 0
Activiti中工作流的生命周期详细解析!一个BPMN流程示例带你认识项目中流程的生命周期