在常用的ERP系统、OA系统的开发中,工作流引擎是一个必不可少的工具。之前在选择工作流引擎时曾经在activiti和jbpm之间有过比较,当时做出的决定是使用jbpm,但实际开发过程中发现这个选择是不合适的。目前我们改为选择Activiti作为工作流模块的引擎,理由如下:
1、Activiti拥有更简洁健壮的接口
JBPM自从版本五后,便重启炉灶,完全抛弃了JBMP4的代码基础,重新基于drools进行了实现。JBPM5,JBPM6似乎缺少一个合格的系统架构师,其接口设计匪夷所思,基本上是按照drools的接口再提供了一套JBPM接口,同名的接口,实现类不断重复出现,代码体系十分混乱。
一个典型的例子,同样是查询待办事项,在JBPM中接口如下:
ListgetTasksAssignedAsBusinessAdministrator(String userId, String language);
ListgetTasksAssignedAsExcludedOwner(String userId, String language);
ListgetTasksAssignedAsPotentialOwner(String userId, String language);
ListgetTasksAssignedAsPotentialOwner(String userId, ListgroupIds, String language);
ListgetTasksAssignedAsPotentialOwner(String userId, ListgroupIds, String language, int firstResult, int maxResult);
ListgetTasksAssignedAs