activiti在默认发布时,即使上一次发布的Deployment和将要发布的Deployment一样,仍然会将其插入流程数据库。
观其源码,其中有这样一段
if ( deploymentBuilder.isDuplicateFilterEnabled() ) {
DeploymentEntity existingDeployment = Context
.getCommandContext()
.getDeploymentEntityManager()
.findLatestDeploymentByName(deployment.getName());
if ( (existingDeployment!=null)
&& !deploymentsDiffer(deployment, existingDeployment)) {
return existingDeployment;
}
}
所以我们将createDeployment()创造的deploymentBuilder的duplicate设置为true,activiti就不会进行重复发布。