Drools与动态加载规则文件

news/2025/2/27 10:27:26/文章来源:https://www.cnblogs.com/jelly12345/p/18564240

Drools简介
Drools是一款基于Java的开源规则引擎,将规则与业务代码解耦。规则以脚本的形式存储在一个文件中,使规则的变化不需要修改代码,重新启动机器即可在线上环境中生效。
规则引擎实现了业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入、解释业务规则,以及基于业务规则做出业务决策,从而提供极大的编程便利。
对系统使用人员来说:

  • 将业务规则的创建、修改、维护透明话;
  • 提高业务灵活度;
  • 减少对开发人员的依赖;
  • 避免业务升级带来的风险

对开发人员来说:

  • 增加代码灵活性;
  • 降低系统维护成本,提高系统可维护性;
  • 解耦业务与规则,减少代码修改成本;
  • 简化系统架构,优化应用结构;

Drools架构图

 

快速开始
1. Maven导入

  <drools.version>7.23.0.Final</drools.version>
<lombok.version>1.18.2</lombok.version><dependency><groupId>org.kie.server</groupId><artifactId>kie-server-client</artifactId><version>${drools.version}</version>
</dependency><dependency><groupId>org.drools</groupId><artifactId>drools-compiler</artifactId><version>${drools.version}</version>
</dependency>

2.Java整合
框架: spring-boot 、Lombok

@Data
public class Person {
private String name;
private int age;
}

3.drl文件的编写,resources下创建rules目录,并编写

import  com.mkun.drools.bean.Person;  //导入对应bean [?*]
dialect  "mvel"rule "drools-test"
when$person: Person(age < 16 || age > 50)
thenSystem.out.println("该人员年龄不符合规则");
end

在对应路径添加Kie文件,resources下创建META-INF文件夹,并且创建文件kmodule.xml

<kmodule xmlns="http://www.drools.org/xsd/kmodule">
<kbase name="rules"><ksession name="all-rules"/>
</kbase>
</kmodule>

4.编写Test测试

@RunWith(SpringRunner.class)
@SpringBootTest
public class DroolsApplicationTests {private static KieContainer container = null;
private KieSession statefulKieSession = null;@Test
public void contextLoads() {KieServices services = KieServices.Factory.get();container = services.getKieClasspathContainer();statefulKieSession = container.newKieSession("all-rules");Person person = new Person();person.setAge(15);person.setName("Drools");statefulKieSession.insert(person);statefulKieSession.fireAllRules();statefulKieSession.dispose();
}
}

5.动态加载规则

@RunWith(SpringRunner.class)
@SpringBootTest
public class DroolsApplicationTests {private static KieContainer container = null;
private KieSession statefulKieSession = null;@Test
public void contextLoads() {String myRule = "import com.asiainfo.bean.Person\n" +"\n" +"dialect  \"mvel\"\n" +"\n" +"rule \"age\"\n" +"    when\n" +"        $person : Person(age<16 || age>50)\n" +"    then\n" +"        System.out.println(\"这个人的年龄不符合要求!(基于动态加载)\");\n" +"end\n";KieHelper helper = new KieHelper();helper.addContent(myRule, ResourceType.DRL);KieSession ksession = helper.build().newKieSession();Person person = new Person();person.setAge(12);person.setName("Test");ksession.insert(person);ksession.fireAllRules();ksession.dispose();}
}

上述测试说明Drools可以基于字符串配置规则,那么我们在开发时就可以将自己配置的规则存到数据库等存储介质中,实时调用动态加载配置规则。

汇总:Drools动态加载规则,可以把规则存储至数据库中,然后动态加载规则生成drl文件

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/839776.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Drools决策表实践运用

决策表使用方式在Drools中,决策表通常是以Excel(.xls或.xlsx)或者CSV格式存储的,这些格式的决策表并不能直接被Drools执行。它们需要被转换成Drools规则语言(DRL)的文本格式,之后才能被编译和执行。Drools提供了工具来帮助完成这一转换,主要使用org.drools.decisiontab…

Economies of Scale

