Java规则引擎的优缺点

bra*_*ter 107 java rules drools jess jrules

采用Java规则引擎JESSDrools有什么优缺点?还有其他球员吗?

我知道Drools是Open Source而JESS不是,但是他们如何比较易用性,性能,与代码集成的其他方面?

Pas*_*ent 128

采用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;
}
Run Code Online (Sandbox Code Playgroud)

规则引擎用以下代码替换上面的代码:

ruleEngine.applyRules(product);
Run Code Online (Sandbox Code Playgroud)

由你来决定是否将规则管理控制台交给非技术人员是好事还是不行:)

我应该使用规则引擎的更多细节吗?,为什么要使用规则引擎?,某些指导决定是否使用规则引擎Google.

还有其他球员吗?

其他玩家包括JRules,Corticon(JRules是最着名的IMO - 这并不意味着最好).

他们如何比较易用性,性能,与代码集成的其他方面?

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

  • 哇,@帕斯卡,产品数量/折扣示例是真正的WTF.说数量是5,000.第一个IF评估为真,从不评估ELSE IF.将这种业务逻辑放在规则引擎中并不会对任何事情有所帮助,尽管它可能会使查找错误变得更加困难. (7认同)
  • 这是将规则控制置于非技术手中的危险的一个很好的例子. (6认同)
  • 为什么要使用规则引擎?是列出的链接中最好的 (2认同)

Dom*_*aja 15

我们正在评估规则,以便与我们的应用服务器一起使用 我们遇到过OpenRules,它易于与Java集成,并且就我们的测试显示而言,足够快.OpenRules的主要优势在于修改和处理规则的方式.这一切都发生在Excel表格中,这是非程序员最简单的方法.参与的每个人,甚至是非技术人员,都完全理解一切:-)

我们也整合了drools,但规则更复杂,因为它是一种更具程序性的方法.这就是为什么我们 - 最有可能 - 将坚持使用OpenRules.

  • Drools还支持在Excel中编辑的规则以及Web界面. (16认同)

Sac*_*apa 7

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

  • 由于各种情况,您认为业务逻辑因多种条件而变得混乱
  • 您将越来越需要增加复杂性
  • 业务逻辑变化将是频繁的(每年1-2次也会频繁)
  • 您的服务器有足够的内存,因为它是一个内存饥饿的工具,它提供内存成本的性能

在以下URL中有更多详细信息