Java规则引擎的优缺点[关闭]

     2023-02-19     101

关键词:

【中文标题】Java规则引擎的优缺点[关闭]【英文标题】:Pros and cons of Java rules engines [closed] 【发布时间】:2011-01-11 03:52:14 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

采用 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 Engine 和Google 中的更多详细信息。

还有其他玩家吗?

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

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

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

【讨论】:

您的答案看起来不错。你能告诉我在哪里使用口水以及在哪里使用 Jess 吗?基本上,我期待答案更相关的差异。黑白流口水和杰西。 哇,@Pascal,该产品数量/折扣示例是真正的 WTF。假设数量是 5,000。第一个 IF 评估为真,永远不会评估 ELSE IF。将这种业务逻辑放在规则引擎中并没有任何帮助,尽管它可能会使查找错误变得更加困难。 在他的辩护中,这个例子来自第一篇文章。不太确定那个人看起来有多可信......:) 只是将规则控制交给非技术人员的危险的一个很好的例子。 为什么要使用规则引擎?是列出的链接中最好的【参考方案2】:

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

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

【讨论】:

Drools 还支持在 Excel 中和通过 Web 界面编辑的规则。【参考方案3】:

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

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

更多详情请关注URL

【讨论】:

【参考方案4】:

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

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

我只是对其进行了 maven 化,并且由于自 2010 年发布以来没有报告任何错误,因此我将其升级到 v 1.0,除了在 Maven 中心(我在做的过程)。

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

【讨论】:

Roolie 声明它在 SourceForge 上获得 MIT 许可,但代码报告 LGPLv3。这实质上意味着在任何商业产品中使用它都是可疑的(在一些开源产品中也是如此)。见nmav.gnutls.org/2013/03/the-perils-of-lgplv3.html。【参考方案5】:

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

【讨论】:

规则引擎使用成熟的算法(例如前向链接和 Rete 算法)来扩展处理非平凡问题。如果您只是简单地评估表达式,那么现有的库(例如 MVEL)可能会很有用。

我想我需要一个简单的规则引擎? [关闭]

】我想我需要一个简单的规则引擎?[关闭]【英文标题】:Ineedasimplerulesengine,Ithink?[closed]【发布时间】:2011-05-1819:24:44【问题描述】:我需要一些关于解决此问题的最佳方法的建议。我研究了DROOLS、Java规则引擎和其他一些。所有... 查看详情

我可以从哪里开始学习规则引擎? [关闭]

】我可以从哪里开始学习规则引擎?[关闭]【英文标题】:WherecanIgetstartedlearningaboutRuleEngines?[closed]【发布时间】:2010-10-0202:17:16【问题描述】:我目前正在设计一个可以使用规则引擎的Java应用程序。我可以在哪里了解如何使用... 查看详情

如何快速学习 Drools 或其他规则引擎 [关闭]

】如何快速学习Drools或其他规则引擎[关闭]【英文标题】:howtolearnDroolsoranotherruleenginefast[closed]【发布时间】:2011-02-0602:08:03【问题描述】:我们正在着手开发一个模块,该模块将根据某些标准生成一些建议。标准将采用一组业... 查看详情

关于规则引擎的神话是啥? [关闭]

】关于规则引擎的神话是啥?[关闭]【英文标题】:Whatarethemythsaboutrulesengine?[closed]关于规则引擎的神话是什么?[关闭]【发布时间】:2011-05-0610:36:33【问题描述】:我正在写一篇关于规则引擎技术的演示文稿,特别是JBossDrools。... 查看详情

什么时候不应该使用规则引擎? [关闭]

】什么时候不应该使用规则引擎?[关闭]【英文标题】:WhenshouldyouNOTuseaRulesEngine?[closed]【发布时间】:2010-10-2023:36:15【问题描述】:我有一个相当不错的使用规则引擎的优点列表,以及使用它们的一些原因,我需要的是你不应该... 查看详情

我应该使用啥规则引擎? [关闭]

】我应该使用啥规则引擎?[关闭]【英文标题】:WhatruleengineshouldIuse?[closed]我应该使用什么规则引擎?[关闭]【发布时间】:2010-09-0514:48:54【问题描述】:有哪些最好或最受欢迎的规则引擎?我还没有确定编程语言,所以告诉我... 查看详情

