在使用Activiti 6的过程中,发现Activiti 6存在一些坑,开个帖子记录一下,各位同学在使用过程中可以尽量避免。
Activiti 6现在是6.0.0版本,官方好像不维护了,一直没有新版本。现在官方在活跃开发的是7.x版本,以后有机会了我会升级到7.x版本,看看这些问题还有没有。
1、不要在DelegateTask和其所属的Execution中设置同名的本地变量
如果在DelegateTask和其所属的Execution中设置同名的本地变量,Activiti在删除Execution时可能会抛出异常java.sql.SQLIntegrityConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails (`XXX_SCHEMA_NAME`.`act_ru_variable
`, CONSTRAINT `ACT_FK_VAR_EXE
` FOREIGN KEY (`EXECUTION_ID_
`) REFERENCES `act_ru_execution
` (`ID_
`))。
可能引发错误的示例代码:
delegateTask.getExecution().setVariableLocal("var1","1");
delegateTask.setVariableLocal("var1","2");
// 然后在调用TaskService.complete()时可能会抛出上面的异常
这个问题已经在我的另一篇文章《解决Activiti异常java.sql.SQLIntegrityConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails》中得到了解决,解决之后,就不需要遵守该限制了。