规则引擎
文章平均质量分 52
主要讲解学习Drools规则引擎,easyRule规则引擎
程序员路同学
九八年程序员一枚,喜欢钻研技术,从事后端开发,正努力向全栈发展,如果你有更好的技术分享,欢迎私信留言
展开
-
规则引擎Drools使用 第十六篇 动态加载drools规则文件
前面讲的的都是读取drool文件,然后加载到规则引擎,如果我们的规则是灵活配置的,那么我们的规则如何动态的写到规则引擎中呢,下面介绍下动态读取规则,并加载到规则引擎中。 首先我们需要动态拼接规则,将规则拼接为字符串,然后通过 kieHelper.addContent(drl, ResourceType.DRL);将字符串规则配置徐欢欢为DRl格式写入规则引擎。具体怎么使用呢,下面介绍下使用步骤。首先将规则拼接为String字符串 private Stri......原创 2021-07-08 10:00:25 · 4414 阅读 · 2 评论 -
规则引擎Drools使用 第十五篇 Spring Boot整合Drools
在实际开发中,主要使用的还是以Spring Boot为主,所有下面介绍下Spring Boot整合Drools.Spring Boot整合Drools 引入依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId>原创 2021-07-08 09:47:00 · 364 阅读 · 0 评论 -
规则引擎Drools使用 第十四篇 Spring整合Drools
使用Spring管理整合drools,首先需要引入依赖,然后配置spring文件。引入依赖 <properties> <drools.version>7.10.0.Final</drools.version> <spring.version>5.0.5.RELEASE</spring.version> </properties> <dependen原创 2021-07-08 09:37:32 · 442 阅读 · 0 评论 -
规则引擎Drools使用 第十三篇 Drools 编写规则文件的规范
我们在进行drl类型的规则文件编写时尽量遵循如下规范:所有的规则文件(.drl)应统一放在一个规定的文件夹中,如:/rules文件夹 书写的每个规则应尽量加上注释。注释要清晰明了,言简意赅 同一类型的对象尽量放在一个规则文件中,如所有Student类型的对象尽量放在一个规则文件中 规则结果部分(RHS)尽量不要有条件语句,如if(...),尽量不要有复杂的逻辑和深层次的嵌套语句 每个规则最好都加上salience属性,明确执行顺序 Drools默认dialect为"Java",尽量避免使用di原创 2021-07-08 09:29:26 · 629 阅读 · 0 评论 -
规则引擎Drools使用 第十二篇 Drools 的高级语法之RHS加强
RHS部分是规则体的重要组成部分,当LHS部分的条件匹配成功后,对应的RHS部分就会触发执行。一般在RHS部分中需要进行业务处理。在RHS部分Drools为我们提供了一个内置对象,名称就是drools。本小节我们来介绍几个drools对象提供的方法。halthalt方法的作用是立即终止后面所有规则的执行。如:package testhaltrule "rule_halt_1" when then System.out.println("规则:rule_原创 2021-07-08 09:28:20 · 469 阅读 · 0 评论 -
规则引擎Drools使用 第十一篇 Drools 的高级语法之LHS增强
前面我们已经知道了在规则体中的LHS部分是介于when和then之间的部分,主要用于模式匹配,只有匹配结果为true时,才会触发RHS部分的执行。下面我们会针对LHS部分学习几个新的用法。目录复合值限制in/not in条件元素eval条件元素not条件元素exists规则继承复合值限制in/not in 复合值限制是指超过一种匹配值的限制条件,类似于SQL语句中的in关键字。Drools规则体中的LHS部分可以使用in或者not in进行复合值的匹配。具体...原创 2021-07-08 09:24:50 · 685 阅读 · 0 评论 -
规则引擎Drools使用 第十篇 Drools 的高级语法之function使用
function关键字用于在规则文件中定义函数,就相当于java类中的方法一样。可以在规则体中调用定义的函数。使用函数的好处是可以将业务逻辑集中放置在一个地方,根据需要可以对函数进行修改。函数定义的语法结构如下:function 返回值类型 函数名(可选参数){ //逻辑代码}下面通过一个demo学习它的使用:首先编写一个测试文件:package testfunctionimport com.drools.entity.Student/* 此规则文...原创 2021-07-08 09:16:20 · 1483 阅读 · 1 评论 -
规则引擎Drools使用 第九篇 Drools 的高级语法之query使用
query查询提供了一种查询working memory中符合约束条件的Fact对象的简单方法。它仅包含规则文件中的LHS部分,不用指定“when”和“then”部分并且以end结束。具体语法结构如下:query 查询的名称(可选参数) LHSend写规则文件/resources/rules/query.drl:package testqueryimport com.drools.entity.Student/* 此规则文件用于测试query查询...原创 2021-07-08 09:12:44 · 786 阅读 · 1 评论 -
规则引擎Drools使用 第八篇 Drools 的高级语法之global使用
前面我们已经说过了drools规则的常用属性,以及drools完整规则文件的内容构造,下面来看下drools的几个主要关键字。 package和我们常用的java类里面指定的包概念是一样的,import同样也是表示引用外部类或者方法,这里需要注意的是import只能引用类,和静态方法,这一点一定要注意,import引用的类如果是spring管理bean类是不可以用在when条件里面的,但是可以在then部分调用,这一点要注意。在实际开发中我们的condition条件部分难免不会使...原创 2021-07-08 09:05:46 · 1413 阅读 · 1 评论 -
规则引擎Drools使用 第七篇 Drools 常见的属性
Drools的一些属性Drools中提供的属性如下表(部分属性):接下来分别写一些demo介绍下这些属性的使用。salience属性 salience属性用于指定规则的执行优先级,取值类型为Integer。数值越大越优先执行。每个规则都有一个默认的执行顺序,如果不设置salience属性,规则体的执行顺序为由上到下。看下这个demo:package testsaliencerule "rule_1" salience 9 when ...原创 2021-07-08 08:50:00 · 1083 阅读 · 0 评论 -
规则引擎Drools使用 第六篇 Drools 指定规则运行
我们前面有说道drools指定规则运行,具体使用是在kieSession.fireAllRules()时,通过指定方法来实现运行会指定的规则,下面具体开始讲解如何指定规则。int fireAllRules(org.kie.api.runtime.rule.AgendaFilter agendaFilter);public interface AgendaFilter { boolean accept(org.kie.api.runtime.rule.Match match);}原创 2021-07-07 11:37:33 · 1815 阅读 · 0 评论 -
规则引擎Drools使用 第五篇 Drools内置方法
Drools内置方法 规则文件的RHS部分的主要作用是通过插入,删除或修改工作内存中的Fact数据,来达到控制规则引擎执行的目的。Drools提供了一些方法可以用来操作工作内存中的数据,操作完成后规则引擎会重新进行相关规则的匹配,原来没有匹配成功的规则在我们修改数据完成后有可能就会匹配成功了。创建如下实体类:import java.util.List;/** * 学生 */public class Student { private int id; ...原创 2021-07-07 11:24:02 · 673 阅读 · 0 评论 -
规则引擎Drools使用 第三篇Drools规则引擎简单使用
在项目中使用drools时,即可以单独使用也可以整合spring使用。如果单独使用只需要导入如下maven坐标即可: <drools.version>7.5.0.Final</drools.version> <!--drools--> <dependency> <groupId>org.drools</groupId> <artifactId&.原创 2021-07-07 11:21:37 · 961 阅读 · 2 评论 -
规则引擎Drools使用 第二篇Drools规则引擎介绍
Drools规则引擎介绍 drools是一款由JBoss组织提供的基于Java语言开发的开源规则引擎,可以将复杂且多变的业务规则从硬编码中解放出来,以规则脚本的形式存放在文件或特定的存储介质中(例如存放在数据库中),使得业务规则的变更不需要修改项目代码、重启服务器就可以在线上环境立即生效。drools官网地址:https://drools.org/drools源码下载地址:https://github.com/kiegroup/droolsDrools规则主要组成drool...原创 2021-07-07 11:20:40 · 1231 阅读 · 0 评论 -
规则引擎Drools使用 第四篇Drools基础语法
上一篇介绍了Drools规则引擎,并讲解了一个编写drl文件的Demo,学习了Drools加载规则文件到规则引擎,注入Fact参数并触发规则的流程。本篇主要介绍Drool规则文件的构成,组成规则文件一些属性。规则文件构成 在使用Drools时非常重要的一个工作就是编写规则文件,通常规则文件的后缀为.drl。drl是Drools Rule Language的缩写。在规则文件中编写具体的规则内容。一套完整的规则文件内容构成如下:Drools支持的规则文件,除了dr...原创 2021-07-06 17:54:17 · 2012 阅读 · 0 评论 -
规则引擎Drools使用 第一篇 规则引擎认知
规则引擎有什么用呢,可以在那些实际场景使用呢,思考这样一个问题 申请信用卡,每个人去申请信用卡的时候,都会经过一遍核查,这个核查过程其实就可以当做是根据规则,去校验你的信息是否符合规则,只有符合规则的才可以申请信用卡。 还记得以前自己写的那些if else 无限嵌套吗,其实就可以使用规则引擎来代替,使用规则引擎完成与代码解耦,实现程序的灵活性。目录什么是规则引擎使用规则引擎的优势规则引擎应用场景Drools规则引擎介绍Drools规则主要组成drool...原创 2021-07-06 17:27:02 · 636 阅读 · 1 评论 -
规则引擎 Easy rule 使用总结
easy Rule就是一个轻量级的规则引擎,它可以直接注入spring bean类,可以查看github上对它的介绍:https://github.com/j-easy/easy-rules easy rules是一个简单而强大的java规则引擎,它有以下特性:轻量级框架 学习成本低 基于POJO 为定义业务引擎提供有用的抽象和简便的应用 从原始的规则组合成复杂的规则它主要包括几个主要的类或接口:Rule,RulesEngine,RuleListener,Facts还有...原创 2021-07-05 13:06:12 · 8392 阅读 · 6 评论