類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。
- 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 類的實例 - 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
如果訪問不了請到我博客下載