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

     2023-02-19     182

关键词:

【中文标题】关于规则引擎的神话是啥? [关闭]【英文标题】:What are the myths about rules engine? [closed]关于规则引擎的神话是什么? [关闭] 【发布时间】:2011-05-06 10:36:33 【问题描述】:

我正在写一篇关于规则引擎技术的演示文稿,特别是 JBoss Drools。

关于规则引擎的一些“神话”是什么。

我能想到的一个是它允许业务用户控制规则引擎,我相信这是可能的,但它需要控制和教育——并不是所有业务用户都能做到。

你同意/不同意吗?其他人有什么想法吗?

很高兴在知识共享下发布我的最终“发现”...

【问题讨论】:

谢谢各位,我无法将这两个问题都标记为正确,这很烦人。所以随机选择。 【参考方案1】:

我不知道神话,但我同意让业务人员维护规则不是灌篮。

我认为,期望业务人员对完成 IT 工作所需的细节有耐心和始终如一的关注是一种幻想。自从 3G 语言(图形化编程方法)作为一种让秘书编写代码的方式以来,它就一直在发挥作用,这样程序员就可以全部被解雇。

我要指出的是,随着规则集大小的增加,确保其正确和自洽的可能性会下降。如果您的规则集包含数千条规则,则很难测试。

说起来,组合的组合爆炸将使规则引擎的测试变得困难。

规则引擎是一项了不起的技术,但要小心。

【讨论】:

我倾向于同意,但我的经验仅限于连接两个欺诈检测应用程序案例。由于@Nim 回答中关于最终用户控制整个事情的可行性的相反意见,我请他分享一些细节。尽管技术很强大,但让 IT 人员维护规则(我认为)与过去阻止使用“专家系统”环境成为主流的问题相同。 专家系统可能受到业务无法维护规则集的限制,但我想说更大的问题是技术和运行它的硬件的限制。选择葡萄酒的演示是一回事。更换机械师是另一回事。 换句话说,规则引擎是了不起的技术,但它们仍然是技术。 人工智能在与人类智能相匹配之前还有一段路要走。我们还没有达到库兹韦尔奇点。【参考方案2】:

实际上,在大量使用 drools 之后,我不同意你关于用户有能力轻松做事的观点,我认为为用户提供一个简单的界面来动态生成强大的规则是相对微不足道的。

我肯定会添加到列表中的是:

误区:规则引擎很慢!

再一次,我已经很容易通过流口水推动了每秒数千个事件。

另一个我非常讨厌的是:

误区:重量太重且使用复杂。

废话,语法很简单,只需要几行java,你就可以做一些非常时髦的东西!抱歉,如果这似乎是咆哮,在我试图介绍这项技术时,在前任雇主那里有几个月的这种废话!

【讨论】:

听起来很有趣......您能否提供一些关于您/您的团队在为“用户提供一个简单的界面以动态生成强大的规则”方面的成就的见解或细节?我只看到了两个相对较大的应用程序,但都没有做到这一点。 让我在这里说明一下,我实际上是在作弊,我意识到,对于我们正在做的事情,这不是我必须修改的规则,我所要做的就是转换用户输入到规则引擎的“事实”中,当与其他输入和一组非常有限的规则结合使用时 - 正是我们想要的。我创建了一些基于 UI(swing)的 UI,它为用户提供了类似向导的界面来生成规则,这似乎可以满足我们的需求,但关键是范围,我故意让它变得非常严格。最后,正如我提到的,我改变了策略...... ...并将用户输入转换为事实而不是规则,因此我的规则库非常小..我的其他两点仍然有效! :) 我认为这是 Drools 之类的好东西之一,它的适应性很强......(你可以清楚地看到,我对它有偏见!:))我们在我以前的公司有 CEP 工作组我看到一些实现通过 Excel 输入成功生成规则 - 输入来自运营团队中的人员 - 即非技术性,再次认为共同主题是限制范围......顺便说一句。抱歉我不能…… ...除了提及我采用的方法之外,还涉及过多的实现细节...我也对您将产生的内容非常感兴趣... @Nim - 如果 Drools 很容易学习,那么为什么那些关于 Drools 的书如此庞大?是不是像国际象棋,一天学,终生精通?【参考方案3】:

神话... 1/ 企业用户可以: 作者规则 部署它们 测试他们 运行它们 没有 IT 的帮助...我为一位客户提供了培训,他实际上认为这是真的,因为销售员是这么说的...啊啊啊他们成就了我的一天/一个月/一年!!!

您能认真考虑一家公司会冒险在 IT 团队的背后部署服务吗?没办法! 您还需要安全性以防止我写一条规则说明: 如果客户的名字是“Damien”,那么 100% 折扣 - groovy baby!

非技术用户无法完成项目的架构

