IK Expression表達(dá)式解析執(zhí)行器
IK Expression是一個(gè)開源的(OpenSource),可擴(kuò)展的(Extensible),基于java語言開發(fā)的一個(gè)超輕量級(jí)(Super lightweight)的公式化語言解析執(zhí)行工具包。
IK Expression V2.0不依賴于任何第三方的java庫。它做為一個(gè)簡單的jar,可以集成于任意的Java應(yīng)用中。這包括了JavaEE應(yīng)用(基于應(yīng)用服務(wù)器的), Java桌面應(yīng)用以及Java WebStart方式的應(yīng)用。
IK Expression最初誕生的原因是為了能增強(qiáng)工作流引擎,如jBPM等對(duì)流程配置的靈活度。使其能在流程運(yùn)行期獲得同配置期一樣靈活地對(duì)執(zhí)行邏輯條件 進(jìn)行變更。經(jīng)過擴(kuò)展后的IK Expression還可以適用于各種常規(guī)業(yè)務(wù)系統(tǒng)的動(dòng)態(tài)條件配置,如需要圖形化配置應(yīng)用的場(chǎng)合,或是模擬Excel電子表格的公式運(yùn)算的場(chǎng)景。
同EL和BeanScript不同,IK Expression的設(shè)計(jì)目標(biāo)是面向最終用戶的,因此它被設(shè)計(jì)成語法簡單(像數(shù)學(xué)算式),通俗易懂(支持中文變量及函數(shù)名)但功能有限的解析引擎。如果 你需要一個(gè)功能強(qiáng)大的表達(dá)式引擎,也許IK Expression并不是最好的選擇。
IK Expression 組件結(jié)構(gòu)圖
代碼示例:
/**
* Hello World Example
* @param args
*/
public static void main(String[] args){
if(args.length == 0){
args = new String[1];
args[0] = "IK Expression";
}
//定義表達(dá)式
String expression = "\"Hello World \" + 用戶名";
//給表達(dá)式中的變量userName付上下文的值
List<Variable> variables = new ArrayList<Variable>();
variables.add(Variable.createVariable("用戶名", args[0]));
//執(zhí)行表達(dá)式
Object result = ExpressionEvaluator.evaluate(expression, variables);
System.out.println("Result = " + result);
}
