前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《Drools7.0.0.Final规则引擎教程》番外实例篇——Map使用案例

《Drools7.0.0.Final规则引擎教程》番外实例篇——Map使用案例

作者头像
程序新视界
发布2018-01-08 15:02:23
1.3K0
发布2018-01-08 15:02:23
举报
文章被收录于专栏:丑胖侠丑胖侠

背景

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

实例代码

测试部分代码:

代码语言:javascript
复制
@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的年纪是不同的。 下面看一下规则代码:

代码语言:javascript
复制
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中获取值,并强转为原始的对象,调用对象的对应方法。

执行结果如下:

代码语言:javascript
复制
p1's age is 10
p2's age is 20
Fire 1 rule(s)!

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

后语

此系列课程持续更新中,QQ群:593177274,欢迎大家加入讨论。目前国内第一套关于Drools(7)的入门教程《Drools 7 规则引擎入门教程》正在火热录制中,其他更多关于Drools的系列教程也在筹划中,希望大家多多支持。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-09-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 实例代码
  • 后语
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档