`
shift8
  • 浏览: 146609 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

在Drools中使用MVEL

阅读更多

dialect设置规则当中要使用的语言类型 ,默认除了java还有mevl。本文简单介绍mvel。 
mvel是一种嵌入式脚本语言,在规则文件上可以用这种语言建立他们的断言、返回值、Eval和推论。mvel分解析模式(Interpreted Mode)和编译模式(Compiled Mode) 


mvel语法: 
表示对象的属性 

user.name   相当于java代码 user.getName() 
user.manager.name  相当于java代码 user.getManager().getName() 
比较 
user.name == 'John Doe' 
(user.name == 'John Doe') && ((x * 2) - 1) > 20 


返回值 
a = 10; 
b = (a = a * 2) + 10; 相当于java代码  a=10; a= a*2; b=  a + 10; 
return a; 


数组和list访问:user[5]   相当于java代码 user.get(5); 
Map访问:user["foobar"]   相当于java代码 user.get("foobar") 


创建对象: 
new String("foo") 


对一个对象,多个属性赋值 
with (user = new User()) { 
       name = "John Doe", 
       age = 28, 
       sex = Sex.MALE, 
       admin = true 
    } 




脚本: 
note: 
语法跟一些函数语言或脚本语言差不多,如scala 


调用某些方法 
String test = "Hello"; 
Object result = MVEL.eval("toUpperCase()", test); 


获取pojo的属性值 
User user = new User(); 
user.setName("Bob"); 
user.setPassword("Despot"); 
user.setAge(30); 


String name = (String) MVEL.eval("name", user); 


比较 
public class Person { 
    private String name; 
    public void setName(String name) { this.name = name; } 
    public String getName() { return this.name; } 



Person 
personInst = new Person(); 
personInst.setName("Mr. Foo"); 


Object result = MVEL.eval("name == 'Mr. Foo' ", personInst); 


赋值 
Map vars = new HashMap(); 
vars.put("x", new Integer(5)); 
vars.put("y", new Integer(10)); 


Integer result = (Integer) MVEL.eval("x * y", vars); 
相当于java代码 Integer  result =  (Integer)vars.get("x") *  (Integer)vars.get(" y ") 
assert result.intValue() == 50;  // Mind the JDK 1.4 compatible code 


规则文件使用mvel示例 



示例1: 

package com.demo.mvel 


import com.demo.* 


rule "rule1" 
dialect "mvel" 
when 
#设是规则引擎语法 
$a : Applicant( age < 18 ) 
then   
#mvel 语法 
$a.valid = false; 
end 

 


示例2: 

package com.demo.mvel 


import com.demo.* 
import java.util.List; 


rule "rule1" 
    salience 2 
     dialect "java" 
     when 
  eval(true); 
     then 
  Applicant app = new Applicant("依晨",20); 
  insert(app); 
end 


rule "rule2" 
    salience 1 
    dialect "mvel" 
    #no-loop true 不会循环 
    when 
       $app:Applicant(name == "依晨",age<30) 
    then 
       #update方法2 
      #$app.age + 1是mvel语法 
       Applicant app = new Applicant("依晨",$app.age + 1); 
       update(drools.getWorkingMemory().getFactHandleByIdentity($app),app); 
    
       #update方法1 
       #$app.setAge($app.getAge() + 1); 
       #update($app); 
       System.out.println("------" + $app.name+"("+ $app.age + ")"); 
end

 

分享到:
评论

相关推荐

    drools使用的jar包

    drools使用的jar包,运行官方drools-distribution-7.7.0.Final drools使用的jar包,运行官方drools-distribution-7.7.0.Final drools使用的jar包,运行官方drools-distribution-7.7.0.Final drools使用的jar包,运行...

    规则引擎Drools 中文使用教程

    Drools中文使用教程 Drools(JBoss Rules )具有一个易于访问企业策略、易于调整以及易于管理的开源业务规则引擎,符合业内标准,速度快、效率高。业务分析师或审核人员可以利用它轻松查看业务规则,从而检验是否已...

    规则引擎Drools使用手册(中文)

    规则引擎Drools使用手册(中文),对于学习和研究Drools技术很有帮助的~~

    drools drools drools drools drools

    drools drools drools drools drools

    mvel2-2.1.0.drools16.jar

    mvel2-2.1.0.drools16.jar mvel2-2.1.0.drools16.jar

    Drools4.0使用手册中文

    jboss的Drools规则引擎使用说明

    Drools4中文使用手册

    Drools由Java语言开发,但是可以运行在Java环境和.NET环境下。 Drools被设计为允许插入语言实现。当前,可以由Java、Python和Groovy实现业务规则。对于其它实现,Drools通过使用Schema定义XML提供Declarative ...

    drools calendar 使用demo

    drools calendar 使用demo

    drools7.25中文文档+drools技术指南.zip

    drools最新版本学习资料,里面系统的介绍了drools规则引擎的简介以及集成到项目的教程内容。欢迎下载,收集不易,欢迎点赞。

    drools安装与配置

    drools

    Drools7_PDF教程 Drools中文文档 内容全面.zip

    Drools7_PDF教程 Drools中文文档 内容全面。...1. 内容更加全面,更多细节,更多知识点全部在新版本中有所体现,并且会附上小编做的例子 ,更多内容不断更新中 2. 目前国内最全的Drools中文文档。也是目前国内唯一一本

    drools的使用.pdf

    drools的使用说明,包含示例和自定义规则

    Drools6 和 Drools7技术指南-中文文档.zip

    Drools开发最全中文版技术指南。 Drools开发最全中文版技术指南,介绍了常见的drools如何进行开发,注意是:中文版中文版中文版! drools 中文文档 规则引擎 drools6 drools7 Java

    Drools4.0官方使用手册中文.doc

    A.I.(Artificial Intelligence)是一个关注于“使计算机像人类一样思考“的广泛的研究领域,包括Neural Networks(神经...Drools是一个使用基于规则的方法实现的专家系统的规则引擎,更准确的说属于产生式规则系统。

    Drools规则引擎从入门到精通

    后面通过搭建具体的项目并结合springboot框架联合使用Drools的相关知识包括决策表的使用,囊括一般项目中所需要的知识点,理论结合实际,让真正入门到熟练。 1 Drools简介1.1 Drools的作用1.2 使用规则引擎的优势1.3...

    drools在j2ee项目中的应用

    规则引擎Drools在J2EE项目开发中的应用.pdf

    Drools4.0官方使用手册中文

    Drools5规则引擎开发教程.pdf 博文链接:https://haroldxie.iteye.com/blog/1167148

    drools使用语法

    drools5.0使用帮助文档,包括规则调用的库,类 ,接口,方法

    drools4.0 使用相关的jar包

    antlr-runtime.jar drools-compiler.jar drools-core.jar drools-decisiontables.jar drools-jsr94.jar droolsService.jar jsr94.jar jxl.jar mvel.jar xpp3.jar

    drools 7.1中文文档pdf完整版本

    drools中文文档pdf完整版本,drools 新版本功能,技术开发细节及api说明

Global site tag (gtag.js) - Google Analytics