复习步骤27 MVEL测试

项目结构

1.

测试inputEntry标签 中的执行匹配的MVEL表达式其实就是我们代码的

// 编辑表达式

        Serializable compiledExpression = MVEL

                .compileExpression("person.age >= 18");

测试方法

//测试inputEntry标签 中的执行匹配的MVEL表达式其实就是我们代码的编辑表达式

    public static void compiledExpressionTest(){

        // 编辑表达式

        Serializable compiledExpression = MVEL

                .compileExpression("person.age >= 18");

 

        Map<String, Object> vars = new HashMap<String, Object>();

        Person p = new Person();

        p.setAge(19);

        vars.put("person", p);

 

        // 执行表达式并返回结果

        Boolean result = MVEL.executeExpression(compiledExpression, vars,

                Boolean.class);

       

        System.out.println(result);

    }

 

2.

 

测试方法

//自定义MVEL表达式函数 fn_test

    public static void customMVELFn() {

        Method m = getMethod(MvelTest.class, "testMethod", String.class, Integer.class);//反射获得MvelTesttestMethod方法

       

        // 创建解析上下文对象

        ParserContext parserContext = new ParserContext();

        // 添加方法导入   ---m方法导入给自定义方法fn_test

        parserContext.addImport("fn_test", m);

       

        //编译MVEL 表达式 fn_test

        Serializable compiledExpression = MVEL.compileExpression("fn_test('小明', 17)", parserContext);

        //执行编译好的 MVEL表达式,即fn_test('小明', 17)

        String result = MVEL.executeExpression(compiledExpression, null,

                String.class);//String.class 表达式执行结果返回类型

        System.out.println(result);

    }

 

    public static String testMethod(String name, Integer age) {

        return "名称:" + name + ", 年龄:" + age;

    }

 

    public static Method getMethod(Class classRef, String methodName,

            Class... methodParm) {

        try {

            return classRef.getMethod(methodName, methodParm);

        } catch (NoSuchMethodException e) {

            e.printStackTrace();

        }

        return null;

    }

 

 

总测试JAVA . MvelTest.java

package com.xiangshuai.act.c29;

 

import java.io.Serializable;

import java.lang.reflect.Method;

import java.util.HashMap;

import java.util.Map;

 

import org.mvel2.MVEL;

import org.mvel2.ParserContext;

 

/**

 * @author lqx

 * E:\学习文档子目录压缩\框架\工作流引擎\Activiti6.0\window\复习步骤27 MVEL测试

  或 我的网盘\我的笔记\学习文档子目录压缩\框架\工作流引擎\Activiti6.0\window\复习步骤27 MVEL测试

 *

 */

public class MvelTest {

 

    public static void main(String[] args) {

        //compiledExpressionTest();

             customMVELFn();

 

    }

    //测试inputEntry标签 中的执行匹配的MVEL表达式其实就是我们代码的编辑表达式

    public static void compiledExpressionTest(){

              // 编译表达式

        Serializable compiledExpression = MVEL

                .compileExpression("person.age >= 18");

 

        Map<String, Object> vars = new HashMap<String, Object>();

        Person p = new Person();

        p.setAge(19);

        vars.put("person", p);

 

        // 执行表达式并返回结果

        Boolean result = MVEL.executeExpression(compiledExpression, vars,

                Boolean.class);

       

        System.out.println(result);

    }

   

   

    //自定义MVEL表达式函数 fn_test

    public static void customMVELFn() {

        Method m = getMethod(MvelTest.class, "testMethod", String.class, Integer.class);//反射获得MvelTest的testMethod方法

       

        // 创建解析上下文对象

        ParserContext parserContext = new ParserContext();

        // 添加方法导入   ---将m方法导入给自定义方法fn_test

        parserContext.addImport("fn_test", m);

       

        //编译MVEL 表达式 fn_test

        Serializable compiledExpression = MVEL.compileExpression("fn_test('小明', 17)", parserContext);

        //执行编译好的 MVEL表达式,即fn_test('小明', 17)

        String result = MVEL.executeExpression(compiledExpression, null,

                String.class);//String.class 表达式执行结果返回类型

        System.out.println(result);

    }

 

    public static String testMethod(String name, Integer age) {

        return "名称:" + name + ", 年龄:" + age;

    }

 

    public static Method getMethod(Class classRef, String methodName,

            Class... methodParm) {

        try {

            return classRef.getMethod(methodName, methodParm);

        } catch (NoSuchMethodException e) {

            e.printStackTrace();

        }

        return null;

    }

 

}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值