表達式解釋引擎 JSEL
JSEL是一個兼容 JavaScript 運算規則的簡單的表達式解釋引擎,你可以通過Map接口,或者JavaBean給出一個變量集合,能后通過表達式從這個集合中抽取變量,再通過表達式邏輯生成你需要的數據。
適用場合
- 模板引擎的表達式實現。
- 通用數學表達式計算工具
- 嵌入其他對文件大小要求苛刻環境。
- 規則引擎的表達式需求
模板系統處理各種后臺數據的時候,就需要用到表達式的功能。有些簡單的模板系統的表達式功能非常有限,比如說只支持變量,屬性獲取;如果有了JSEL,他的功能將非常強大。 LITE采用的默認表達式引擎就是JSEL。
可用于最終用戶定義簡單運算規則;比如,你可以通過他設計一個功能強大的計算器。
如手機軟件,webstart小程序中,如果你希望用表達式做一些簡單的計算,那么JSEL是一個不錯的選擇。
JSEL非常方便擴展,您可以在JSEL基礎上擴展業務相關的操作符。或者函數調用。
基本特征
- 運算規則基于JavaScript。
- 支持變量,常量(基礎類型/數字/對象字面量),ECMA全局函數/對象,基本運算符。
- 引擎實現的簡單高效
- 可擴展
程序體積非常小(附加上Lite模板運行環境后,jar文件依然只有90k,同類工具OGNL 168k)。
支持函數擴展,操作符別名定義,操作符定義。
基本用法import org.xidea.el.Expression;
import org.xidea.el.ExpressionImpl;
import java.util.HashMap;
public class Test{
public static void main(String[] args){
Expression el = new ExpressionImpl("var1 +2 * var2");
//Expression el = new ExpressionImpl("var1 +2 * var2",new CalculaterImpl());//你也可以定義你自己的運算規則
HashMap context = new HashMap();
context.put("var1",111);
context.put("var2",222);
Object result1 = el.evaluate(context);//555
context.put("var2",333);
Object result2 = el.evaluate(context);//777
System.out.println("result1:");
System.out.println(result1);
System.out.println("result2:");
System.out.println(result2);
}
}
本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!