Activiti5.9 流程实例中同一个流程businessKey重复的问题

启动流程使用runtimeService.startProcessInstanceByKey(processDefinitionKey,businessKey,variablesMap); 

如:runtimeService.startProcessInstanceByKey("test1", "b2KEY", variableMap); 

其中“b2KEY”是流程实例的businessKey值,如果同一个流程KEY用同一个businessKey来启动就会报错com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry 'test1:3:604-b2KEY' for key 'ACT_UNIQ_HI_BUS_KEY'。 

进入activiti表中去查看,ACT_HI_PROCINST表中有一个名为ACT_UNIQ_HI_BUS_KEY的索引,关联的是PROC_DEF_ID_, BUSINESS_KEY_这两个字段,索引的类型为Unique 
PROC_DEF_ID_是流程定义ID, 
BUSINESS_KEY_就是启动流程时传入的businessKey值, 
也就是说同一个流程不能使用相同的businessKey值,这在实际应用中有会出现一些问题,如同一个业务数据的ID不能使用同一个流程2次。 

所以能处理的办法就有两种: 
1.是不使用这个字段而使用流程变量来存储了 
2.就是在传入businessKey值的加一些随机数据或业务数据ID,如“businessKey_随机数”或“businessKey:ID”,只要保证不同就行了
阅读更多
文章标签: activiti5
个人分类: 流程引擎
上一篇Spring <tx:advice>事务配置
下一篇activiti--多实例任务实现会签
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