表達式解釋引擎 JSEL

openkk 12年前發布 | 54K 次閱讀 Java JSON開發包

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);
    }
}

項目主頁:http://www.baiduhome.net/lib/view/home/1324197475108

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!