关于不可知的语言:我应该使用什么规则引擎?

关于不可知的语言:我应该使用什么规则引擎?

What rule engine should I use?

什么是最好的或最受欢迎的规则引擎? 我还没有选择一种编程语言,所以请告诉我规则引擎及其支持的编程语言。


我是Drools的作者之一,我会避免将商品拉皮条。

但是其他一些选项是Jess(不是开源的),但是使用clips语法(我们也支持它的一个子集)-这有点像lisp的方言。

这真的取决于您想要什么,海利拥有强大的自然语言技术(他们最近收购了RuleBurst-他也拥有有趣的自然语言技术,可以处理带有嵌入式规则的文字文档,例如法律文档)。 RuleBurst也能够以.Net运行时为目标(也有一个Drools.net"端口"可用-最近,我还没有看到最新的进展,,,时间不够)。好吧,我现在将皮条客金光闪闪收起来...对此感到抱歉。


这是Martin Fowler的精彩文章,是有关何时可以使用规则引擎的讨论。您可能会发现它很有帮助。

http://martinfowler.com/bliki/RulesEngine.html


根据您的要求,可能值得一看Windows Workflow Foundation(.NET 3.5)。

.NET规则引擎InRule支持WF和BizTalk。我没有尝试过,所以不知道它是否有用。


我对Haley专家规则和Haley办公室规则都有一定的经验。两种系统都很不错,但是我需要了解更多有关您要使用它们来明确回答的内容(请参阅http://www.haley.com)

它们都支持C#和Java(我认为也是Web服务api)。

两者之间的区别主要在于您想进入多少自然语言建模。 Office规则使业务用户可以在Office文档中编写规则,并且主要关注立法需求建模。专家规则在定义如何处理自然语言方面可以稍微灵活一些,但需要更多的工作来预先定义语言结构。

希望其中的一些帮助。


对于非常容易理解的程序性规则(例如资格规则,保险规则,审计规则等),然后是具有域特定语言的简单决策表,可以为您提供性能和简便性,而不会增加基于RETE的引擎的开销。

在DTRules可以找到这种Java开源规则引擎。


我发现了另一个支持不同规则的规则引擎。程序,推理(RETE)和FlowRule。这是非常灵活且可扩展的规则引擎(也是事件驱动的)。他们以前有免费版本的快速版本。

看看http://www.flexrule.com


Inrule看到的网站很好!

它是一个基于.NET的规则引擎,具有可靠的SDK和适合非技术用户的UI。
过去对我来说非常有效-几乎将我的开发成本降低了一半。


我已经检查了JBoss Rules aka Drools,它看起来还不错。我希望听到生产中使用它的人的来信,因为我当前的项目中可能还会需要一个规则引擎。


我们已经使用了http://jatha.sourceforge.net和http://www.jboss.com/products/rules。它们都很不错,但是在大多数情况下,JBoss规则在我看来对于人们所做的很多事情来说都是过大的。它们都是基于Java的。

值得记住Greenspun的《编程的第十条规则》,并跳过此步骤:)


WF在.net 3.0中已经可用。尽管在Visual Studio的设计器端,这有点麻烦,而且会变得非常混乱。我在Sharepoint上使用了它(无论如何WF都是您唯一的选择),尽管学习曲线相当陡峭,但总体上我还是很满意。

WF的基础是一本很好的书,因为它们从头到尾实施了完整的解决方案并解释了其背后的概念。


推荐阅读