评估业务规则引擎的标准[关闭]

】评估业务规则引擎的标准[关闭]【英文标题】:CriteriatoEvaluateBusinessRulesEngines[closed]【发布时间】:2010-10-2102:03:23【问题描述】:我们正在购买业务规则引擎。我们希望使我们的核心应用程序可针对具有略微不同要求的不同客户... 查看详情

JavaScript中的规则引擎[关闭]

】JavaScript中的规则引擎[关闭]【英文标题】:RuleEngineinJavaScript[closed]【发布时间】:2011-12-0110:59:10【问题描述】:JavaScript中有规则引擎吗?问题是在这种情况下:考虑一个具有用户填写表单的Web应用程序。当用户填写每个字段... 查看详情

C#:英语语法规则引擎? [关闭]

】C#:英语语法规则引擎?[关闭]【英文标题】:C#:GrammarrulesengineforEnglish?[closed]【发布时间】:2010-10-1109:48:34【问题描述】:我正在寻找可能存在或不存在的东西。Windows平台上是否有“英语语法规则引擎”之类的东西(特别适用... 查看详情

包含规则引擎的系统是不是曾经真正成功过? [关闭]

】包含规则引擎的系统是不是曾经真正成功过?[关闭]【英文标题】:HasasystemthatincorporatedaruleengineeverbeenTRULYsuccessful?[closed]包含规则引擎的系统是否曾经真正成功过?[关闭]【发布时间】:2010-09-1709:52:55【问题描述】:我们的系... 查看详情

Javascript中的轻量级规则引擎[关闭]

】Javascript中的轻量级规则引擎[关闭]【英文标题】:LightweightRulesEngineinJavascript[closed]【发布时间】:2011-03-2617:52:01【问题描述】:我正在寻找用Javascript实现的轻量级规则引擎的建议。这种实现的原因是使用一小组规则(少于20条... 查看详情

基于 Python 规则的引擎 [关闭]

】基于Python规则的引擎[关闭]【英文标题】:PythonRuleBasedEngine[closed]【发布时间】:2019-04-2413:53:37【问题描述】:我希望设计一个基本上需要根据输入做出决策的系统。输入将是一个人。classPerson:def__init__(self,name,age,sex,weight,height,... 查看详情

.NET 的大多数灵活性规则引擎 [关闭]

】.NET的大多数灵活性规则引擎[关闭]【英文标题】:Mostflexibilitiesruleenginefor.NET[closed]【发布时间】:2011-01-1007:18:12【问题描述】:我即将进行的项目与销售系统有关,因此主要要求之一是“用户可以自己修改促销”。促销活动各... 查看详情

java规则引擎及jsr-94[转]

规则引擎简介     Java规则引擎是推理引擎的一种,它起源于基于规则的专家系统。     Java规则引擎将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。Java规则引... 查看详情

游戏 AI 的 Java 规则引擎

】游戏AI的Java规则引擎【英文标题】:JavaRuleEngineforGameAI【发布时间】:2010-10-0513:52:42【问题描述】:我想为我的游戏使用规则引擎。它将用于NPCAI和GMAI。为此目的,什么可能是一个好的和快速的规则引擎?它必须是Java和开源的... 查看详情

java规则引擎--drools

Drools是一个基于java的规则引擎,开源的,可以将复杂多变的规则从硬编码中解放出来,以规则脚本的形式存放在文件中,使得规则的变更不需要修正代码重启机器就可以立即在线上环境生效。 本文所使用的demo已上传 http... 查看详情

基于 Java 的简单规则引擎,具有后备功能

】基于Java的简单规则引擎,具有后备功能【英文标题】:Javabasedsimpleruleenginewithfallback【发布时间】:2021-01-0800:23:53【问题描述】:我需要实现一个具有分层回退支持的简单规则引擎。我已经查看了DROOLS库,但我不确定它是否支... 查看详情

Java AppEngine:JDO还是JPA,如何选择? [关闭]

...:为将在GoogleAppEngine上运行的Grails应用程序选择JDO或JPA的优缺点【问题讨论】:您是指JDO还是JPA?这解释了Java谷歌应用引擎的JDO与JPA-***.com/questions/ 查看详情