什么是规则引擎?

Drools规则引擎 Drools(Drools Rule Engine)是一个开源的规则引擎,它主要用于在Java应用程序中实现规则管理。Drools规则引擎将规则定义和管理从应用程序代码中分离出来,使得规则可以独立于应用程序运行。这样可以提高规则的可靠性和可维护性,同时也可以使得规则的更新和管理更加方便。将规则定义和管理从应用程序代码中分离出来,使得规则可以独立于应用程序运行。提供基于规则的访问和操作数据的功能,例如过滤、排序、检索等。支持动态规则扩展和维护,可以根据需要添加、删除或修改规则。 阅读详情

 

公众号来源:孤独烟  作者:孤独烟


烟哥的文章也是有意思啊!给大家分享一下~

一天,朱斯参加了一场code Review研讨会。会上的一群人正在讨论着如何对祖传代码进行变更,大家你一言,我一语,场面十分热闹!

突然,只见人群中的一个人满面愁容,说道:"昨天在项目中看到下面这样一段代码,分支太多了!维护起来很烦啊!"

if(day == "周一"){  System.out.println("I will play basketball");}else if (day == "周二"){  System.out.println("I will do shopping");}else if (day == "周三"){  System.out.println("I will wash clothes");}else if(...) {    ...}//很烦,写不下去了"周一"){
  System.out.println("I will play basketball");
}else if (day == "周二"){
  System.out.println("I will do shopping");
}else if (day == "周三"){
  System.out.println("I will wash clothes");
}else if(...) {
    ...
}//很烦,写不下去了

研讨会上的另一个人提道:"这个容易啊,可以用策略模式来简化if else的结构!毕竟策略模式强调的就是数据与业务逻辑分离,针对每一个分支写一个策略就好啦!"

朱斯说道:"用策略模式来简化if else的代码结构固然可以,但是这里有一个前提,就是分支比较少,一般就十来个分支差不多了,可以用策略模式来简化!但是如果我有上万个分支呢?你难道做上万个策略?就算这几万个策略真给你写出来了,你以后怎么维护?以后要修改策略,改完再重新部署一次么?太不灵活了啊!"

此时,刚好有一位DBA大神也参加了这场code Review研讨会!他说道:"要不考虑一下存储过程?将变化的策略放在存储过程里维护,这样至少修改了策略,不用部署原来的应用!"

听到这里,朱斯实在听不下去了,猛的回了一句:"不行!不行!用存储过程可读性更差,而且性能还不好!更可怕的是,如果你用的是MySQL,调试存储过程是会要人命的!"

"唉,这也不行,那也不行,究竟该怎么办?"人群中充斥着吵闹声!

朱斯摆了摆手,示意大家静静,说道:"我们需要明白现在的需求是什么?

大家问道"有满足这样需求的中间件么?"

朱斯说道:"有的!那就是规则引擎!在一些强大的规则引擎中,可以像下面这样优化,使数据和逻辑分离!"

640?wx_fmt=png

朱斯补充道:"像上面这张图这样,我们将业务逻辑抽取到单独的规则文件里进行维护,实现了业务和数据分离!至于数据如何传入规则引擎呢,注意看代码里有一句叫kieSession.insert("星期一"),这样规则引擎就知道自己有一个字符串内容为星期一的入参!而且,大家注意看哦,规则文件内容是可以用中文编写的!"

"哇塞、还能用中文来表述业务逻辑!这样非技术人员也能看得懂呀!"人群中传来一阵惊叹声!

朱斯补充道:"不仅如此,当你新加一个条件分支的时候,直接新增一个规则文件就好啦!例如,我们要多加一个判断周二要去shopping!那我们就在规则包中新增一个文件,内容如下!"

rule "test02"    when        如果今天是星期二    then        我要去购物  end
    when
        如果今天是星期二
    then
        我要去购物  
end

"大家看,我们在规则包中新增上述规则文件后,你只要让你的应用程序从新加载一次规则包就好啦!完全不用重启原来的应用程序!"朱斯说完话,面带笑容的看着大家。

众人看着朱斯的讲解,纷纷称奇!

乐于输出干货的Java技术公众号:Java3y。公众号内有200多篇原创技术文章、海量视频资源、精美脑图,关注即可获取!

640? 640?wx_fmt=jpeg


有趣的灵魂在等你

长按扫码可关注 


推荐阅读:

