博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
drools规则引擎笔记(二)
阅读量:7010 次
发布时间:2019-06-28

本文共 2657 字,大约阅读时间需要 8 分钟。

规则引擎版本,drools6.5.0 final

eclipse:Neon

JDK1.8

今天主要是在规则的when部分加入了多个fact对象。

对于working memory存在多个fact的情形,其实和单个fact对象是类似的。需要注意的是,我们需要将多个多想都要插入working memory中才行。

下面是试验的代码,之前我已经在eclipse上安装了drools的插件,所以我的代码是在drools生成的木板上直接进行修改的。

针对本次试验,重要的几个文件如下

package com.audi.dto;public class TestDTO{    private String condition;    private String action;    public String getCondition()    {        return condition;    }    public void setCondition(String condition)    {        this.condition = condition;    }    public String getAction()    {        return action;    }    public void setAction(String action)    {        this.action = action;    }    }

 

 

package com.audi.util;public class TestUtils{    public static String testDrl()    {        return "true";    }}

 

下面的这段代码是规则的内容(其实语法和java很相似),注意下面的import语句,要在包名的末级加上*号,否则会报错:

package com.sample import com.audi.dto.*;import com.audi.util.*; rule "testUtil"    when        $util:TestUtils();        $dto:TestDTO($util.testDrl()=="true");    then        $dto.setAction("sucess...");        System.out.println("------------hhhhhhhhhhhhhhh-------------");end

 

下面是drools自动生成的xml文件,其实就是配置drools的三种规则文件的方式:

 

下面是规则的测试代码,尤其要注意kSession.insert(new TestUtils());这一句,这就是把这个工具类插入working memory的代码,没了它会导致规则的when部分为false,从而导致规则匹配失败。

package com.sample;import org.kie.api.KieServices;import org.kie.api.runtime.KieContainer;import org.kie.api.runtime.KieSession;import com.audi.dto.TestDTO;import com.audi.util.TestUtils;/** * This is a sample class to launch a rule. */public class DroolsTestUtil{    public static final void main(String[] args)    {        try        {            // load up the knowledge base            KieServices ks = KieServices.Factory.get();            KieContainer kContainer = ks.getKieClasspathContainer();            KieSession kSession = kContainer.newKieSession("ksession-rules");            // go !            TestDTO dto = new TestDTO();            dto.setCondition("test");            kSession.insert(new TestUtils());            kSession.insert(dto);            kSession.fireAllRules();            System.out.println("------------开始匹配-------------");            if (null == dto.getAction())            {                System.out.println("------------匹配失败-------------");            }            else            {                System.out.println("------------匹配成功-------------");                System.out.println(dto.getAction());            }        } catch (Throwable t)        {            t.printStackTrace();        }    }}

 

转载于:https://www.cnblogs.com/audi-car/p/6828595.html

你可能感兴趣的文章
常见错误分析-笔记
查看>>
P1256 显示图像(广搜)
查看>>
MongoDB(课时29 MapReduce)
查看>>
Slurm任务调度系统部署和测试(源码)(1)
查看>>
李超树详解
查看>>
怎样才是全能的程序员?
查看>>
with as的用法
查看>>
springboot oauth 鉴权之——授权码authorization_code鉴权
查看>>
〔池化纲领〕也及链表
查看>>
黑马程序员-蓝桥杯110问题练习
查看>>
AtCoder Beginner Contest 127 解题报告
查看>>
最大流EK算法
查看>>
在nuxt中引入Font Awesome字体图标库
查看>>
sql trace script
查看>>
程序员,请不要抢系统管理员的饭碗
查看>>
VCS双机由于ID冲突导致启动失败
查看>>
Windows 8上安装本地回环网卡
查看>>
修改计算机名的注意事项
查看>>
PowerBI从Exchange跟踪日志中分析数据和KPI展现
查看>>
你能成为什么样的人,取决于你心中的那颗种子!
查看>>