`
samsung_789
  • 浏览: 973 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

心飞扬

    博客分类:
  • java
阅读更多
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
分享到:
评论

相关推荐

    我心飞扬主图 通达信主图指标最精准指标.doc

    我心飞扬主图 通达信主图指标最精准指标.doc

    我心飞扬猪猪侠java类加密工具

    我心飞扬加密工具是对java class文件进行加密保护防止反编译的工具!本工具全面支持linux/unix/windows操作系统。 继推出v1.0版本后,获得了用户大量的支持与的反馈,我们再次推出本v2.0版,对加密算法进行了更大的...

    我心飞扬彩色简历Word模板.doc

    我心飞扬彩色简历Word模板.doc

    通达信指标公式源码我心飞扬指标公式.doc

    通达信指标公式源码我心飞扬指标公式.doc

    学生会新梦心飞扬主持人大赛项目策划书.doc

    学生会新梦心飞扬主持人大赛项目策划书.doc

    我心飞扬java类加密工具2.1(亲测可用)

    简要介绍: 本工具是对java class文件进行加密保护的工具!继推出v1.0版本后,获得了用户大量的支持与的反馈,我们再次推出本升级版,对加密算法进行了更大的改进,安全性大大提升! 众所周知,java编译后的class...

    java Class文件解密大师

    众所周知,java编译后的class文件是一种中间字节码文件,...此工具 支持我心飞扬类加密工具(class文件加密器) V2 以及class文件加密专家V3.5等网络上能找到加密工具 制作 by 大师♂罗庄 http://blog.csdn.net/luozhuang

    青春无悔系统模板和用户模板.rar

    oBLOG模板名称:青春无悔系统模板和用户模板 oBLOG适用版本:OGLOG 2.52系统模板和用户模板 ... 注意请不要在上面乱发东东,我会不高兴的…… 一**见“年轮”网络**记本的版面挺不错,于是就……,哈,仿的还蛮像吧...

    HTML《个人博客》源代码

    第一次做,静态的!喜欢的可以看看,我还是做了很久哦!有什么改进的地方,自己去改吧

    c#拼图游戏

    using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq;... g.DrawImage(bm, new Rectangle(0, 0, Picsize, Picsize), (Rectangle)...

    基于JAVAweb学生信息登记系统

    基于JAVAweb的学生信息管理系统,可以实现对学生的基本信息进行录入,并可以下载到Excel表。源代码直接可以运行 开发环境:Eclipse、Tomcat、MySQL、jdk 内部包含的war包可以直接放到tomcat下运行与测试,源码包含...

    Hilditch细化算法:java实现

    我使用JAVA写的Hilditch细化算法,原创,网上有C和C#的,但java版的是我首写的。

    学生信息管理系统学生信息管理系统

    学生信息管理系统__源程序学生信息管理系统__源程序学生信息管理系统__源程序学生信息管理系统__源程序学生信息管理系统__源程序学生信息管理系统__源程序学生信息管理系统__源程序

    Visual.C#.NET.网络核心编程、pdf

    一本C#入门后要看的书,本书内容很精彩,强力推荐

    CXF集成Spring示例_附源码

    自己总结的一个CXF集成Spring的例子,可以直接运行,附源码! 程序的详细说明请参照博客文档 http://blog.csdn.net/sunbaojin5213344/article/details/8931600

    基于Javaweb的Excel的上传、数据的批量导入

    开发环境:Eclipse、Tomcat、MySQL、jdk 内容说明:内部包含页面index.jsp,工具类ReadExcel,执行部分IndexServlet。关键jar包:、poi-3.9.jar、poi-ooxml-3.9.jar 、org.springframework.web-3.1.3.release.jar...

    AndroidKiller反编译软件

    Android反编译工具,使用说明见我的博客:http://blog.csdn.net/lgd19901215/article/details/52945998

    基于javaweb的PC端库存管理软件

    开发环境:Eclipse、Tomcat、MySQL、jdk 内部包含的war包可以直接放到tomcat下运行与测试,源码包含完整代码与所有jar包,可以直接使用也可以根据自己需求参考挪用。 实现实时库存查看、入库、出库

    ATmega128常用代码

    ATmega128代码 适合学习AVR单片机的朋友们参考。。

    多机联合绘图聊天程序

    注意:本程序为单机版,若想变成多机板,请在程序中改IP,另外,本程序运行中没法在面板中添加字体,有异常,请多多包涵,程序关闭后,有可能在资源管理器中进程没有关闭,请手工关闭,以免影响下次运行。

Global site tag (gtag.js) - Google Analytics