在我们的项目中,我们必须实现有关将某些对象映射到某些操作的业务逻辑。在某个动作最终得到解决之前,我们将验证特定类型的对象的一系列条件。换句话说,对于 7 种类型的对象,我们可以有一系列动作(来自近 45 个动作)。
我们正在考虑使用 Drools 来写下上述规则。就效率而言,是否有人对使用 Drools 有一些积极/消极的经验?还有可以使用的 jBPM 框架(如果我没记错的话,那里使用了 Drools)——有人熟悉那个框架吗?也许您对如何解决问题有其他想法?
关于效率,你应该对 Drools 没有任何问题。对我来说,这听起来像是一组非常小的事实和规则。它所基于的 Rete 引擎几乎可以肯定地比你自己编写的任何一堆 if-then-else 语句更快地做出决策。我注意到的一个特别的好处是响应时间是非常可预测的。
显然所有的事实模型和规则都不同,但举个例子,我目前正在构建的应用程序在工作内存中随时都有数百个事实,以及超过 1000 条规则。它能够在大约 20 毫秒内对传入请求做出决定。
对于您所描述的内容,完整的 jBPM 框架听起来没有必要。但是,它擅长它的工作。例如,如果您要设计工作流,则有一个流程建模 GUI,如果技术团队在编写 DSL 和构建决策表方面投入了一些前期工作,Guvnor 可以用于非技术规则作者。
为了完整起见,主要竞争对手可能是 FICO Blaze Adviser 或 IBM ILog JRules。一般来说,当涉及到基准测试时,它们往往略领先于 Drools,但它们很昂贵。诚然,如果您决定为 JBoss/RedHat 服务合同付费,那并没有太大的不同,但如果您乐于在 Drools 上获得社区支持,那么它是免费的!
我对 Drools 的唯一担心是没有非 IT 业务人员可以真正使用的像样的 GUI。许多产品声称它们确实提供了这样的用户界面,但事实证明并非如此。因此,您必须接受这样一个事实,即您的开发团队最终将基于决策表或其他格式创建和测试所有这些规则。
除此之外,Drools 是政府、银行和大公司使用的出色 BRE。
Drools 非常高效和快速。但与任何技术和框架一样,它需要投资才能集成到您的项目中,这不是灵丹妙药。你需要考虑:
jBPM 不是一个规则引擎,它是一个工作流引擎。Drools 是一个规则引擎。所以 Drools 就是你要找的。
Drools 和 jBPM 是配套项目:如果您需要带有规则的工作流,它们可以很好地集成。
Drools 很好,与其他 BPMN 引擎相比,JBPM 有点复杂。我建议选择 Activiti,因为它更容易集成任何东西,比如 Spring、LDAP 等;使用 Activiti 更容易。你也可以将 Drools 与 Activiti 集成。所以选择 Activiti 作为工作流引擎和 Drools 作为规则引擎。