
Drools
文章平均质量分 70
miemieYang89
这个作者很懒,什么都没留下…
展开
-
Drools7工作内存facts
调用insert()方法插入数据大家是都知道的,插入drools的数据对象会储存在 工作内存中,通常每次插入一个新的数据对象,drools引擎就会返回一个新的FactHandle对象实例,但是相同的数据对象仅会在工作内存中保留一个,当插入“相同”数据时,不会再插入新的实例,但会返回之前的FactHandle对象。 本文将分享drools7判断 数据对象之间相等的两种模式:identity 和 equality。两种模式下判断数据对象“相同”的策略完全不同。 ...原创 2021-09-17 18:57:54 · 774 阅读 · 2 评论 -
Drools 7 规则引擎简介
一、什么是drools 规则引擎?drools规则引擎是用来存储我们业务中一些评估和处理数据的业务规则或决策表。其基本用途就是以这些规则和决策表集合为依据,推理、检测、过滤业务数据并执行对数据进行处理或执行相关操作。二、Drools引擎的核心组件▶Rules:所有的业务规则和决策表都叫做规则。所有的规则都由规则条件校验(LHS 或conditions)和逻辑处理(RHS 或 actions)两部分组成;▶Facts:业务数据或者称之为“事实”。所...原创 2021-09-08 17:20:08 · 802 阅读 · 0 评论 -
Drools 7 规则引擎执行控制之rule units对规则的协调执行
单独写一下rule units吧,rule units也是执行控制中的一部分,这一块儿的内容比较丰富也挺有意思。一、简述rule units 需要实现RuleUnit接口,它由运行时数据(date sources of facts),globals,DRL rules 和function组成。可以将一组rules 划分为更小的 rule units,然后逐个执行rule units。rule units之间可以互相调用,因为每个rule units 可以有一个或一个以上的rule,算是变相的支持了规原创 2020-12-02 12:01:45 · 1525 阅读 · 0 评论 -
Drools 7 中function调用global报错问题
在技术群里遇到网友问到一个function 调用global报错的问题,这里写个程序复现一下先。1.定义一个service 一会儿作为global set到drools kiesessionpackage com.helloworld.Service;public class TestService { public void testGlobal(String str){ System.out.println("java application print:"+st原创 2020-11-27 15:17:02 · 2473 阅读 · 2 评论 -
Drools 7 用OOPath遍历嵌套类型的实体对象
Drools 7 基于XPath的OOPath用于简化对象或者内层嵌套的对象属性的遍历。这个话题很拗口,简单点讲就是一种带有筛选条件的访问实体或实体内部嵌套的实体及其属性的方式原创 2020-11-20 10:41:10 · 1332 阅读 · 0 评论 -
drools 7 规则引擎执行控制(Excution control)之规则冲突策略
一、Fact存储形式1.drools 引擎组件主要如下: •Rules - 业务规则或者决策表,包含规则条件和业务数据处理逻辑 •Fact -业务数据实例,Drools引擎将这些数据与规则条件匹配,以执行适用的规则。 •Production memory - 用于储存规则 •Working memory - 用于存储业务数据和规则匹配实例(activation instance) •agenda - 匹配实例(activation instance)注册和排序...原创 2020-11-11 16:22:42 · 1796 阅读 · 0 评论 -
Drools7 KIE session pool
drools 支持创建KIE session pool用于性能提升。1.KIE session pool的创建KieServices ks = KieServices.Factory.get();KieContainer kc = ks.getKieClasspathContainer();//1.从KieContainer创建初始量为10个session的池KieContainerSessionsPool pool = kc.newKieSessionsPool(10);//2.从池中获原创 2020-11-07 14:41:06 · 2348 阅读 · 2 评论 -
Drools7 Map集合的遍历(遍历map的键值对)
本文将分享几个遍历map集合的方法。 最近遇到个蛋疼的事情,《Drools7中Map类型数据源操作》一文中提到“本文介绍了Map类的数据源在drools的condition部分遍历的方法。”,然后示例中写的是从工作内存中带有条件的遍历Map类型实例,有人质疑这文章与大纲不符,示例不是写的遍历。什么叫遍历,在我看来遍历直白点不就是循环查询嘛,循环查询集合叫遍历,加了个条件筛选,循环查询内存就不是遍历?抬杠! 进入正题!!!说明一下:以下drl部分代码使用设置为java类型...原创 2020-05-20 17:22:46 · 4627 阅读 · 0 评论 -
java项目访问drools工作内存中的数据(fact)
本文将分享几种从drools外部访问drools工作内存中数据的方法。实体类如下://客户public class Customer { private Integer id; private String name; private String level; private double discount;//折扣率 private bool...原创 2020-04-22 18:21:43 · 1598 阅读 · 0 评论 -
drools7 DRL规则语言之二(package、import、function)
本文将简介package、import组件,会较多的介绍function组件。一、package和import 这么大的标题,其实没什么可介绍的。本来也没想写这两部分,但是为了完整,还是凑了两句。 package 实际就是一个符合java命名规范的域名,多个drl文件可重复使用,namespace跟drl文件的保存路径并没有关系,可任意定义,但是位置必须...原创 2020-04-06 18:54:00 · 2833 阅读 · 0 评论 -
drools7 DRL规则语言之一(概述)
DRL即Drools Rule Language的简写,以后缀为.drl的文件的形式存在。每个DRL文件中可以存放一个或多个业务规则(rule),每个业务规则最少要包含规则条件部分(when)和业务处理部分(then),每个rule可简单的理解为java中的if语句块,复杂的业务规则可拆分为单个独立的简单的rule,用这样的一组rule来描述完整的业务规则逻辑。可以使用IDEA配置...原创 2020-04-06 14:52:46 · 1026 阅读 · 0 评论 -
drools7 rule的优化写法,规则继承或扩展
本文将介绍drools7中规则的继承。官方文档对应章节标题为 “conditional named consequences”,这里之所以称之为“继承”是因为在编写rule时会用到“extends ”,这样翻译其实是有一定问题的,翻译为扩展更准确些。本文将结合官方文档中的案例进行阐述。 通常每个rule只会写一个then,当多个rule仅其中某一个条件不一致时,就会写很多重复的代码...原创 2019-12-09 21:24:29 · 2663 阅读 · 1 评论 -
drools 7 日期时间段校验
本文分享一个drools校验日期区间内时间段的校验方法。 案例如下:电商品台新增一个促销活动,2019年10月份,限时每天10点至13点,下单9折活动。 首先可以用 date-effective 和 date-expires 两个属性限制日期区间为2019-10-01 至 2019-10-31,但是每天10点至11点该怎样限制呢?下面给出我的想法,算是抛砖引玉。1...原创 2019-10-23 13:25:40 · 2454 阅读 · 0 评论 -
Drools7中的万能函数accumulate
本文将介绍一下Drools7中accumulate的用法及其在遍历List时的一些问题,同时也会分享几个使用场景。 虽然 accumulate 虽然只是Drools中的一个关键字,但是它的功能很强大,在实际开发中我用于统计、多个List集合交叉校验、数据预处理、甚至是运行调试。但是个人感觉有些细节很难把握到,例如:循环;所以这篇文章写得比较啰嗦,既然要搞清楚它,那就请按捺住浮躁的...原创 2019-06-26 16:03:56 · 6088 阅读 · 2 评论 -
Drools 7 遍历List集合
本文将分享几种Drools7中对List类型数据的遍历方法。1.场景一:遍历工作内存中的一个List集合,且工作内存中只有一个List时。entity:public class Animal { private Integer id; private String name; public Animal(Integer id, String name) {...原创 2019-06-18 17:28:58 · 13713 阅读 · 2 评论 -
Drools7 中Map类型数据源操作
本文介绍了Map类的数据源在drools的condition部分遍历的方法。1.entitypublic class SimpleEntity { private Integer id; private Date date; public Integer getId() { return id; } public void setId(Integer id) { t...原创 2018-10-31 15:46:15 · 7791 阅读 · 13 评论