115

采用 Java 规则引擎JESSDrools的优缺点是什么?还有其他玩家吗?

我知道 Drools 是开源的,而 JESS 不是,但它们在易用性、性能、与代码的集成程度等其他方面如何比较?

4

5 回答 5

132

采用 Java 规则引擎 JESS 和 Drools 的优缺点是什么?

如果您需要将业务规则与应用程序逻辑分开,请使用规则引擎。你的项目是否需要规则引擎文章有一个很好的例子:

例如,典型的店面系统可能涉及计算折扣的代码:

if (product.quantity > 100 && product.quantity < 500) {
  product.discount = 2;
} else if (product.quantity >= 500 && product.quantity < 2000) {
  product.discount = 5;
} else if (product.quantity >= 2000) {
  product.discount = 10;
}

规则引擎将上面的代码替换为如下所示的代码:

ruleEngine.applyRules(product);

由您决定将规则管理控制台交给非技术人员是否是一件好事:)

应该使用规则引擎吗?,为什么要使用规则引擎?,一些决定是否使用规则引擎的指南谷歌

还有其他玩家吗?

其他参与者包括 JRules、Corticon(JRules 是最著名的 IMO - 这并不意味着最好)。

它们在易用性、性能、与您的代码的集成度等其他方面如何比较?

不能准确地告诉你,我对 Drools 只有一点(积极的)经验。但是您会从博客文章中获得一些反馈,例如JBoss Drools 与 ILog JRules - 一个轶事故事(一定要阅读它)或从 JRules 的角度使用 Drools。我相信你可以在 Google 上找到更多(但我会试试 Drools)。

于 2010-01-30T12:43:54.140 回答
16

我们现在正在评估与我们的应用程序服务器一起使用的规则。我们遇到了OpenRules,它很容易与 Java 集成,并且就我们的测试表明,它足够快。OpenRules 的主要优势在于修改和处理规则的方式。这一切都发生在 Excel 表格中,这对于非程序员来说是最简单的方法。参与的每个人,即使是非技术人员,都完美地理解了一切:-)

我们还集成了 drools,但规则更难理解,因为它是一种更程序化的方法。这就是为什么我们——很可能——会坚持使用 OpenRules。

于 2010-01-30T09:48:00.053 回答
8

我们有类似的问题,我们终于拿起了 Drools,如果你有以下情况,应该使用 drools:

  • 您认为由于各种场景而导致多个 if 条件混乱的业务逻辑
  • 您将越来越需要增加复杂性
  • 业务逻辑变化会很频繁(一年1-2次也会很频繁)
  • 您的服务器有足够的内存,因为它是一个需要大量内存的工具,它以内存为代价提供性能

在以下网址了解更多详情

于 2013-08-16T05:27:31.613 回答
3

只是补充说,许多人正在寻找更类似于管理是否满足某些条件来启用或禁用应用程序中的某些功能的东西。

我已经厌倦了一遍又一遍地重新实现相同的模式,所以我决定为它创建一个名为 Roolie http://sourceforge.net/projects/roolie/的 OSS 项目

我只是对其进行了 maven 化,并且由于自 2010 年发布以来没有报告任何错误,我将其升级到 v 1.0,除了在 Maven Central 托管它所需的更改(我正在做)。

基本上,JSR-94 对于大多数事情来说都是多余的,并且与当前的产品一起存在巨大的学习曲线和开销。如果那是你想要的,那很好。但是,如果您只想将用 Java 编写的简单规则与 XML 链接在一起以维护您的状态测试,那么 Roolie 是一种非常快速的方法。没有依赖性,也没有学习曲线。

于 2013-04-01T05:12:03.560 回答
2

当我们需要一个规则引擎时,我们决定推出自己的规则引擎,因为可用的规则引擎对于我们的简单任务来说太复杂了。如果您甚至对解析用户可能输入的表达式有一定的经验,这并不是很难做到的。在我们的例子中,大部分规范由 XSD 处理,只有少数字段被进一步解析。

于 2010-01-30T13:49:07.573 回答