规模经济(Economies of Scale) 规模经济指的是随着生产规模的扩大,单位产品的平均成本下降的现象。这通常发生在企业生产规模增加到一定程度时,由于固定成本(如厂房、机器设备等)被更多的产品分摊,单位产品的固定成本降低,同时由于规模的扩大,企业可能会享受到采购原材…

Java更新数据库报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET

在Java中,使用mybatis-plus更新实体类对象到mysql,其中一个字段对应数据库中json数据类型,更新时报错:Data truncation: Cannot create a JSON value from a string with CHARACTER SET binary.一、现象 在Java中,使用mybatis-plus更新实体类对象到mysql,其中一个字段对应…

【Azure Cloud Service】在Windows系统中抓取网络包 ( 不需要另外安全抓包工具)

通常,在生产环境中,为了保证系统环境的安全和纯粹,是不建议安装其它软件或排查工具(如果可以安装,也是需要走审批流程)。本文将介绍一种,不用安装Wireshark / tcpdump 等工具,使用Windows系统自带的 netsh trace 命令来获取网络包的步骤:副标题:Cloud Service Extend…

hhdb数据库介绍(8-1)

部署 自动部署 自动部署为管理平台在界面中支持自动化安装部署计算节点集群的功能。目前管理平台从V2.5.0及以后拥有“集群部署”、“单机部署”两个自动化安装功能。“集群部署”适合从0开始一次性部署整套计算节点集群的场景,“单机部署”适合再已部署好的集群上新增个别集群…

玩手机打电话行为识别检测系统

玩手机打电话识别检测系统通过在指定区域安装监控摄像头,玩手机打电话识别检测系统实现7*24小时的实时监测,一旦发现有员工在上班时间抽烟或打电话,系统会立即触发告警机制。告警信息不仅会通过系统内部的警报系统发出,还会通过短信或邮件等方式通知管理人员,确保管理人员…

AO3400A-ASEMI中低压N沟道MOS管AO3400A

AO3400A-ASEMI中低压N沟道MOS管AO3400A编辑:ll AO3400A-ASEMI中低压N沟道MOS管AO3400A 型号:AO3400A 品牌:ASEMI 封装:SOT-23 批号:最新 最大漏源电流:5.8A 漏源击穿电压:30V RDS(ON)Max:30mΩ 引脚数量:3 芯片个数: 沟道类型:N沟道MOS管、低压MOS管 漏电流:ua 特…

图神经网络在欺诈检测与蛋白质功能预测中的应用概述

金融交易网络和蛋白质结构存在共同特征:它们在欧几里得(x, y)空间中难以建模,需要通过复杂、大规模且异构的图结构进行精确编码和表征。图是表示关系数据的自然结构范式,特别是在金融网络和蛋白质结构等领域。这类图能够捕捉实体间的复杂关系和交互模式,例如金融系统中的…

高空抛物智能抓拍摄像头

高空抛物智能抓拍摄像头基于C语言和Python视觉算法识别技术,高空抛物智能抓拍摄像头实现了对高空抛物行为的实时监控和预警。该系统通过安装在现场的监控摄像头,对小区现场进行7*24小时不间断的监测,当监控摄像头捕捉到可疑行为时,系统会立即进行分析,一旦确认为抛物行为,…

人员工服穿戴检测系统

人员工服穿戴检测系统基于先进的视觉算法,人员工服穿戴检测系统利用Python结合Opencv通过现场安装的监控摄像头实时捕捉画面,识别其是否正确穿戴了工作服、安全帽、护目镜、口罩和工鞋等个人劳保用品。一旦系统检测到有员工未按规定穿戴相应的劳保用品,它会立即进行抓拍,并…

CDH6.3.2集成ranger2.1.0

有需要已经打好的包和源码的 打赏一杯咖啡 30,发送邮件463951510@qq.com每天进步一点,加油!

【往届知网均已检索】第三届数字化经济与管理科学国际学术会议(CDEMS 2025)

会议亮点:1.知网检索稳定:AEBMR-Advances in Economics, Business and Management Research(ISSN: 2352-5428)出版2.参会人数多,口头报告和海报展示均提供正式的参会证书3.线下参会包含三餐,茶歇、会议物料:定制手提袋、会议手册、会议通知、会议日程、会议邀请函4.举办地…