我也做了这样的研究。以下是对我们具体用例相关的要点:
- Bonita:
Bonita采用零编码方法,这意味着他们提供了一个易于使用的IDE来构建过程,无需编码。为此,Bonita有连接器的概念。例如,如果你想使用web服务,他们提供了一个图形化的向导。缺点是您必须手动编写纯XML SOAP包并将其复制到图形文本框中。这种方法的问题在于,您只能实现Bonita旨在实现的用例。如果您要集成Bonita没有为其开发连接器的系统,则必须自己编写这样的连接器,这非常痛苦。例如,Bonita提供用于消费SOAP Web服务的SOAP连接器。此连接器仅适用于SOAP 1.2,但不适用于SOAP 1.1(
http://community.bonitasoft.com/answers/consume-soap-11-webservices-bonita-secure-web-service-connector)。如果您有一个使用SOAP 1.1的遗留应用程序,则不能轻松地将该系统集成到您的流程中。对于数据库也是如此。只有少数专用数据库版本的数据库连接器。如果您的版本与连接器不匹配,则必须自己编写代码。
此外,Bonita社区版没有LDAP或Active Directory同步的支持,这在生产环境中是一个很大的障碍。另一个需要考虑的问题是,Bonita是根据GPL / LGPL许可证进行许可的,这可能会在您想要将Bonita集成到另一个企业应用程序中时引起问题。此外,社区支持非常薄弱。有几篇帖子已经超过2年了,但这些帖子仍未得到回答。
另一个重要的事情是业务与IT的对齐。建模过程是一种协作性质的学科,其中涉及到IT和业务分析师。因此,您需要适当的工具来满足两个用户组的需求(例如,为开发人员提供Eclipse插件,为业务人员提供易于使用的Web建模器)。Bonita只提供Bonita Studio,需要安装在您的计算机上。这个IDE相当技术化,不适合商业用户。因此,使用Bonita实现业务与IT的对齐非常困难。
Bonita是一款适用于非常简单流程的BPM工具。由于无编码方法,学习曲线非常低,您可以快速开始建模。您需要较少的编程技能,即可实现流程而无需编码。但是,一旦您的流程变得非常复杂,由于缺乏灵活性,Bonita可能不是最佳解决方案。您只能实现Bonita预期的用例。
jBPM:
jBPM是一个功能强大的开源BPM引擎,具有许多功能。Web建模器甚至支持van der Aalst工作流模式(workflowpatterns.com)的预制模型。由于jBPM提供Eclipse集成和基于Web的建模器,因此可以实现业务与IT的对齐。有点棘手的是,您只能在Web建模器中定义表单,而不能在Eclipse插件中定义,据我所知。总之,jBPM是在公司中使用的好选择。我们的瓶颈是可扩展性。jBPM基于规则引擎Drools。这导致整个过程实例作为BLOB在数据库中持久化。在考虑搜索和可扩展性时,这是一个关键的瓶颈。
此外,由于其复杂性,学习曲线非常陡峭。jBPM不像BPMN标准建议的那样提供服务任务。相反,您必须定义自己的Java服务任务,并在引擎中手动注册它们,这会导致非常低级别的编程。
Activiti:
最终,我们选择了Activiti,因为这是一个非常易于使用的基于框架的引擎。它提供了Eclipse插件以及现代化的AngularJS Web模型构建器。通过这种方式,您可以实现业务-IT对齐。REST-API由Spring Security保护,这意味着您可以很容易地扩展引擎以添加单点登录功能。由于Apache许可证2.0,没有版权限制,这意味着您在生产环境中完全免费使用和扩展,这非常重要。
此外,BPMN覆盖范围非常广泛。并非所有BPMN元素都被实现,但我不知道有哪个引擎可以做到这一点。
Activiti Explorer是演示前端,演示了Activiti API的用法。由于该前端基于VAADIN,因此可以轻松扩展。社区非常活跃,这意味着如果您遇到任何问题,可以很快得到帮助。
Activiti提供外部表单技术的良好集成点,这对于生产使用非常重要。所有候选人的表单技术都非常受限制。因此,结合引擎使用标准表单技术(如XForms)是有意义的。即使是更复杂的事情也可以通过formKey属性实现。
Activiti不遵循零编码方法,这意味着如果您想编排服务,您将需要一些编码。但是,即使是与SOAP服务通信也可以通过使用Java Service Task和Apache CXF来实现。编码工作量较低。
希望我的关键点能够帮助做出决策。明确的是,这不是Activiti的广告。正确的产品选择取决于具体的用例。我只想指出我们项目中最重要的点。
最好的问候,Ben