• Right Hand Side,当LHS所有条件满足才会执行
  • 可以使用LHS部分定义的绑定变量、全局变量、或者直接编写JAVA代码。
  • 提供宏函数操作working memory fact对象,如insert/update/retract,使用会触发规则重新匹配
  • 宏对象drools操作working memory,kcontext操作KnowledgeRuntime

modify块

  • Modify表达式块,修改完后自动更新到workmemory中
  • 语法

    modify(fact-expression){
      <修改Fact 属性的表达式>[,<修改Fact 属性的表达式>*]
    }

package com.sample

import  com.bean.Customer;
import com.bean.Account; rule "modify"
when
$customer : Customer(name=="七夜雪" )
then
System.out.println( "modify Rule success and Customer is : " + $customer.getName() );
modify($customer){ //modify块,修改之后会重新触发规则执行
setName("碧落"); //直接使用修改fact属性的表达式
}
end rule "modify 1"
when
$customer : Customer(name=="碧落" )
then
System.out.println( "modify Rule success and Customer is : " + $customer.getName() );
end
  /**
* modify块
* @throws Exception
*/
@Test
public void testModify() throws Exception {
KnowledgeBase kbase = readKnowledgeBase("modify.drl");
StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, "test");
Customer customer = new Customer();
customer.setName("七夜雪");
ksession.insert(customer);
ksession.fireAllRules();
logger.close();
}

执行结果:

属性

用来控制规则执行:

  • activation-group:具有相同的activation-group的规则,只有一个会被执行,可配合salience确定哪个规则被执行
  • agenda-group:在执行fireAllRules之前,所有的规则以及fact都存在agenda中,agenda-group对agenda进行分组
  • auto-focus:
  • date-effective:规则生效时间,系统时间>=date-effective时触发,默认格式“dd-MMM-yyyy”,可通过System.setProperty("drools.dateformat", "yyyy-MM-dd");设置时间格式
  • date-expires:规则失效时间,与date-effective相反,格式一致
  • dialect:两种方言,java和mvel,默认为java
  • duration:规则将在指定时间之后的另一个线程触发,时间单位毫秒
  • enabled:规则是否可用,默认为true
  • lock-on-active:增强版的no-loop,主要在使用ruleflow-group或agenda-group时使用,默认为false
  • no-loop:控制已经执行的规则在条件满足的情况下,是否会再次执行,默认false,为true则只能执行一次
  • ruleflow-group
  • salience:规则优先级,值越大优先级越高,默认为0

date-effective、date-expires

 

Drools学习笔记4—Consequence/RHS的更多相关文章

  1. 开源规则引擎 Drools 学习笔记 之 -- 1 cannot be cast to org.drools.compiler.kie.builder.impl.InternalKieModule

    直接进入正题 我们在使用开源规则引擎 Drools 的时候, 启动的时候可能会抛出如下异常: Caused by: java.lang.ClassCastException: cn.com.cheng ...

  2. Drools学习笔记-01-在eclipse indgo集成Drools5.5

    1.1.条件 Drools它是一个基于Java开源规则引擎.因此,使用Drools以及前需要安装在开发机器JDK周边环境,Drools5.5需要JDK版本号的1.5或者更多. 1.2.开发环境搭建 大 ...

  3. Drools学习笔记

    Drools是一款基于Java的开源规则引擎 实现了将业务决策从应用程序中分离出来. 优点: 1.简化系统架构,优化应用 2.提高系统的可维护性和维护成本 3.方便系统的整合 4.减少编写“硬代码”业 ...

  4. Drools学习笔记2—Conditions / LHS 匹配模式&条件元素

    Rule的LHS由条件元素(Conditional Elements—CE)和匹配模式(Patterns)组成 Patterns被用来指示出fact的字段约束 每个约束必须为true才能让RHS的ac ...

  5. Drools学习笔记3—Conditions / LHS—字段约束连接&字段约束操作符

    字段约束连接 用于字段约束 对象内部多个约束连接,采用“&&”(and).“||”(or)和“,”(and) 执行顺序:“&&”(and).“||”(or)和“,” 字 ...

  6. Drools学习笔记1—规则文件

    Facts(即普通的POJO) 指普通业务对象插入到Workingmemory后的对象规则可以对fact对象进行任意的对象操作是规则与应用系统交换的桥梁返回FactHandler对象,是插入到Work ...

  7. Linux 学习笔记

    Linux学习笔记 请切换web视图查看,表格比较大,方法:视图>>web板式视图 博客园不能粘贴图片吗 http://wenku.baidu.com/view/bda1c3067fd53 ...

  8. C++学习笔记——大杂烩

    C++学习笔记--大杂烩                                                         by方阳 版权声明:本文为博主原创文章,转载请指明转载地址 h ...

  9. JavaSE中线程与并行API框架学习笔记1——线程是什么?

    前言:虽然工作了三年,但是几乎没有使用到多线程之类的内容.这其实是工作与学习的矛盾.我们在公司上班,很多时候都只是在处理业务代码,很少接触底层技术. 可是你不可能一辈子都写业务代码,而且跳槽之后新单位 ...

随机推荐

  1. HDU 4004 The Frog's Games(2011年大连网络赛 D 二分+贪心)

    其实这个题呢,大白书上面有经典解法  题意是青蛙要跳过长为L的河,河上有n块石头,青蛙最多只能跳m次且只能跳到石头或者对面.问你青蛙可以跳的最远距离的最小值是多大 典型的最大值最小化问题,解法就是贪心 ...

  2. 关于linux的/var/www/html

    linux目录下有个目录:/var/www/html,把文件放到这个目录下就可以通过IP很方便的访问, 如果要访问 /var/www/html/myfolder/test.html 我在浏览器地址栏输 ...

  3. Git--之本地仓库

    VCS的历史 : Git是一款代码管理工具(Version Control System),傲视群雄,是目前世界上最先进的免费开源的分布式版本控制系统,没有之一! VCS版本控制系统(version ...

  4. STL视频_02

    [01:05]主要讲一下几个要点: 1.模板.函数模板 类模板 以及它们的用法 2.容器.什么是容器 和 容器的分类,各种容器的数据结构 3.容器vector的具体用法,包括迭代器的具体用法 [01: ...

  5. keystone uwsgi failed

    ~$ /usr/local/bin/uwsgi /etc/keystone/keystone-uwsgi-public.ini[uWSGI] getting INI configuration fro ...

  6. Quartz实现定时任务实例

    1首先实现Job接口,创建任务 public class HelloJob implements Job{ @Override public void execute(JobExecutionCont ...

  7. review05

    子类与继承 所有类都是Object的子孙类. 子类继承了父类的成员变量和方法,就好像是在子类中直接定义了一样. 如果子类和父类在同一个包中,子类自然地继承了父类中不是private的成员变量和方法. ...

  8. Ubuntu18.04 升级python3后 安装pip3 后报错

    pip3 -VTraceback (most recent call last): File , in <module> from pip._internal import main Mo ...

  9. centos:rpm安装,软件安装

    1,先检查 软件包是否存在: 以parted命令为例: rpm -qa|grep parted 2.如果没有,则安装: yum install parted

  10. nodeJs爬虫小程序练习

    //爬虫小程序 var express = require('express'); //superagent是一个http的库,可以发起get和post请求 var superagent = requ ...