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。

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章