项目结构
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);//反射获得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;
}
总测试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;
}
}