0

我在 Spring 环境中使用 camunda 引擎,所以我试图更改流程实例的流程定义,就像http://docs.camunda.org/latest/guides/user-guide/#process-engine-process-版本控制

@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 中的错误还是我做错了什么?

4

2 回答 2

1

此命令仅更新流程实例的当前运行时状态(执行、任务),以便流程实例根据新的流程定义继续。

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

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

于 2014-08-27T08:11:21.037 回答
0

这个问题听起来和我遇到的问题很相似,应该会在即将发布的 7.2.0 版本中修复

相应的错误报告在这里:https ://app.camunda.com/jira/browse/CAM-2523

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

于 2014-10-20T17:11:37.930 回答