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协议簇制定速度慢于 ...
随机推荐
- JavaWeb -- Servlet+JSP+JavaBean(MVC)模式
Servlet+JSP+JavaBean(MVC)模式适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp负责数据显示,javabean负责封装数据. Servlet+JSP ...
- SaaS架构经验总结
2B Saas系统最近几年都很火.很多创业公司都在尝试创建企业级别的应用 cRM, HR,销售, Desk Saas系统.很多Saas创业公司也拿了大额风投.毕竟Saas相对传统软件的优势非常明显. ...
- CentOS 7 安装 Git
服务器端 1.先从yum安装git yum –y install git 2.在需要的位置创建一个裸仓库(最后以.git结尾) cd /usr/local mkdir git cd git git i ...
- 《Advanced Bash-scripting Guide》学习(十五):测试坏的链接文件(broken link)
本文所选的例子来自于<Advanced Bash-scripting Gudie>一书,译者 杨春敏 黄毅 #/bin/bash #用一个纯粹的shell脚本来找出坏链接文件 #什么是br ...
- ural 2013 Neither shaken nor stirred
2013. Neither shaken nor stirred Time limit: 1.0 secondMemory limit: 64 MB The ACM ICPC regional con ...
- 51nod 1732 LCS变形
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1732 1732 51nod婚姻介绍所 题目来源: 原创 基准时间限制:1 ...
- Ceph的现状
转自:https://www.ustack.com/blog/ceph-distributed-block-storage/ 1. Ceph简介 Ceph是统一分布式存储系统,具有优异的性能.可靠性. ...
- InnoDB引擎的特点及优化方法
1.什么是InnoDB引擎? InnoDB引擎是MySQL数据库的另一个重要的存储引擎,正成为目前MySQL AB所发行的新版的标准,被包含在所有二进制安装包里,和其他存储引擎相比,Inno ...
- Spring Boot同时开启HTTP和HTTPS服务
由于Spring Boot中通过编码开启HTTPS服务比较复杂,所以官方推荐通过编码开启HTTP服务,而通过配置开启HTTPS服务. Spring Boot的application.yml中添加如下配 ...
- apache php配置 虚拟目录 和 虚拟主机 多域名配置 原理解析
虚拟目录配置 就是说,我们放项目放在D盘,F盘,而不是默认的www文件夹下也可以访问.比如这里,我在 D:/PHP/work 放入的项目文件. 在httpd.conf加入: (位置一般是在 </ ...