Drools学习笔记3—Conditions / LHS—字段约束连接&字段约束操作符
字段约束连接
- 用于字段约束
- 对象内部多个约束连接,采用“&&”(and)、“||”(or)和“,”(and)
- 执行顺序:“&&”(and)、“||”(or)和“,”
字段约束操作符
- >、>=、<、<=、= =、!=
- contains:包含 A contains B, A中包含B
- not contains:与contains相反
- memberOf:单个对象属于某个集合,this表示当前对象
- not memberOf:与memberof相反
- matches:正则表达式,匹配
- not matches:正则表达式,不匹配
contains 、 not contains
package com.sample import com.bean.Customer;
import com.bean.Account; rule "contains"
when
$account : Account();
$customer : Customer(name=="七夜雪" && accounts contains $account);
then
System.out.println( "contains test success" );
end rule "not contains"
when
$account : Account();
$customer : Customer(name=="七夜雪" && accounts not contains $account);
then
System.out.println( "not contains test success" );
end
/**
* 字段约束符,contains
* @throws Exception
*/
@Test
public void testContainsRule() throws Exception {
KnowledgeBase kbase = readKnowledgeBase("Contains.drl");
StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, "test");
Customer customer = new Customer();
customer.setName("七夜雪");
Account account1 = new Account();
account1.setNum(100);
Account account2 = new Account();
account2.setNum(100);
customer.getAccounts().add(account1); //not contains
//customer.getAccounts().add(account2); // contains
ksession.insert(customer);
ksession.insert(account2);
ksession.fireAllRules();
logger.close();
}
memberOf 、not memberOf
package com.sample import com.bean.Customer;
import com.bean.Account; rule "Memberof"
when
$customer : Customer();
//当前的account是$customer.getAccounts()的一个成员
$account : Account(this memberOf $customer.getAccounts());
then
System.out.println( "memberOf test success and account is " + $account.getName() );
end rule "not Memberof"
when
$customer : Customer();
//当前的account不是$customer.getAccounts()的一个成员
$account : Account(this not memberOf $customer.getAccounts());
then
System.out.println( "not memberOf test success and account is " + $account.getName() );
end
/**
* 字段约束符,memberOf
* @throws Exception
*/
@Test
public void testMemberOfRule() throws Exception {
KnowledgeBase kbase = readKnowledgeBase("Members.drl");
StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, "test");
Customer customer = new Customer();
Account account1 = new Account();
account1.setName("碧落");
Account account2 = new Account();
account2.setName("黄泉");
customer.getAccounts().add(account1);
ksession.insert(customer);
ksession.insert(account1);
ksession.insert(account2);
ksession.fireAllRules();
logger.close();
}
matches 、 not matches
package com.sample import com.bean.Customer;
import com.bean.Account; rule "Matchs"
when
$customer : Customer(name matches "qiye*");
then
System.out.println( "Matchs test success and customer is " + $customer.getName() );
end rule "not Matchs"
when
$customer : Customer(name not matches "qiye*");
then
System.out.println( "not Matchs test success and customer is " + $customer.getName() );
end
/**
* 字段约束符,memberOf
* @throws Exception
*/
@Test
public void testMatcherRule() throws Exception {
KnowledgeBase kbase = readKnowledgeBase("Matchs.drl");
StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
Customer customer = new Customer();
customer.setName("qiyexue");
Customer customer1 = new Customer();
customer1.setName("biluo");
ksession.insert(customer);
ksession.insert(customer1);
ksession.fireAllRules();
}
fact对象代码:http://www.cnblogs.com/qiyexue/p/7822670.html
Drools学习笔记3—Conditions / LHS—字段约束连接&字段约束操作符的更多相关文章
- Drools学习笔记2—Conditions / LHS 匹配模式&条件元素
Rule的LHS由条件元素(Conditional Elements—CE)和匹配模式(Patterns)组成 Patterns被用来指示出fact的字段约束 每个约束必须为true才能让RHS的ac ...
- 开源规则引擎 Drools 学习笔记 之 -- 1 cannot be cast to org.drools.compiler.kie.builder.impl.InternalKieModule
直接进入正题 我们在使用开源规则引擎 Drools 的时候, 启动的时候可能会抛出如下异常: Caused by: java.lang.ClassCastException: cn.com.cheng ...
- Drools学习笔记
Drools是一款基于Java的开源规则引擎 实现了将业务决策从应用程序中分离出来. 优点: 1.简化系统架构,优化应用 2.提高系统的可维护性和维护成本 3.方便系统的整合 4.减少编写“硬代码”业 ...
- ESP8266学习笔记6:ESP8266规范wifi连接操作
一.前言 我整理了从2015年至今关于ESP8266的学习笔记,梳理出来了开发环境.基础功能.进阶学习三大部分.方便自己和他人.可点此查看,欢迎交流. 之前在笔记4<ESP8266的SmartC ...
- Docker学习笔记之--.Net Core项目容器连接mssql容器(环境:centos7)
前一节演示在docker中安装mssql,地址:Docker学习笔记之--安装mssql(Sql Server)并使用Navicat连接测试(环境:centos7) 本节演示 .Net Core项目容 ...
- Drools学习笔记-01-在eclipse indgo集成Drools5.5
1.1.条件 Drools它是一个基于Java开源规则引擎.因此,使用Drools以及前需要安装在开发机器JDK周边环境,Drools5.5需要JDK版本号的1.5或者更多. 1.2.开发环境搭建 大 ...
- Drools学习笔记4—Consequence/RHS
Right Hand Side,当LHS所有条件满足才会执行 可以使用LHS部分定义的绑定变量.全局变量.或者直接编写JAVA代码. 提供宏函数操作working memory fact对象,如ins ...
- Drools学习笔记1—规则文件
Facts(即普通的POJO) 指普通业务对象插入到Workingmemory后的对象规则可以对fact对象进行任意的对象操作是规则与应用系统交换的桥梁返回FactHandler对象,是插入到Work ...
- HTTP学习笔记(一)报文和连接管理
对TCP/IP协议簇有些了解的同学们应该都知道.TCP/IP协议通过精简ISO网络7层协议(事实上了解历史渊源的话,TCP/IP协议本来目的并非简化ISO的7层协议.仅仅是因为ISO协议簇制定速度慢于 ...
随机推荐
- 基于“基于dockerhub的jetty镜像的ossfs镜像”部署war包,遇到的文件夹读写权限被限制的问题解决方案
前提: “基于dockerhub的jetty镜像的ossfs镜像” 已经搭建好了. 部署准备: 1.本地打包:war包-->idea工具 mvn 打包. 2.本地sh脚本:compile_vps ...
- HBase-scan简介及优化(缓存与批量处理)
扫描(scan) 这种技术类似于数据库系统中的游标(cursor),并利用到了HBase提供的底层顺序存储的数据结构. 扫描操作的使用跟get方法非常类似.由于扫描操作的工作方式类似于迭代器,所以用户 ...
- HDU 4004 The Frog's Games(2011年大连网络赛 D 二分+贪心)
其实这个题呢,大白书上面有经典解法 题意是青蛙要跳过长为L的河,河上有n块石头,青蛙最多只能跳m次且只能跳到石头或者对面.问你青蛙可以跳的最远距离的最小值是多大 典型的最大值最小化问题,解法就是贪心 ...
- 红米1S.线刷
ZC:遇到问题:“Missmatching image and device”,解决网址:“[2.23][史上最全]MiFlash线刷错误的那些事儿_收藏备用_小米手机4_MIUI论坛.html”(h ...
- Specify compute hosts with SSDs
scheduler_driver = nova.scheduler.filter_scheduler.FilterScheduler scheduler_available_filters = nov ...
- 搜索6--noi1700:八皇后问题
搜索6--noi1700:八皇后问题 一.心得 二.题目 1756:八皇后 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 会下国际象棋的人都很清楚:皇后可以 ...
- php RabbitMQ使用
php RabbitMQ使用 参考网址: http://www.rabbitmq.com/tutorials/tutorial-three-php.html 最近研究rabbitmq队列,linux安 ...
- github-如何设置SSH Key
设置SSH Key 在注册好github账号后,打开你的电脑桌面上的一个文件夹,这就建立了一个本地工作库,在里面点击鼠标右键,找到你的git bash here-点击开,如图所示:进行下面操作: 输入 ...
- html5 frameset5内嵌框架集
利用html5 frameset内嵌框架简单做一个网页,网页的布局大体如下: 我们可以将其分为四个部分: 第一部分:top图片栏 第二部分:left链接栏 第三部分:right内容栏 第四部分:网页整 ...
- cassandra mongodb选择——cassandra:分布式扩展好,写性能强,以及可以预料的查询;mongodb:非事务,支持复杂查询,但是不适合报表
Of course, like any technology MongoDB has its strengths and weaknesses. MongoDB is designed for OLT ...