【规则引擎】一、规则引擎简介 (第一章规则引擎学习入门之规则引擎简介)# 系列文章目录 规则引擎简介前言一、为什么要使用规则引擎?1.不使用规则引擎的规则执行现状2. 规则引擎优点二、规则引擎的功能三、规则引擎的分类实现1.事中规则实现2.事后规则实现四、规则引擎调研1.开源规则引擎2.商业规则引擎五、Drools六、Aviator 前言 规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据业务规则做出业务决策。–来自百 阅读详情

相关推荐

硬件工程师的蜗牛成长路

1、《模拟电路课程》R/L/C/继电器/光耦/二极管/三极管/MOS管磁珠/ESD/TVS/肖特基二极管/稳压二极管/保险丝/GDT/TSS/光耦/MOS/运放/BJT比较器/面板开关/按键开关/拨码开关/BUCK/LDO/电源防护器件LM5069单输出PLL/多路输出PLL/单端晶振/差分晶振/晶体(这方面不熟悉,待以后补充)1)速度传感器2)温度传感器3)倾斜角传感器4)火焰传感器5)红外传感器6)呼吸心跳采集chaunganqi1)数字隔离 电平转换芯片/磁隔离/专用隔离芯片。

caozhaokun的博客 1982

规则引擎的架构设计与系统实现

ruleEngine 业务规则、配置化编程、政策引擎、规则引擎 目录 ruleEngine 1. 背景 2. 方案考察 2.1. 硬编码: 2.2. Drools: 2.3. Urule: 2.4. 自研规则引擎 3. 能力要求 4. 名词解释 5. 概要设计 5.1. 功能模块划分 5.1.1. 公式推理器Calculator: 5.1.2. 指标解析器FormulaExecuter: 5.1.3. 动作执行器ActionExecuter: 5.1.4. 模型执行器.

qq_30615201的博客 1万+

Vivado安装教程:多版本共存的配置技巧

详解Vivado安装教程中的多版本共存配置技巧,帮助用户在同一系统中管理不同版本的Vivado开发环境,提升开发效率与兼容性,适用于需要切换版本的FPGA开发者。

weixin_35257663的博客 1775

规则引擎简单介绍以及与设计模式之间的关系

定义:是指对业务系统的规则进行抽象,使之成为通用模型。作用:帮助应用程序开发人员构建一套标准化的业务规则和算法。规则引擎可以简化业务架构,让开发人员更容易理解业务逻辑,并在一个开发环境中提供一致易用的工具。主要作用有:降低开发人员使用复杂代码的难度;降低数据录入工作量;优化功能代码实现,提高开发效率;灵活扩展应用程序功能,快速上线新功能;增加应用程序的灵活性。所以总来说规则引擎是责任链或者策略模式等其他软件模式的组合之后的上层封装,而这些独立的设计模式则是规则引擎的底层实现。

weixin_66196770的博客 1266

D触发器版图设计的艺术:最小化面积与最大化性能的平衡之道

本文探讨了D触发器版图设计中如何平衡最小化面积与最大化性能的核心挑战。通过分析晶体管布局、互联优化、时钟分布等关键策略,结合先进制程下的功耗与信号完整性考量,为数字IC工程师提供了从基础优化到制造验证的实用解决方案,助力实现高性能、低面积的芯片设计。

aa123的博客 910

YOLOv11改进策略【卷积层】| CVPR-2024 PKI Module 获取多尺度纹理特征,适应尺度变化大的目标

PKI Module是。

Limiiiing的博客 2708

【转】什么是规则引擎(Drools、OpenL Tablets、Easy Rules、RuleBook)

什么是规则引擎(Drools、OpenL Tablets、Easy Rules、RuleBook) 发表于:2021年1月23日 分类:Drools,规则引擎 标签:Drools,Easy-Rules,OpenL Tablets,RuleBook,规则引擎 什么是规则引擎 规则引擎是根据一些算法执行规则的一些列软件系统。规则引擎整合了传入系统的Fact集合和规则集合,从而去触发一个或多个业务操作。规则通常以声明式的方式在业务代码中实现,我们可能以为它很少会被改变。但事实上,这些...

雨的博客 2万+

让 SAP HANA 查询飞起来:彻底避开隐式类型转换的性能暗礁

SAP HANA性能优化:警惕隐式类型转换陷阱 隐式类型转换是SAP HANA项目中常见的性能隐患。当SQL表达式两侧数据类型不匹配时,系统会自动进行类型转换,这种看似便利的操作可能导致: 过滤条件无法下推,扫描范围扩大 列存引擎优势丧失,触发中间结果物化 执行计划走向低效路径 治理方案包括: 从源头统一数据类型,确保常用比较字段类型一致 将显式转换应用于常量而非整列 使用生成列预先转换存储,避免运行时计算 排查方法: 通过SQL Plan Cache定位高频查询 分析执行计划中的转换迹象 重点关注VARC

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 11万+

