Java 规则引擎的优缺点

采用 Java 规则引擎 JESS流口水的优缺点是什么? 还有其他的参与者吗?

I understand that Drools is Open Source and JESS is not, but how do they compare in other areas like ease of use, performance, level of integration with your code?

100285 次浏览

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

我们也集成了口水,但是规则要复杂得多,因为它是一种更加程序化的方法。这就是为什么我们最有可能坚持 OpenRules 的原因。

采用 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);

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

更多细节在 我应该使用规则引擎吗?为什么要使用规则引擎?决定是否使用规则引擎的一些指南Google

Are there any other players?

其他玩家包括 JRules,Corticon (JRules 是最著名的 IMO,但并不意味着最好)。

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

不能准确地告诉你,我只有一点(积极的)经验与流口水。但是你会从像 JBoss Drools vs ILog JRules-一个轶事故事(一定要读它)或者 Working with Drools from a JRules perspective这样的博客文章中得到一些反馈。我相信你可以在谷歌上找到更多(但我想试试 Drools)。

When we needed a rules engine, we decided to roll our own, because the available ones were far too complicated for our simple tasks. If you are even remotely experienced with parsing expressions users may put in, this is not very hard to do. In our case, most of the spec is handled by an XSD and only a few of the fields are parsed further.

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

我厌倦了在所到之处一遍又一遍地重复实现相同的模式,所以我决定为它制作一个 OSS 项目,名为 Roolie http://sourceforge.net/projects/roolie/

我只是对它进行了特殊化,而且自从2010年发布以来没有任何 bug 报告,所以我将它升级到了 v1.0版本,除了在 Maven Central 托管它所需要做的(我正在这么做)之外没有任何改变。

基本上,JSR-94对于大多数事情来说都是过头了,而且伴随着当前的产品,还有一个巨大的学习曲线和开销。如果这是你想要的,没关系。但是如果您只想将用 Java 编写的简单规则与 XML 连接起来以维护状态测试,那么 Roolie 是一种非常快速的方法。没有依赖性,没有学习曲线。

我们也有过类似的问题,我们最终选择了 Drools,如果你有以下内容,你应该使用 Drools:

  • 您认为业务逻辑由于各种各样的场景而与多个 if 条件混乱不堪
  • You will have growing demand of increase in the complexity
  • 业务逻辑更改将是频繁的(每年1-2次也将是频繁的)
  • 您的服务器有足够的内存,因为它是一个内存饥饿的工具,它以内存为代价提供性能

有更多的细节在下面的 网址