IKExpression使用及jar包下載
類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包