五大常用规则引擎简介

在很多企业的 IT 业务系统中,会有大量的业务规则配置,而且随着企业管理者的决策变化,这些业务规则也会随之发生更改。为了适应这样的需求,我们的 IT 业务系统应该能快速且低成本的更新。一般的作法是将业务规则的配置单独拿出来,使之与业务系统保持低耦合,通过接受输入的数据,进行业务规则的评估,并做出业务决策。配合规则引擎提供的业务,不用编码就可以快速实现复杂的业务规则,并且,规则集中管理,可提高业务规则的可重用性。决策结果的积累和回溯,可以反向推动规则的迭代优化,帮助组织形成一个不断演进的商业智能分析知识库。

sduhaf的博客 1万+

13《CAN总线五种错误类型,故障判定全解析》

CAN总线规定,发送节点在发送完EOF字段后,会留出一个ACK Slot(应答槽)。这个槽里,发送节点自己会输出隐性电平(逻辑1),然后“期待”至少有一个其他节点在这个槽里把它拉成显性电平(逻辑0)。如果这个槽结束时仍然是隐性电平,发送节点就判定:刚才那帧报文,没有任何一个节点成功接收——这就是应答错误。简单说,就是“我喊了一嗓子,却没人应声”。

2401_88858637的博客 264

YOLOv13零基础手把手教程:在 YOLOv13 中集成 SFSConv,YOLOv13让目标检测更上一层楼

YOLOv13本教程详细介绍了如何在YOLOv13中集成SFSConv模块以提升目标检测性能。YOLOv13 SFSConv创新性地结合了分数伽柏滤波和分数傅里叶变换,通过空间处理单元(SPU)和频率处理单元(FPU)解耦处理特征。实验表明,该模块可使准确率提升5.21%,mAP提高11.45%。教程从原理分析到代码实现,系统讲解了SFSConv的数学基础、模块设计,并提供了在YOLOv13中集成该模块的详细步骤,包括配置文件修改、核心代码实现等。

FJN110的博客 2176

后端开发——规则引擎简介(Drools)

什么是规则引擎? 规则引擎带来的好处;Drools案例 规则引擎的工作原理及应用场景 常见的规则引擎及对比 工作流引擎与规则引擎有什么不同

weixin_43739821的博客 8090

Python爬虫实战:逆向工程与异步处理攻克Pinterest无限滚动瀑布流

我们将从零开始,逐步分析其数据接口,构建一个功能完整的爬虫,并深入探讨反爬虫策略的应对、性能优化以及数据存储等高级主题。: 在实际爬取中,你需要先访问一次Pinterest主页,获取初始的Cookie和CSRF Token,然后再发起API请求。: Python爬虫,Pinterest,无限滚动,瀑布流,异步IO,httpx,逆向工程,API接口,动态内容,反爬虫。你会很快发现一些关键的请求模式。:页面初始加载有限内容,随着用户滚动,新的图片块通过AJAX动态加载,实现“永无止境”的浏览。

2201_76125261的博客 551

规则引擎 Drools

规则引擎 Drools 文章目录规则引擎 Drools1. 问题引出2. 规则引擎概述2.1 什么是规则引擎2.2 使用规则引擎的优势2.3 规则引擎应用场景2.4 Drools介绍3.Drools入门案例3.1 业务场景说明3.2 开发实现3.3 小结3.3.1 规则引擎构成3.3.2 相关概念说明3.3.3 规则引擎执行过程3.3.4 KIE介绍4. Drools基础语法4.1 规则文件构成4.2 规则体语法结构4.3 注释4.4 Pattern模式匹配4.5 比较操作符4.5.1 语法4.5.2 操

Backend Engineer API Integration | System Design | Architecture Growth 5845

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【规则引擎】

规则引擎

小祥的博客 2万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Java各种规则引擎

https://www.jianshu.com/p/41ea7a43093c https://segmentfault.com/a/1190000020330741?utm_source=tag-newesthttps://baike.baidu.com/item/%E8%A7%84%E5%88%99%E5%BC%95%E6%93%8E/3076955?fr=aladdin 一、规则引擎使用场景: 用于页面,流程,扩展点实现的选择;输出结果:实现的位置; 编排无数的条件积木和行为积木,达到业务逻

