首页 > 其他分享 >到底什么是规则引擎?

到底什么是规则引擎?

时间:2024-10-16 09:46:44浏览次数:3  
标签:Drools Proctor 到底 Mark 引擎 规则 Production

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

相关文章

  • java计算机毕业设计工作流引擎在OA办公系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息技术的发展,办公自动化(OA)系统已成为现代企业提升管理效率和决策支持能力的重要工具。工作流引擎作为OA系统的核心组件,负责流程的定义、执行和......
  • 深入解析CSS中的!important规则
    深入解析CSS中的!important规则一、引言在CSS的世界里,样式的优先级通常由选择器的特异性、在样式表中的位置(后来的规则覆盖先前的规则)以及继承等因素决定。然而,!important规则就像一把双刃剑,它可以打破这些规则,赋予某些样式声明更高的优先级。本文将深入探讨!important的......
  • Java的引擎效验报错-java.lang.VerifyError
    java包直接修改bytecode,经常会报错java.lang.VerifyError,包含非常多种的检查直接修改引擎dll文件去除效验jvm.dll-X64-V21.0.0.0.text:000000018084438F488D0DDA422100learcx,aVerifyingMetho;"Verifyingmethod%s".text:00000001......
  • Midjourney的指令规则是什么?Midjourney的命令介绍
    Midjourney的指令规则包括/imagine用于图像生成,/info查看账户信息,/ask提问,/help获取帮助,/fast和/relax调整速度,/stealth和/public设置隐私,/settings个性化设置,/blend融合图片,/preferoptionset和/prefersuffix自定义变量,以及使用::分隔关键词等高级技巧。这些指令助力用户高效创......
  • 循序渐进丨MogDB 数据库查询重写规则lazyagg详解
    问题概述在MogDB和openGauss中,参数rewrite_rule用于控制查询重写,本文介绍查询重写规则lazyagg。在未设置rewrite_rule=lazyagg的情况下,子查询中有GROUPBY会先进行GROUPBY;lazyagg表示延迟聚合运算,目的是消除子查询中的聚合运算,先关联再GROUPBY;当子查询中有GROUPBY,子......
  • B 站 硬币奖励不合理规则 All In One
    B站硬币奖励不合理规则AllInOne......
  • 人人都在说的AIGC,到底是个啥?
    前言AI已经火了好一阵子,AI、AGI、AIGC、机器学习、深度学习、NLP(自然语言处理)、LLMs(大语言模型)、GAN(生成对抗网络),各种概念五花八门,也许你也曾经困惑过。本文将带大家浅浅地了解一下,这些名词概念都是什么意思,以便未来能够更好地深入学习AI领域的其他知识。概念1:AI(人工智......
  • 移动端设备唯一ID的生成规则
    对于App云平台系统,如何唯一地识别移动设备是非常重要的。否则,每次用户在设备上卸载掉应用再重新安装,后端系统只能把这个用户当作一个全新的用户了。Android上识别设备的唯一性,因为这个圈太乱,所以设备本身的任何标识都是无法直接用作设备唯一标识的。iOS是系统强力限制被唯一......
  • 交叉编译器的命名规则是什么?
    交叉编译器(cross-compiler)是用来编译可在与编译器运行环境不同的架构或操作系统上运行的代码的工具。交叉编译器的命名通常遵循一个约定,以便能够描述编译器的目标平台。这个命名规则主要包含以下几个组成部分,通常顺序为:目标架构(TargetArchitecture):表示编译器生成代码的目标处......
  • 斯坦福大学人工智能图书馆收藏的这本大模型黑书到底有何魔力?
    给大家送福利啦!内行人都在学的大模型黑书,外网爆火的LLM应用手册,由清华大学出版社出版的《大模型应用解决方案——基于GPT-3、ChatGPT、GPT-4等Transformer架构的自然语言处理》我已将这本大模型黑书免费分享出来,需要的小伙伴可以扫取。Transformer模型介绍Transformer......