当前位置: 首页 > 工具软件 > IKExpression > 使用案例 >

IKExpression使用及jar包下载

家志学
2023-12-01

类org.wltea.expression.ExpressionEvaluator

  • public static Object evaluate(String expression, Collection variables)
    说明:传入表达式和表达式上下文的变量,执行表达式返回结果
    参数1 :String expression, 要传入执行的表达式
    参数2 :Collection variables 表达式上下文的变量集合( 详细请看类
    org.wltea.expression.datameta.Variable 的说明)。
    返回值:表达式执行结果,可能是以下类型的java 对象中的一种:
    Int、Long、Float、Double、Boolean、String、Date、List、Object。

  • public static Object evaluate(String expression)
    说明:对方法1 的重载,执行简单的没有变量的表达式。请参考方法1 说明.

  • public static String compile(String expression, Collection variables)
    说明:传入表达式和表达式上下文的变量,对表达式进行语法编译测试,返回逆波兰式表示。
    参数1 :String expression, 要传入执行的表达式
    参数2 :Collection variables 表达式上下文的变量集合( 详细请看类
    org.wltea.expression.datameta.Variable 的说明)。
    返回值:表达式的逆波兰式表示

  • public static String compile(String expression)
    说明:对方法3 的重载,编译简单的没有变量的表达式。请参考方法3 说明.

  • public static PreparedExpression preparedCompile(String expression ,Collection variables)
    说明:传入表达式和表达式上下文的变量,对表达式进行预编译处理,返回预编译完的表达式对象。
    参数1 :String expression, 要传入执行的表达式
    参数2 :Collection variables 表达式上下文的变量集合( 详细请看类org.wltea.expression.datameta.Variable 的说明)。
    返回值:PreparedExpression 预编译完的表达式对象。

类org.wltea.expression.PreparedExpression
该类表示IK-Expression 的预编译表达式。

  • public synchronized void setArgument(String name , Object value)
    说明:设定预编译表达式的执行时的参数值。如果设定的参数不在预编译处理的参数集合中,
    则抛出IllegalArgumentException 异常。
    参数1 :String name, 参数名,可以是中文字符
    参数2 :Object value,参数的值,可以是下类型的java 对象中的一种:
    Int、Long、Float、Double、Boolean、String、Date、List、Object

  • public Object execute()
    说明:执行预编译表达式
    返回值:表达式执行结果,可能是以下类型的java 对象中的一种:
    Int、Long、Float、Double、Boolean、String、Date、List、Object。

类org.wltea.expression.datameta.Variable

该类是用来表示表达式的上下文变量的,上面的例子中用到了别名为“用户名”的上下
文变量,这是也是表达式最有用的地方。例如,在jBPM 的流程定义中,我们需要定义一个
报销审批流程中,用来决定流程分支走向的表达式: (申请金额> 10000)?“总经理审批”:“部门经理审批”
这里需要定义一个别名为“申请金额“变量。变量通过evaluate(String expression,
Collection variables)方法中的variables 参数传入表达式中。而Variable 类型
变量的构造十分的简单,它是标准的POJO。

  1. public static Variable createVariable(String varName , Object varValue)
    说明:根据参数别名和参数值,构造Variable 实例
    参数1 :String varName, 参数的别名,可以是中文别名
    参数2 :Object varValue,参数的值, 可以是下类型的java 对象中的一种:
    Int、Long、Float、Double、Boolean、String、Date、List、Object。
    返回值:org.wltea.expression.datameta.Variable 类的实例
  2. public Variable(String varName , DataType varDataType , Object varValue)
    说明:根据指定的参数类型、参数别名和参数值,构造Variable 实例
    参数1 :String varName, 参数的别名,可以是中文别名
    参数2 :DataType varDataType, 变量类型,它是
    org.wltea.expression.datameta. BaseDataMeta.DataType 枚举类型,包括的枚举值有:
    //NULL类型DATATYPE_NULL ,
    //字符窜DATATYPE_STRING ,
    //布尔类DATATYPE_BOOLEAN ,
    //整型数DATATYPE_INT ,
    //长整型数DATATYPE_LONG ,
    //浮点数DATATYPE_FLOAT ,
    //双精度浮点DATATYPE_DOUBLE ,
    //日期时间DATATYPE_DATE ,
    //集合对象DATATYPE_LIST,
    //通用对象类型DATATYPE_OBJECT,
    参数3 :Object varValue,参数的值, 可以是下类型的java 对象中的一种:
    Int、Long、Float、Double、Boolean、String、Date、List、Object。
    返回值:org.wltea.expression.datameta.Variable 类的实例
    Demo
/**
* Hello World Example
*/
public static void main(String[] args){
   if(args.length == 0){
   args = new String[1];
   args[0] = "IK Expression";
} 
   //定义表达式
    String expression = "\"Hello World \" + 用户名";
    //给表达式中的变量“用户名”付上下文的值
     List<Variable> variables = new ArrayList<Variable>();
    variables.add(Variable.createVariable("用户名", args[0]));
    //执行表达式
    Object result = ExpressionEvaluator.evaluate(expression,variables);
     System.out.println("Result = " + result);
}

执行结果: Result = Hello World IK Expression

预编译执行样例

public static void main(String[] args){
    if(args.length == 0){
	args = new String[1];
	args[0] = "IK Expression V2.0.5";
       } //定义表达式
    String expression = "\"Hello \" + 版本";
//给表达式中的变量[版本] 付上下文的值
    List<Variable> variables = new ArrayList<Variable>();
    variables.add(Variable.createVariable("版本", args[0]));
//预编译表达式
    PreparedExpression pe =ExpressionEvaluator.preparedCompile(expression, variables);
//执行表达式
    Object result = pe.execute();
    System.out.println("Result = " + result);
//更改参数,再次执行预编译式
    pe.setArgument("版本", "IK Expression V2.1.0");
    result = pe.execute();
    System.out.println("Result = " + result);
}

执行结果:
Result = Hello IK Expression V2.0.5
Result = Hello IK Expression V2.1.0

下载的jar包

https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/ik-expression/IKExpressionV2.1.2AllInOne.rar
如果访问不了请到我博客下载

 类似资料: