drools规则引擎笔记(二)
规则引擎版本,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的三种规则文件的方式:
<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule">
<kbase name="rules" packages="rules">
<ksession name="ksession-rules"/>
</kbase>
<kbase name="dtables" packages="dtables">
<ksession name="ksession-dtables"/>
</kbase>
<kbase name="process" packages="process">
<ksession name="ksession-process"/>
</kbase>
</kmodule>
下面是规则的测试代码,尤其要注意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();
}
} }
drools规则引擎笔记(二)的更多相关文章
- Drools规则引擎
一.简介 Drools is a Business Rules Management System (BRMS) solution. It provides a core Business Rules ...
- Drools 规则引擎环境搭建
一.关于 drools 规则引擎 前面写过一篇 Drools 规则引擎相关的文章,这篇文章主要记录一下规则引擎的环境搭建和简单示例.不熟悉 drools 的朋友可以看看这篇文章: 自己写个 Drool ...
- SpringBoot2 整合 Drools规则引擎,实现高效的业务规则
本文源码:GitHub·点这里 || GitEE·点这里 一.Drools引擎简介 1.基础简介 Drools是一个基于java的规则引擎,开源的,可以将复杂多变的规则从硬编码中解放出来,以规则脚本的 ...
- (十五)整合 Drools规则引擎,实现高效的业务规则
整合 Drools规则引擎,实现高效的业务规则 1.Drools引擎简介 1.1 规则语法 2.SpringBoot整合Drools 2.1 项目结构 2.2 核心依赖 2.3 配置文件 3.演示案例 ...
- Drools 规则引擎应用
规则引擎-drools 1 .场景 1.1需求 商城系统消费赠送积分 100元以下, 不加分 100元-500元 加100分 500元-1000元 加500分 1000元 以上 加1000分 .... ...
- Drools 规则引擎应用 看这一篇就够了
1 .场景 1.1需求 商城系统消费赠送积分 100元以下, 不加分 100元-500元 加100分 500元-1000元 加500分 1000元 以上 加1000分 ...... 1.2传统做法 1 ...
- 线上故障排查——drools规则引擎使用不当导致oom
事件回溯 1.7月26日上午11:34,告警邮件提示:tomcat内存使用率连续多次超过90%: 2.开发人员介入排查问题,11:40定位到存在oom问题,申请运维拉取线上tomcat 内存快照dum ...
- Drools规则引擎入门指南(一)
最近项目需要增加风控系统,在经过一番调研以后决定使用Drools规则引擎.因为项目是基于SpringCloud的架构,所以此次学习使用了SpringBoot2.0版本结合Drools7.14.0.Fi ...
- drools规则引擎初探
https://www.cnblogs.com/yuebintse/p/5767996.html 1.drools是什么 Drools是为Java量身定制的基于Charles Forgy的RETE算 ...
随机推荐
- Windbg内核调试之四: Dump文件分析
Dump 文件分析很大程度上就是分析蓝屏产生的原因.这种系统级的错误算是Windows提示错误中比较严重的一种(更严重的还有启动黑屏等硬件或软件兼容性错误等等).说它是比较严重,是因为毕竟Window ...
- 谈谈Linux内核驱动的coding style
最近在向Linux内核提交一些驱动程序,在提交的过程中,发现自己的代码离Linux内核的coding style要求还是差很多.当初自己对内核文档里的CodingStyle一文只是粗略的浏览,真正写代 ...
- spark分区
spark默认的partition的分区数是和本机CPU的核数保持一致: bucket的数量和reduce的数量一致:buket的概念是map会将计算获得数据放到各个buket中,每个bucket和一 ...
- 10.Selenium+Python+任务计划程序实现定时发送邮件
一.python具体代码实现 # coding=utf-8 import smtplib from email.mime.text import MIMEText from email.header ...
- 使用 DOM对象,控制HTML元素 来制作的一个简单的表格
制作一个表格,显示班级的学生信息. 要求: 1. 鼠标移到不同行上时背景色改为色值为 red,移开鼠标时则恢复为原背景色 white 2. 点击添加按钮,能动态在最后添加一行 3. 点击删除按钮,则删 ...
- Day3(1)linux文件系统及文件类型
Linux的文件系统 根文件系统(rootfs) root filesystem LSB,FHS:(FileSystem Heirache Standard) /etc,/usr,/var,/root ...
- java写出进程条代码
package com.ds; import java.awt.Color; import java.awt.Toolkit; import javax.swing.ImageIcon; import ...
- Rails的静态资源管理(二)—— 如何使用 Asset Pipeline
官方文档:http://guides.ruby-china.org/asset_pipeline.html http://guides.rubyonrails.org/asset_pipeline.h ...
- 0ctf签到题
签到题: 题目提示: flag在IRC聊天室里 开启weechat ┌─[root@sch01ar]─[~] └──╼ #weechat 创建服务器 /server add freenode8001 ...
- PHP类(四)-类的继承
类的继承就是从已经定义的类中继承数据,也可以重新定义或者加入一些数据. 被继承的类称为父类,基类,超类 继承的类称为子类,派生类 在PHP中只能使用单继承,也就是一个类只能从一个类中继承数据,但是一个 ...