提到规则引擎,很多人都是陌生的,当你打开百度可能会搜到非常多的关于规则引擎的信息。比如有广告、推荐、技术文章等等。随着时代的进步,发展趋势,规则引擎也成为了很大部分低代码平台的核心,甚至你在搜索规则引擎关键字时,都会附带这低代码的字样。这可能说得有点远,我主要想表达的是规则引擎已经逐渐被更多企业所应用。这并不限于只有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规则引擎技术指南》,国内首本Drools的中文书籍,请多多支持
今年的7月1号是《Drools规则引擎技术指南》一书出版的第五个年头。作为国内首本关于Drools规则引擎的中文书籍,我深感荣幸。回顾这五年,我内心是激动的也是自豪的。在此,我要感谢每一位读者,是你们的支持和反馈让我感到这本书的价值。还要特别感谢北京大学出版社每一位为我的书所负出辛勤的工作人员,没有你们的帮助我的书也不会顺利出版。
五年来,这本书不仅仅是我的一个作品,更是我与大家沟通交流的桥梁。通过这本书,我收到了许多宝贵的反馈,了解到读者们在实际应用中的成功经验和问题。这些反馈让我深感欣慰,也让我不断反思和成长。当然,书中也存在一些小问题。在这里,我要向大家致歉,并感谢大家的包容和理解。这些问题将成为我未来努力改进的方向,同时激励着我写出更优秀的作品,我非常希望可以通过我的努力可以降低Drools规则引擎的学习成本,也期望有更多热爱Drools规则引擎的技术专员加入到我新作品的创作中来,一同为国内Drools规则引擎的使用尽一份力。我将继续努力,不断学习和进步,为大家带来更多有价值的内容。
最后,再次感谢每一位支持和陪伴我的读者,愿你们在追求知识的道路上收获满满,工作中一帆风顺。
标签:Drools,Proctor,到底,Mark,引擎,规则,Production From: https://blog.csdn.net/u013115157/article/details/142970534