《Drools7.0.0.Final规则引擎教程》番外实例篇

您所在的位置:网站首页 drools实例 《Drools7.0.0.Final规则引擎教程》番外实例篇

《Drools7.0.0.Final规则引擎教程》番外实例篇

2023-09-11 11:41| 来源: 网络整理| 查看: 265

背景

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

实例代码

测试部分代码:

@Test public void testMapUsage() { KieSession kieSession = this.getKieSession("map-group"); Map 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的系列教程也在筹划中,希望大家多多支持。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3