`

Drools 规则文件 ——语法属性

阅读更多
1.salience
功能:设置规制执行的优先级
值:数字(数字越大执行优先级越高)
示例:
rule "rule1" 
  salience 1 
  when 
 eval(true) 
  then  
System.out.println("rule1");
end 


2.no-loop
功能:控制已经执行的规则条件再次满足是否再次执行
值:true/false
示例:
rule "rule1" 
  no-loop true 
  when 
  $customer:Customer(name=="张三") 
  then  
   update($customer); 
  System.out.println("customer name:"+$customer.getName()); 
  End 


3.date-effective
功能:当系统时间>=date-effective后才会触发
值:日期默认格式为dd-MMM-yyyy,
可以设置其它时间格式如yyyy-MM-dd,需在代码设置系统时间格式System.setProperty("drools.dateformat", "yyyy-MM-dd");


示例:
rule "rule1" 
  date-effective "2009-09-25" 
  when 
  eval(true); 
  then  
  System.out.println("rule1 is execution!"); 
  end


4.date-expires
功能:当系统时间<=date-expires后才会触发
值:日期默认格式为dd-MMM-yyyy
可以设置其它时间格式如yyyy-MM-dd,需在代码设置系统时间格式System.setProperty("drools.dateformat", "yyyy-MM-dd");


示例:
rule "rule1" 
  date-expires "2009-09-27" 
  when 
  eval(true); 
  then  
  System.out.println("rule1 is execution!");  
  end



5.enabled
功能:设置规制是否可用
值:true/false


示例:
rule "rule1" 
  enabled false 
  when 
   eval(true); 
  then  
  System.out.println("rule1 is execution!"); 
  end


6.dialect
功能:规则当中要使用的语言类型
值:Java/mevl(默认为java)


示例:
rule "rule3"
 dialect "mvel"
 when
    $app:Applicant(age == 24); 
 then
    System.out.println("rule3----" + $app.name);
end



7.duration
功能:设定时间之后在另外一个线程里触发
值:一个长整型,单位是毫秒


示例:
rule "rule1" 
  duration 3000 
  when 
  eval(true) 
  then  
  System.out.println("rule thread id:"+Thread.currentThread().getId()); 
  end 


8.activation-group
功能:若干个规则划分成一个组
值:分组名称


示例:
rule "rule2"
 activation-group "test"
 salience 10 
 when
   eval(true)
  then
    System.out.println("rule2 execute");
 end
 
 rule "rule1"
 activation-group "test"
 salience 9
 when
 eval(true)
 then
 System.out.println("rule1 execute");
end 

note:
如果同一组规则,谁的salience高就执行谁,没有则按顺序执行最后同组最后那个规则


9.agenda-group
功能:Agenda Group 是用来在 Agenda的基础之上,对现在的规则进行再次分组.
Agenda Group 得到 Focus(焦点),这样位于该 Agenda Group当中的规则才会
触发执行,否则将不执行。
值:一个字符串


示例:
rule "rule1"
    agenda-group "001"
 when
  eval(true)
 then 
  System.out.println("rule1 execute"); 
end


rule "rule2"
    agenda-group "002"
 when
  eval(true)
 then 
  System.out.println("rule2 execute");
  
end


10:auto-focus
功能:跟agenda-group一起使用,设置该规则是否可以自动独取 Focus,如果该属性设置为 true,那么在引擎执行时,就不需要
显示的为某个Agenda Group 设置 Focus,否则需要。
值:true/false


示例:
rule "rule1"
    agenda-group "001"
    auto-focus true
 when
  eval(true)
 then 
  System.out.println("rule1 execute"); 
end


rule "rule2"
    agenda-group "002"
    auto-focus true
 when
  eval(true)
 then 
  System.out.println("rule2 execute"); 
end
分享到:
评论

相关推荐

    Drools规则执行顺序

    标题 "Drools 规则执行顺序" 涉及的是一个业务规则引擎——Drools 的核心概念。Drools 是一个开源的Java决策管理平台,它允许开发者使用规则语言来编写业务逻辑,这些规则可以按特定顺序执行,以处理复杂的业务场景...

    Drools规则引擎从入门到精通

    9. **动态编译Class文件实现Drools规则调用** 通过动态编译,可以实现在运行时加载和执行新的规则。 10. **Drools实战** - **贷款准入规则**:演示如何设定规则来决定贷款申请者的准入资格。 - **贷款评分卡**:...

    drools动态生成规则文件

    drools动态生成规则文件是基于Java的业务规则管理系统,它允许开发者在运行时创建、修改和执行业务规则。 Drools是Red Hat JBoss BRMS(Business Rules Management System)的一部分,它提供了一种强大的规则引擎,...

    Drools规则引擎使用demo

    3. **Drools规则语法**: - `rule "规则名"` 定义一个规则,规则名用于标识规则。 - `when` 开始定义规则的条件,可以使用Drools的DSL(Domain Specific Language)或者MVEL表达式。 - `then` 规则的行动部分,当...

    Drools 规则流的使用介绍

    **Drools 规则流的使用介绍** Drools 是一个开源的业务规则管理系统(BRMS),它基于Java平台,提供了强大的规则引擎和规则流(Workflow)功能。这篇文章将深入探讨Drools如何实现规则流,以及如何在实际项目中有效...

    drools规则文件

    drools开发

    Drools 规则引擎的介绍及应用

    #### 三、Drools规则集文件语法 Drools规则通常使用Drools Rule Language (DRL)编写,这是一种简洁而强大的语言,允许开发者以自然语言风格定义业务规则。DRL支持条件表达式、函数调用等多种语法结构,并且能够与...

    Drools规则引擎从入门到精通源码

    从基础讲起,结合应用场景,由浅到深细化讲解drools规则引擎的的相关知识,并结合具体实例,演示功能的使用和注意事项。后面通过搭建具体的项目并结合springboot框架联合使用Drools的相关知识包括决策表的使用,囊括...

    Drools7 + Springboot2 动态更新规则

    Drools 7引入了更高效的工作内存管理,优化了执行性能,并提供了更丰富的API和改进的规则语法。 接下来,我们讨论如何在Spring Boot项目中集成Drools。首先,我们需要在`pom.xml`中添加Drools和Spring Boot的依赖。...

    springboot整合Drools规则引擎,实现高效的业务规则

    2、规则语法 (1)、演示drl文件格式 package droolRule ; import org.slf4j.Logger import org.slf4j.LoggerFactory ; dialect "java" rule "paramcheck1" when then final Logger LOGGER = LoggerFactory....

    Droosl规则文件+语法结构+案例实现代码

    该资源文件是本人CSDN 技术文章专栏《Drools》相关文章的代码案例,包含了Drools规则文件语法代码、规则属性测试代码、Drools高级语法代码、综合案例-消费积分案例代码等相关内容;有兴趣的朋友可以下载下来看看;...

    springboot集成drools实现重新加载规则

    接下来,我们需要创建Drools的规则文件(`.drl`),该文件包含了业务规则的定义。例如: ```drl package com.example.rules import com.example.model.MyObject; rule "Example Rule" when $myObject : MyObject...

    从Drools规则引擎到风控反洗钱系统v0.3.2.pdf

    10. **规则**:详细介绍了Drools中的规则文件编写,包括规则文件的基本语法、包(package)、规则属性、定时器和日历的使用等。 11. **LHS和RHS语法**:解释了规则左侧(LHS)和右侧(RHS)的语法结构,它们分别...

    drools 语法教程

    KnowledgeBuilder 是 Drools 提供的 API,用来在业务代码中收集已经编写好的规则,然后对这些规则文件进行编译,最后产生一批编译好的规则包(KnowledgePackage)给其他应用程序使用。KnowledgeBuilder 在编译规则的...

    Drools规则引擎介绍.ppt

    【Drools规则引擎介绍】 Drools是一款由JBoss公司开发的开源规则引擎,它致力于将业务规则从复杂的业务逻辑代码中分离出来,实现业务规则的独立管理和灵活变更。Drools基于Rete算法,这是一套高效的规则匹配算法,...

    drools-规则语言

    1. **编写规则文件**:创建Drools规则文件(.drl),定义规则的条件和操作。 2. **加载规则**:使用Drools框架加载规则文件。 3. **插入事实**:向规则引擎中插入事实(通常是Java对象)。 4. **执行规则**:触发规则...

    Drools规则引擎及教程

    3. **规则语法**:掌握Drools的DRL(Drools Rule Language)语言,学习如何编写规则,包括条件语句(LHS,左侧)和动作语句(RHS,右侧)。 4. **规则的加载与执行**:学习如何使用KieSession加载规则,并通过...

    Drools规则引擎样例系统

    这些源码通常以DRL文件形式存在,包含了所有业务规则的定义。通过DRL,开发者可以明确地指定规则的触发条件、行动以及优先级。Drools内部使用了基于内存的rete算法,这种高效的匹配机制使得Drools能在大量规则和事实...

    规则引擎Drools入门实战案例

    规则属性 Drools高级语法 Spring整合Drools Spring Boot整合Drools WorkBench Drools实战 个人所得税计算器 信用卡申请 保险产品准入规则 规则引擎,全称为业务规则管理系统,英文名为BRMS(即Business Rule ...

Global site tag (gtag.js) - Google Analytics