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加签的两种方式
3170 0
深入探究Camunda监听器
执行监听器与任务监听器
2127 1
深入探究Camunda监听器
|
存储 Java 测试技术
|
存储 XML Java
Flowable工作流-高级篇
Flowable工作流-高级篇
8787 1
|
应用服务中间件 Linux 网络安全
Linux 安装 Nginx 并配置为系统服务(超详细)
Linux 安装 Nginx 并配置为系统服务(超详细)
|
监控 Java Linux
开源流程引擎Camunda
开源流程引擎Camunda
|
Java Android开发 p3c
Alibaba Java Coding Guidelines安装使用教程
Alibaba Java Coding Guidelines安装使用教程
11268 0
Alibaba Java Coding Guidelines安装使用教程
|
12月前
|
传感器 运维 监控
智慧看护:可穿戴设备在老年护理中的技术探索
智慧看护:可穿戴设备在老年护理中的技术探索
680 13
|
XML JSON 前端开发
bpmn.js 使用常见问题(不定时持续更新)
bpmn.js 使用常见问题(不定时持续更新)
6920 2
|
XML 存储 Java
SpringBoot集成Flowable:构建强大的工作流引擎
在企业级应用开发中,工作流管理是核心功能之一。Flowable是一个开源的工作流引擎,它提供了BPMN 2.0规范的实现,并且与SpringBoot框架完美集成。本文将探讨如何使用SpringBoot和Flowable构建一个强大的工作流引擎,并分享一些实践技巧。
4343 0

热门文章

最新文章