yb223731的博客 2万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

规则引擎概述及选型

规则引擎概述及选型

NarutoConanKing的博客 3万+

1、什么是规则引擎?

一、什么是规则引擎 当我们在对复杂的业务进行开发时,程序本身逻辑代码和业务代码互相嵌套、错综复杂,同时维护成本高,可拓展性差。 规则引擎即是:可降低复杂业务逻辑组件复杂性、降低应用程序的维护和可扩展性成本的组件! 规则引擎实际上就是一个推理引擎,用于匹配facts(事实,我们可以理解为数据)和rules(规则)。 推理引擎将事实与产生式规则进行匹配(模式匹配),以推出结论! 二、为什么使用规则引擎 背景:业务规则经常变化,系统需依据业务的变化,实现快速、低成本的迭代更新。 因此,为了快速、低成本的更新,我们

localhost01 2万+

Thingsboard规则引擎详解,TB规则引擎如何使用

本次对于thingsboard的规则引擎的基本概念、可以使用的能力、规则引擎的组成,以及各个规则节点的用法、规则模型的使用特点做了简单的介绍。相信通过本次的讲解,对于规则引擎的基础、能力、用法有了大概的了解,具体的规则引擎的实战讲解,规划在设备物联接入之后,再进行演示。基于ThingsBoard二次开发的物联网平台:ThingsKit物联网平台,开箱即用的物联网低代码平台,提供N+1+N的产品服务体系,帮助企业快速搭建稳定可靠的物联网系统平台,为企业节省大量时间及人力成本。

云腾五洲官方博客 9530

规则引擎以及blaze 规则库的集成初探之一——规则引擎简介

最近刚刚接触JAVA的规则引擎,一般的系统而言,业务不是非常复杂,而且变化少,因此很少采用什么规则引擎,最近接触了一个规则引擎的系统,是使用BlazeSoft公司的Blaze来实现的,自己对它正在了解中,把具体的实现相关的知识,写下来,以待进一步的整理。 本系列文章主要先人云亦云地介绍一下规则引擎的背景知识(本人了解规则引擎不多),接着介绍JSR94的API和具体的实现,以及blaze自己提供...

xiajingsong的博客 3082

规则引擎

本文对Java规则引擎与其API(JSR-94)及相关实现做了较详细的介绍,对其体系结构和API应用有较详尽的描述,并指出Java规则引擎,规则语言,JSR-94的相互关系,以及JSR-94的不足之处和展望   复杂企业级项目的开发以及其中随外部条件不断变化的业务规则(business logic),迫切需要分离商业决策者的商业决策逻辑和应用开发者的技术决策,并把这些商业决策放在中心数

从前有座山 3708

规则引擎之Drools

一、什么是Drools? Drools 是一个基于Charles Forgy’s的RETE算法的,易于访问企业策略、易于调整以及易于管理的开源业务规则引擎,符合业内标准,速度快、效率高。 业务分析师人员或审核人员可以利用它轻松查看业务规则,从而检验是否已编码的规则执行了所需的业务规则。 Drools 是用Java语言编写的开放源码规则引擎,使用Rete算法对所编写的规则求值。Drools允许使用声...

点点的博客 4752

规则引擎Drools

本文介绍了规则引擎(BRMS)的概念、功能和应用。规则引擎是一种系统,用于将业务决策从应用程序代码中分离出来,通过预定义的语义模块编写业务规则,由用户或开发者进行配置和管理。市面上具体的规则引擎产品包括Drools、VisualRules和iLog等。规则引擎的主要组成部分包括工作内存(Working Memory)、规则库(Rule Base)和推理引擎(Inference Engine)。

永远相信美好的事情即将发生 1440

规则引擎闲谈

1、什么是规则引擎 规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。 因为规则引擎将复杂的业务逻辑从业务代码中剥离出来,所以可以显著降低业务逻辑实现难度;同时,剥离的业务规则使用规则引擎实现,这样可以使多变的业务规则变得可维护,配合规则引擎提供的良好的业务规则设计器,不用编码就可以快速实现复杂的业务规则,同样,即使是完全不懂编程的业务人员,也可以轻松上手使用规则引擎来定义复杂的业务规则。 业务系统运行过程中难免会发

言尭的博客 8575
上一篇: 如何给老婆解释什么是 Master-Slave
下一篇: 使用SpringData JPA 实现分页
Java3y
Java3y 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 1万+粉丝 509原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值