Spring SetProcessDefinitionVersionCmd不工作

Spring SetProcessDefinitionVersionCmd不工作,spring,business-process-management,bpmn,camunda,Spring,Business Process Management,Bpmn,Camunda,我在Spring环境中使用camunda引擎,因此我尝试更改流程实例的流程定义,如下所示: 但它不工作,执行时没有错误,但当我看到act_hi_procinst和act_ru_任务表时,没有任何变化。我看过SetProcessDefinitionVersionCmd代码,没有看到任何像其他命令一样的更新调用只有ExecutionEntity和TaskEntity的一些更改,这是SetProcessDefinitionVersionCmd中的错误还是我做错了什么?此命令只更新流程实例的当前运行时状

我在Spring环境中使用camunda引擎,因此我尝试更改流程实例的流程定义,如下所示:


但它不工作,执行时没有错误,但当我看到act_hi_procinst和act_ru_任务表时,没有任何变化。我看过SetProcessDefinitionVersionCmd代码,没有看到任何像其他命令一样的更新调用只有ExecutionEntity和TaskEntity的一些更改,这是SetProcessDefinitionVersionCmd中的错误还是我做错了什么?

此命令只更新流程实例的当前运行时状态(执行、任务),这样,流程实例将基于新流程定义继续

它不会更新历史流程实例/任务,即使它们当前可能处于活动状态。有人可能会说,这些实体的流程定义id总是指在创建时有效的流程定义,因此这种行为是预期的


编辑:尽管如此,官方文档中没有提到我的解释,可能是因为SetProcessDefinitionVersionCmd不是公共API,这是唯一一种可以更改流程定义的情况。但是,您链接的文档也不能保证与历史相关的任何内容,因此您可能希望该命令不提供任何内容。

此问题听起来与我遇到的问题类似,应该在即将发布的7.2.0版中解决

相应的错误报告如下:


没有其他依赖项,您可以在项目中包含7.2.0-SNAPSHOT版本的副本,并使用它。

它的工作方式与您所说的简单流程相同。我有一个用户任务(进程正在等待),在一个具有许多条件的独占网关之后,问题是条件被破坏了,因此,我设置了一个固定的流程,但在本例中,当我将流程实例迁移到新的流程实例时,它会继续执行中断的表达式。您可能希望在另一个问题中提出这个问题,在这个问题中,您提供了流程模型的详细信息,因为很难判断您是否看到了引擎错误或您的模型/设置有问题。
@Transactional
public void migrateProcessInstance(String processInstanceId, int newVersion) {
    SetProcessDefinitionVersionCmd command =
            new SetProcessDefinitionVersionCmd(processInstanceId, newVersion);
    ((ProcessEngineImpl) processEngine)
                    .getProcessEngineConfiguration()
                    .getCommandExecutorTxRequired().execute(command);
}