业务规则引擎和约束编程语言之间的关系


20

如果看过(可能是较旧的)Drools手册或某些其他规则引擎的手册,则其增值插图之一就是解决难题,例如Miss Manners难题(Drools手册)。现在,使用Prolog或较新的约束编程语言自然地解决了这些难题,有人想知道为什么有人会为此目的使用Drools。在这种情况下,Prolog和CPL所带来的附加价值是他们能够自然地将难题表达为一组逻辑谓词并自动搜索解决方案的空间(在这方面CPL效率更高)。但是,诸如Drools之类的产品的附加价值是什么(我的意思是,除了拿起Excel文件并将其转换为一组规则之外)。

更具体地说,Prolog实现了回溯搜索,CLP实现了具有约束传播的回溯搜索,因此,不是搜索单个变量的整个笛卡尔积,而是修剪掉该乘积空间的大部分。这使它们有效和有用。文献中充分讨论了Prolog和CLP。

另一方面,虽然很明显Rete算法以某些数据结构的形式缓存规则集,但是据我所知,如果某些输入已更改,则可以更有效地评估输出,并给出有效地更新此数据结构以进行增量更改的方法,(对我而言)很难理解基本思想,甚至更难理解其有效性(与Prolog和CLP相比)?不幸的是,很难找到在更广泛的上下文中查看Rete算法的良好参考。

不幸的是,在这方面,Drools的文档提供的信息很少。我能找到的最多的是“ Rete算法,Leaps算法及其后代(例如Drools的Reteoo(和Leaps))提供了非常有效的方式来将规则模式与您的域对象数据进行匹配。当您拥有不会完全改变(因为规则引擎可以记住过去的比赛。这些算法已经过战斗验证”。非常高效-相比之下呢?经战斗证明-可以指向现实世界的应用程序吗?

如果有人可以对此主题提供更多的启示或提供有效的参考,我将不胜感激。


1
这个问题有点笼统,在这里并没有真正意义上的...

3
好吧,恐怕cstheory.stackexchange.com太“面向行业”了。我真正感兴趣的是业务规则引擎的基本要点是什么,为什么使用它们比使用Prolog或CLP更具有优势。如果您有更好的发布建议,我将很高兴听到。

Answers:


7

我认为,许多使用正向链接引擎(例如Drools)与反向链接(Prolog)的商业业务规则系统的论点是,许多“ Joe程序员”习惯于处理IF / THEN / ELSE逻辑-这使它成为一个整体。更容易向大众推销。我认为技术优点与它无关。

我将其发布为社区Wiki,因为这是我颇有色彩的看法,而不是真正的答案。


4

Drools最近在drl语言中无缝添加了反向链接。因此,现在您可以获得这两个词的好处。

它还没有Prolog的所有功能,例如没有“剪切”功能。但是,统一和派生树结果将按人们期望的那样工作,即完全支持传递闭包。并且功能将继续增长,例如对制表,剪切,表达式统一的支持。

您可以分别使用正向“反应性”或反向“查询”规则,也可以一起使用;反应式规则可以与查询结果结合在一起。

我们添加的一件事是我们的查询可以作为反应视图完全实现。因此,您可以调用一个transititve闭包查询,它将以反应性方式保持打开状态并响应底层数据的更改,而无需重新轮询该查询。

有关何时添加“向后链接”的信息,请参阅“ New&Noteworth”部分:http : //blog.athico.com/2012/05/drools-540final-released.html

因此,我认为您的问题的措词会更好,当您拥有诸如Drools的混合推理系统时,为什么还要使用其他内容? http://blog.athico.com/2012/05/drools-54-artificial-intelligence.html


3

我同意您的观点,Prolog比Drools更强大。但是我认为Drools之所以吸引企业客户,是因为Drools与其他流行的企业应用程序集成了精美的前端工具和集成。我认为这些规则随后会保存到数据库中,许多Drools引擎可以立即使用它们。

在运行时更改规则是使用Drools引擎的一种非常动态的方式,它受支持。我相信Prolog 可能有类似的系统,但是AFAIK不存在。这些规则或经过修改的规则会去哪里?在程序的数据库中断言?重新启动后,这些规则将丢失。我们是否将它们持久保存到共享数据库,然后根据需要将它们声明到程序中?Prolog可能有用,但是Drools已经很好地集成到了企业应用程序堆栈中,那么为什么要使自己发疯(除了乐趣)?


“我同意您的观点,Prolog比Drools更强大。但是,我认为Drools之所以吸引企业客户,是因为该产品具有精美的前端工具以及与Drools与其他流行企业应用程序的集成。”

根据我上面的评论,Drools现在以与Prolog相同的方式实现基于目标的派生树。更进一步,Drools可以用其他大多数Prolog系统无法做到的那棵树来做些什么。Drools可以将派生树具体化为一个视图,并随着底层基础术语的更改而接收响应更新。


2
@MarkProctor,通常,与纠正相反的反对意见通常应通过评论和(可能)降低投票的力度来完成,而不是编辑其他人的答案的内容。
2014年

2

流口水的开始是基于CLIPS。CLIPS是较旧的“ 生产系统 ”,并且像所有生产系统一样,是前向链接系统。关于Rete的许多研究已经“走到了黑暗”,因为发起人最终要为算法是知识产权的公司工作。Rete版本3由进行FICO评分的人所拥有,所以是的,它是“经战斗证明的”。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.