我在Spring环境中使用camunda引擎,因此我尝试更改流程实例的流程定义,就像http://docs.camunda.org/latest/guides/user-guide/#process-engine-process-versioning一样:&/ p>
@Transactional
public void migrateProcessInstance(String processInstanceId, int newVersion) {
SetProcessDefinitionVersionCmd command =
new SetProcessDefinitionVersionCmd(processInstanceId, newVersion);
((ProcessEngineImpl) processEngine)
.getProcessEngineConfiguration()
.getCommandExecutorTxRequired().execute(command);
}
但是它没有工作,它的执行没有错误但是当我看到act_hi_procinst和act_ru_task表时没有任何改变。我已经看过SetProcessDefinitionVersionCmd代码而且我没有看到任何更新的调用,就像其他命令只对ExecutionEntity和TaskEntity进行了一些更改,是SetProcessDefinitionVersionCmd中的错误还是我做错了什么?
答案 0 :(得分:1)
此命令仅更新流程实例(执行,任务)的当前运行时状态,以便流程实例基于新流程定义继续。
即使它们当前处于活动状态,它也不会更新历史流程实例/任务。有人可能会争辩说,这些实体的流程定义ID总是指在创建时有效的流程定义,因此这种行为是可以预期的。
编辑:尽管官方文档中没有提到我的解释,可能是因为SetProcessDefinitionVersionCmd不是公共API,而且它是流程定义可以改变的唯一情况。但是,您链接的文档也不保证历史记录的任何内容,因此您可能期望该命令不提供的内容。
答案 1 :(得分:0)
这个问题听起来与我遇到的问题类似,应该在即将发布的7.2.0版本中修复。
相应的错误报告位于:https://app.camunda.com/jira/browse/CAM-2523
fixed SetProcessDefinitionVersionCmd没有其他依赖项,您可以在项目中包含7.2.0-SNAPSHOT版本的副本并使用它。