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监听器
执行监听器与任务监听器
2201 1
深入探究Camunda监听器
深入探究Camunda加签问题
camunda加签的两种方式
3410 0
|
存储 Java 测试技术
|
存储 XML Java
Flowable工作流-高级篇
Flowable工作流-高级篇
9463 1
|
监控 Java Linux
开源流程引擎Camunda
开源流程引擎Camunda
|
数据可视化 前端开发 Java
SpringBoot 集成 Flowable + Flowable Modeler 流程配置可视化(图解)(一)
SpringBoot 集成 Flowable + Flowable Modeler 流程配置可视化(图解)
5856 0
|
存储 Java API
SpringBoot整合Flowable【02】- 整合初体验
本文介绍了如何基于Flowable 6.8.1版本搭建工作流项目。首先,根据JDK和Spring Boot版本选择合适的Flowable版本(7.0以下)。接着,通过创建Spring Boot项目并配置依赖,包括Flowable核心依赖、数据库连接等。然后,建立数据库并配置数据源,确保Flowable能自动生成所需的表结构。最后,启动项目测试,确认Flowable成功创建了79张表。文中还简要介绍了这些表的分类和常用表的作用,帮助初学者理解Flowable的工作原理。
3506 0
SpringBoot整合Flowable【02】- 整合初体验
|
XML 存储 Java
SpringBoot集成Flowable:构建强大的工作流引擎
在企业级应用开发中,工作流管理是核心功能之一。Flowable是一个开源的工作流引擎,它提供了BPMN 2.0规范的实现,并且与SpringBoot框架完美集成。本文将探讨如何使用SpringBoot和Flowable构建一个强大的工作流引擎,并分享一些实践技巧。
4819 0
|
前端开发 数据库 JavaScript
基于Flowable的流程挂接自定义业务表单的设计与实践
文章讨论了如何在Flowable流程引擎中挂接自定义业务表单,以及相关设计和实践的步骤。文章中包含了一些前后端代码示例,如Vue组件的模板和脚本部分,这些代码用于实现与Flowable流程引擎交互的界面。例如,有一个按钮组件用于提交申请,点击后会触发applySubmit方法,该方法会与后端API进行交互,处理流程启动、查询关联流程等逻辑。
54572 11
|
存储 监控 测试技术
三大工作流引擎技术Activiti、Camunda、Flowable选型指南
三大工作流引擎技术Activiti、Camunda、Flowable选型指南