《Drools7.0.0.Final规则引擎教程》番外实例篇——Map使用案例
2023-09-27 14:28:49 时间
背景
技术交流群中,不少朋友在问,如何在Drools规则文件中使用Map。今天就用实例带大家了解一下map的使用方法。
实例代码
测试部分代码:
@Test
public void testMapUsage() {
KieSession kieSession = this.getKieSession("map-group");
Map<String, Person> map = new HashMap<>();
Person p1 = new Person();
p1.setAge(10);
map.put("p1",p1);
Person p2 = new Person();
p2.setAge(20);
map.put("p2",p2);
kieSession.insert(map);
int count = kieSession.fireAllRules();
System.out.println("Fire " + count + " rule(s)!");
}
首先,我们创建了一个map,map中存放了两个Person对象,随后将map insert到了session中。其中这两个Person的年纪是不同的。
下面看一下规则代码:
package com.rules
import java.util.Map;
import com.secbro.drools.model.Person;
rule "map-usage"
agenda-group "map-group"
when
$obj : Object();
$map : Map(["p1"] != $obj);
then
System.out.println("p1's age is " + ((Person)$map.get("p1")).getAge());
System.out.println("p2's age is " + ((Person)$map.get("p2")).getAge());
end
规则中首先定义了一个Object对象,此对象肯定是存在的。另外就是给map定义一个变量,获取了map中key为p1的对象,并比较p1这个对象与$obj对象是否相当,不相等的话满足条件。在上面的过程中实现了一种从map获取对象的方法。
然后再看一下RHS部分,直接使用get方法从map中获取值,并强转为原始的对象,调用对象的对应方法。
执行结果如下:
p1's age is 10
p2's age is 20
Fire 1 rule(s)!
以上完整代码请于github上下载:https://github.com/secbr/drools 。
后语
此系列课程持续更新中,QQ群:593177274(可扫描左上侧栏目二维码),欢迎大家加入讨论。点击链接关注《Drools博客专栏》 。目前国内第一套关于Drools(7)的入门教程《Drools 7 规则引擎入门教程》正在火热录制中,其他更多关于Drools的系列教程也在筹划中,希望大家多多支持。
相关文章
- Google Earth Engine(GEE)——MODIS NDVI 时空动态变化的动态图下载案例
- 【FPGA教程案例88】编译码1——基于FPGA的HDB3编译码verilog实现
- 【FPGA教程案例87】加解密1——基于FPGA的AES加解密算法verilog实现
- 小米面试——案例总结
- 112 Storm单词技术案例
- 前端基础 - JavaScript之省市联动简单案例
- 大数据与机器学习:实践方法与行业案例.3.3 自动加载程序的数据库设计
- 《iOS 8案例开发大全》——实例004 代码缩进和提示处理
- 《iOS 8案例开发大全》——实例005 设置项目快照以及恢复到快照
- 《Oracle性能优化与诊断案例精选》——2.3 衣带渐宽终不悔
- 《HTML5游戏编程核心技术与实战》——2.7 案例:《你画我猜》
- 量化项目管理案例:缺陷趋势预测利器(6)
- mysql一个SQL案例