到底什么是规则引擎?

      提到规则引擎,很多人都是陌生的,当你打开百度可能会搜到非常多的关于规则引擎的信息。比如有广告、推荐、技术文章等等。随着时代的进步,发展趋势,规则引擎也成为了很大部分低代码平台的核心,甚至你在搜索规则引擎关键字时,都会附带这低代码的字样。这可能说得有点远,我主要想表达的是规则引擎已经逐渐被更多企业所应用。这并不限于只有Drools。

上图来自百度百科

    对于程序员或是公司来说,研究开源的规则引擎所带来的风险更小,也更可控。(注:我想说开源的技术或框架是帮我们做了很多事,但同样它代表一张白纸,需要我们自己去绘画)

        自2016年中旬我开始接触并深入研究Drools规则引擎,在当年所谓Drools规则引擎的资料,真的是少得可怜。能查找到的关于Drools规则引擎的定义应该只有百度百科了。

                                                                           上图来自百度百科

   

如果你访问了Drools规则引擎的官网,并找到它的博客,有一篇文章是由Mark Proctor写的,

什么是规则引擎 - KIE Community

https://blog.kie.org/2006/05/what-is-a-rule-engine.html

    有兴趣你也可以访问这个地址。Mark Proctor是Drools规则引擎的大师,我截取部分放到本文里

                                                                               上图来自kie论坛

     我对Mark Proctor大师这段话理解是,Drools是规则引擎,更准确的是说它是一个生产规则的系统,其中“Production Rule” 源于一种“Formal grammar”,而规则引擎被认为是一种精确描述形式语言的抽象结构,简单的理解为我们在代码上描述的一组规则。“Production Rules”被认为是一种“人工智能”,是基于规则实现的专家系统一种方式。

     规则引擎呢是一个含糊的东西,因为它可以成为任何形式的规则系统,这些规则可以用在数据来产生结果。其中包括如表单验证和动态表达式引擎的简单系统,在“How to Build a Business Rules Engine(2004)”的例子就说明这种模糊性的例证,这是由名叫马尔科姆·奇泽姆(Malcolm Chisholm)提出的。Mark Proctor大师接着说马尔科姆·奇泽姆(Malcolm Chisholm)当时并不知道规则引擎差异的微妙之处,希望通过一些方式来帮助改进Drools引擎。而jBPM在其决策节点中使用expressions和delegates;它被应用在工作流中做转换,在每个节点上,它评估一条规则,该规则指示要进行的转换---这也是一个规则引擎。虽然“Production Rule System”是一种规则引擎(专家系统),但前面提到的“验证”和 “表达式规则引擎”并不是专家系统。

    最后一段话是Mark Proctor大师对“Production Rule System”的定义,可以理解为“Production Rule System”是以“knowledge representation ”为重点 翻译为知识表,以简洁、模糊、声明的方式表达propositional和逻辑。它的核心是一个推理引擎,能扩展大量的规则和fact,通过“conflict resolution”的策略来调试多规则同时执行。规则系统有两种执行方式,Forward Chaining 和 Backward Chaining,可以简单为前向推荐与后向推荐。实现这两者的系统称为“Hybrid Production Rule Systems” 直译过来就是混合生产规则系统。理解这种操作操作是理解生产规则不同的关键。

    Forward Chaining 和 Backward Chaining我在一些博客上搜到一些说明,有兴趣可以访问看看

Knowledge命题逻辑形式推演

https://blog.csdn.net/Suyebiubiu/article/details/103187573

下面的内容是我对Drools规则引擎的理解:   

      我研究Drools规则引擎这些年以来,要说百度百科说得是否正确,这不好定义,只能说介绍的很模糊,很笼统,这样的解释对于做技术调研或是应用到项目上并不友好;Mark Proctor大师所定义的Drools规则引擎对于初学者来说,比较难以理解,需要对他说的knowledge 、 Forward Chaining有一定的理解才能明白。而我更喜欢用自己的话下定义,所以我对Drools规则引擎的定义是:

    首先Drools规则引擎是开源的,社区与迭代速度非常快,并且它有一个款workbench的项目思想也是超前的,我更喜欢称它是Web IDE。Drools规则引擎是有一定学习成本的,虽说是它的底层是Java,但它有自己独特的语法。结合它所使用的算法、底层设计及思维方式,它是高效的,无论是在执行的效率,还是对业务的支持上都非常出色。

    在国内非常多的公司和程序员基本上都以动态规则设计思维来对Drools规则引擎进行扩展,将复杂且变化频繁的业务规则从硬编码中释放出来,可以通过Drools规则引擎的语法或是一些高级用法,如决策表、决策树、积分卡、规则流、领域语言等方式存放在文件、文本或数据库表中。通过Drools规则引擎提供的方式来构建知识库等。可以使业务或需求的变更不需要重启服务甚至程序员、产品经理的干涉就能在生产环境上生效,你可以理解这是动态规则。下图就是引入规则引擎前后不同的模式。

上图源于《Drools规则引擎技术指南》

Drools规则引擎的资料与交流

《Drools规则引擎技术指南》是国内首本关于Drools规则引擎的中文书籍。更多内容可上京东或当当购买正版书籍。

Drools博客专栏

https://blog.csdn.net/u013115157?t=1

    

Drools官网

www.drools.org

Drools源码

https://hub.nuaa.cf/kiegroup/drools/tags

Drools技术交流群 676219749、974369023

技术不分好坏,合适的地方使用合适的技术;优雅的代码,清晰的逻辑,给你的每一个项目更好的归宿。


微信公众号:程序猿之塞伯坦,欢迎大家阅览和点评
我的代表作:《Drools规则引擎技术指南》,请多多支持

图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值