Java规则引擎的优缺点

时间:2010-01-30 09:07:29

标签: java drools rules jrules jess

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

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

5 个答案:

答案 0 :(得分:126)

  

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

如果需要将业务规则与应用程序逻辑分开,请使用规则引擎。 Does Your Project Need a Rule Engine文章有一个很好的例子:

  

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

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

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

Should I use a Rules Engine?Why use a Rule Engine?Some Guidelines For Deciding Whether To Use A Rules EngineGoogle上的详细信息。

  

还有其他球员吗?

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

  

他们如何在其他方面进行比较,例如易用性,性能,与代码的集成程度?

无法准确地告诉你,我对Drools只有一点点(积极的)经验。但是,您会从JBoss Drools vs ILog JRules - an anecdotal story(请务必阅读)或Working with Drools from a JRules perspective等博客文章中获得一些反馈。我相信你可以在谷歌上找到更多这些(但我会试试Drools)。

答案 1 :(得分:14)

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

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

答案 2 :(得分:7)

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

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

URL

后面了解更多详情

答案 3 :(得分:3)

只是添加许多人正在寻找更类似于管理是否满足某些条件以启用或禁用应用程序中某些功能的内容。

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

我只是对它进行了认真,因为自2010年发布以来没有报告任何错误,我将其升级到1.0版,除了在Maven Central(我在中心)主办它之外没有任何变化。做的过程。)

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

答案 4 :(得分:2)

当我们需要一个规则引擎时,我们决定推出自己的规则引擎,因为可用的那些对于我们的简单任务来说太复杂了。如果您对使用解析表达式的用户非常熟悉,那么这并不是很难做到。在我们的例子中,大多数规范都是由XSD处理的,只有少数字段被进一步解析。