Drools规则引擎Map使用案例

简介: Drools规则引擎Map使用案例

image.png

背景

技术交流群中,不少朋友在问,如何在Drools规则文件中使用Map。今天就用实例带大家了解一下map的使用方法。

实例代码

测试部分代码:

  • @Test
  •    publicvoid testMapUsage(){
  •        KieSession kieSession =this.getKieSession("map-group");

  •        Map<String,Person> map =newHashMap<>();
  •        Person p1 =newPerson();
  •        p1.setAge(10);
  •        map.put("p1",p1);

  •        Person p2 =newPerson();
  •        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的年纪是不同的。 下面看一下规则代码:

  1. package com.rules
  2. import java.util.Map;
  3. import com.secbro.drools.model.Person;

  4. rule "map-usage"

  5.    agenda-group "map-group"

  6.    when
  7.        $obj :Object();
  8.        $map :Map(["p1"]!= $obj);
  9.    then
  10.        System.out.println("p1's age is "+((Person)$map.get("p1")).getAge());
  11.        System.out.println("p2's age is "+((Person)$map.get("p2")).getAge());
  12.    end

规则中首先定义了一个Object对象,此对象肯定是存在的。另外就是给map定义一个变量,获取了map中key为p1的对象,并比较p1这个对象与$obj对象是否相当,不相等的话满足条件。在上面的过程中实现了一种从map获取对象的方法。

然后再看一下RHS部分,直接使用get方法从map中获取值,并强转为原始的对象,调用对象的对应方法。

执行结果如下:

  1. p1's age is 10
  2. p2's age is 20
  3. Fire1 rule(s)!

以上完整代码请于github上下载:https://github.com/secbr/drools

目录
相关文章
三大集合--Map集合 -- 详细完整加案例分析
三大集合--Map集合 -- 详细完整加案例分析
|
Java
Java对象,Map,List,Set数组等相互转换大全(详细讲解,附代码,讲解案例)(二)
Java对象,Map,List,Set数组等相互转换大全(详细讲解,附代码,讲解案例)(二)
170 0
Java对象,Map,List,Set数组等相互转换大全(详细讲解,附代码,讲解案例)(二)
|
JSON Java 数据格式
Java对象,Map,List,Set数组等相互转换大全(详细讲解,附代码,讲解案例)(一)
Java对象,Map,List,Set数组等相互转换大全(详细讲解,附代码,讲解案例)(一)
223 0
Java对象,Map,List,Set数组等相互转换大全(详细讲解,附代码,讲解案例)(一)
|
数据可视化 定位技术 数据格式
漏刻有时数据可视化Echarts组件开发(18):渐变透明柱状图和地图map结合的案例
漏刻有时数据可视化Echarts组件开发(18):渐变透明柱状图和地图map结合的案例
205 0
Echarts实战案例代码(41):自定义map背景图片
Echarts实战案例代码(41):自定义map背景图片
672 0
|
JavaScript 数据可视化 定位技术
Echarts实战案例代码(11):利用geojson数据地图map组件生成js本地版直接访问的解决方案
Echarts实战案例代码(11):利用geojson数据地图map组件生成js本地版直接访问的解决方案
466 0
|
Java
Java对象,Map,List,Set数组等相互转换大全(详细讲解,附代码,讲解案例)(三)
Java对象,Map,List,Set数组等相互转换大全(详细讲解,附代码,讲解案例)(三)
139 0
|
前端开发
前端学习案例14-数组方法map
前端学习案例14-数组方法map
86 0
前端学习案例14-数组方法map
|
前端开发
前端学习案例13-数组遍历方法4-map使用
前端学习案例13-数组遍历方法4-map使用
85 0
前端学习案例13-数组遍历方法4-map使用
|
前端开发
前端学习案例-arr.map(parseInt)没有参数1
前端学习案例-arr.map(parseInt)没有参数1
90 0
前端学习案例-arr.map(parseInt)没有参数1