2/ 您可以轻松管理规则项目,无需担心任何事情。 您可以处理的规则数量有限。理论上,一个人可以有尽可能多的规则,但这并不完全正确。 JRules 从大约 3,000 条规则中停止同步 Eclipse 和 RTS 之间的规则。 如果您有一个包含 100,000 条规则的项目都在 RETE 中,那将需要很长时间。构建树需要很长时间。即使在顺序模式下,也需要很长时间才能继续。 您不能使用像文件夹“我的文档”这样的规则存储库,而只是继续添加规则。

3/ 业务用户无需任何培训即可编写各种规则。 不同的东西: a/ 条件顺序可能会影响性能。 b/ 有些规则很复杂,需要对语言有很好的理解 c/ 使用的算法会影响执行结果 d/ 一条写得不好的规则可以将执行时间乘以 n。 我在一个项目中工作,其中只有 1 条规则负责一些随机超时。 e/ 一些复杂的问题可以用一条规则来表达。 这个问题在一个规则中解决并且有一个结果: 有四个高尔夫球手站在茶杯旁,从左到右排成一列。 - Fred 右边的高尔夫球手穿着蓝色裤子 - 乔排在第二位 - 鲍勃穿着格子裤 - 汤姆不在一号或四号位,而且他没有穿橙色裤子 顺便说一句:这是一个 JBoss 示例。 业务用户如何做到这一点?

4/ 规则引擎可以进行反向链接 我认为 JBoss 说他们可以,但我不确定。 Blaze 和 JRules 不能。

5/ 不需要任何程序语言来编写规则。 正确,但您将需要一些来执行规则。除非您使用简单的 XSD 作为对象模型。但是您的决策服务不会做那么聪明的事情。

6/ 比JAVA慢 当然,但是通过使用 BRMS,您将业务逻辑外部化,因此它是有成本的。就像您将数据外部化时一样。数据库调用是有代价的。 我已经将 5,000 个对象发送到 JRules 的工作内存中,其中一个项目包含 4 个相互调用的虚拟规则... 性能测试目的 结果:1900 万条规则在 75 秒内执行。做你的数学......它不是那么慢。

7/ 你可以在规则中做任何事情 不要在规则中进行数据库调用(尤其是在条件中)。理论上,使用 Rete,一条规则可以“测试”条件以在内存中查找匹配结果数千次。没有人愿意在应用程序中如此频繁地调用数据库。 希望对你有帮助

【讨论】:

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

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

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

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

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

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

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

】Java规则引擎的优缺点[关闭]【英文标题】:ProsandconsofJavarulesengines[closed]【发布时间】:2011-01-1103:52:14【问题描述】:采用Java规则引擎JESS和Drools的优缺点是什么?还有其他玩家吗?我知道Drools是开源的,而JESS不是,但它们在... 查看详情

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,... 查看详情

Java或Python中基于开源的规则引擎[关闭]

】Java或Python中基于开源的规则引擎[关闭]【英文标题】:OpenSourcebasedRulesEnginesinJavaorPython[closed]【发布时间】:2016-03-0418:38:54【问题描述】:我正在寻找一个用Java或Python编写的规则引擎,它支持以下功能:决策表轻松创建简单的... 查看详情

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

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

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

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

drools的规则实例到底指的是啥?

...的那种规则实例,不太明白是什么意思?InfoQ发布了一个关于规则引擎的介绍Real-WorldRuleEngines,原文ONJava上也有两篇文章:GiveYourBusinessLogicaFrameworkwithDroolsUsingDroolsinYourEnterpriseJavaApplication下面总结一下其中的精华:大多数web和企... 查看详情

关于函数式编程的好的开始文本是啥? [关闭]

】关于函数式编程的好的开始文本是啥?[关闭]【英文标题】:What\'sagoodbeginningtextonfunctionalprogramming?[closed]关于函数式编程的好的开始文本是什么?[关闭]【发布时间】:2010-09-0614:15:54【问题描述】:我喜欢在我的舒适区之外学... 查看详情

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

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

多个 .htaccess 文件中多个 mod_rewrite 规则的优先级是啥? [关闭]

】多个.htaccess文件中多个mod_rewrite规则的优先级是啥?[关闭]【英文标题】:Whatistheprecedenceofmultiplemod_rewriterulesinmultiple.htaccessfiles?[closed]多个.htaccess文件中多个mod_rewrite规则的优先级是什么?[关闭]【发布时间】:2013-03-2922:59:10【... 查看详情

如何设计规则引擎?

...8【问题描述】:我应该在C#中创建一个简单的规则引擎。关于我如何继续进行的任何线索?它是一个简约的规则引擎,并将使用SQL服务器作为后端。我们是否有任何普遍适用于规则引擎的通用蓝图或设计模式?我可以使用哪种.Ne... 查看详情

处理规则验证的最佳方法是啥

】处理规则验证的最佳方法是啥【英文标题】:Whatsthebestwaytoapproachrulevalidation处理规则验证的最佳方法是什么【发布时间】:2013-08-1823:49:24【问题描述】:所以我目前在一家公司实习,负责为分析引擎创建UI规则编辑器的中间层... 查看详情