Skip to content

Instantly share code, notes, and snippets.

@henryyan
Created February 1, 2013 09:51
Show Gist options
  • Save henryyan/4690417 to your computer and use it in GitHub Desktop.
Save henryyan/4690417 to your computer and use it in GitHub Desktop.
动态更改流程实例的流程定义ID
public void changeProcessDefinitionId(String processInstanceId, String processDefinitionId) {
long count = repositoryService.createProcessDefinitionQuery().processDefinitionId(processDefinitionId).count();
if (count == 0) {
throw new ServiceException("指定的流程定义不存在!");
}
Session session = processInstanceDao.getSession();
session.createSQLQuery("update ACT_RU_EXECUTION set PROC_DEF_ID_ = ? where PROC_INST_ID_ = ?")
.setParameter(0, processDefinitionId).setParameter(1, processInstanceId).executeUpdate();
session.createSQLQuery("update ACT_RU_TASK set PROC_DEF_ID_ = ? where PROC_INST_ID_ = ?")
.setParameter(0, processDefinitionId).setParameter(1, processInstanceId).executeUpdate();
session.createSQLQuery("update ACT_HI_PROCINST set PROC_DEF_ID_ = ? where PROC_INST_ID_ = ?")
.setParameter(0, processDefinitionId).setParameter(1, processInstanceId).executeUpdate();
session.createSQLQuery("update ACT_HI_TASKINST set PROC_DEF_ID_ = ? where PROC_INST_ID_ = ?")
.setParameter(0, processDefinitionId).setParameter(1, processInstanceId).executeUpdate();
session.createSQLQuery("update ACT_HI_ACTINST set PROC_DEF_ID_ = ? where PROC_INST_ID_ = ?")
.setParameter(0, processDefinitionId).setParameter(1, processInstanceId).executeUpdate();
}
@henryyan
Copy link
Author

henryyan commented Feb 1, 2013

功能说明:一旦一个流程走了一半发现有问题了,重新部署更改运行中流程实例的流程定义ID就可以继续走

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment