表达式解释引擎 JSEL

openkk 12年前
     <p>JSEL是一个兼容 JavaScript 运算规则的简单的表达式解释引擎,你可以通过Map接口,或者JavaBean给出一个变量集合,能后通过表达式从这个集合中抽取变量,再通过表达式逻辑生成你需要的数据。 </p>    <h4>适用场合</h4>    <ul>     <li>模板引擎的表达式实现。 </li>     <blockquote>      模板系统处理各种后台数据的时候,就需要用到表达式的功能。有些简单的模板系统的表达式功能非常有限,比如说只支持变量,属性获取;如果有了JSEL,他的功能将非常强大。 LITE采用的默认表达式引擎就是JSEL。     </blockquote>     <li>通用数学表达式计算工具 </li>     <blockquote>      可用于最终用户定义简单运算规则;比如,你可以通过他设计一个功能强大的计算器。     </blockquote>     <li>嵌入其他对文件大小要求苛刻环境。 </li>     <blockquote>      如手机软件,webstart小程序中,如果你希望用表达式做一些简单的计算,那么JSEL是一个不错的选择。     </blockquote>     <li>规则引擎的表达式需求 </li>     <blockquote>      JSEL非常方便扩展,您可以在JSEL基础上扩展业务相关的操作符。或者函数调用。     </blockquote>    </ul>    <h4><a name="基本特征"></a>基本特征</h4>    <ul>     <li>运算规则基于JavaScript。 </li>     <li>支持变量,常量(基础类型/数字/对象字面量),ECMA全局函数/对象,基本运算符。 </li>     <li>引擎实现的简单高效 </li>     <blockquote>      程序体积非常小(附加上Lite模板运行环境后,jar文件依然只有90k,同类工具OGNL 168k)。     </blockquote>     <li>可扩展 </li>     <blockquote>      支持函数扩展,操作符别名定义,操作符定义。     </blockquote>    </ul>    <h4>基本用法<pre class="brush:java; toolbar: true; auto-links: false;">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);     } }</pre> <p><strong>项目主页:</strong><a href="http://www.open-open.com/lib/view/home/1324197475108" target="_blank">http://www.open-open.com/lib/view/home/1324197475108</a></p> </h4>