IKExpression简易表达式解析器使用说明目录1.IK表达式介绍(IKExpressionIntroduction).....................................................22.快速入门(QuickStart)..........................................................................................63.表达式公式规范(ExpressionFormulaSpecification)..................................124.高级特性(Advance).............................................................................................191.IK表达式介绍(IKExpressionIntroduction)IKExpression是一个开源的(OpenSource),可扩展的(Extensible),基于java语言开发的一个超轻量级(Superlightweight)的公式化语言解析执行工具包。IKExpression不依赖于任何第三方的java库。它做为一个简单的jar,可以集成于任意的Java应用中。这包括了JavaEE应用(基于应用服务器的),Java桌面应用以及JavaWebStart方式的应用。IKExpression最初诞生的原因是为了能增强工作流引擎,如jBPM等对流程配置的灵活度。使其能在流程运行期获得同配置期一样灵活地对执行逻辑条件进行变更。经过扩展后的IKExpression还可以适用于各种常规业务系统的动态条件配置,如需要图形化配置应用的场合,或是模拟Excel电子表格的公式运算的场景。同EL和BeanScript不同,IKExpression的设计目标是面向最终用户的,因此它被设计成语法简单(像数学算式),通俗易懂(支持中文变量及函数名)但功能有限的解析引擎。如果你需要一个功能强大的表达式引擎,也许IKExpression并不是最好的选择。1.1概要(OverView)IKExpression是一个采用逆波兰式算法结合指针栈优化的公式解析引擎,它由表达式编译、、表达式执行、变量容器、以及函数配置管理四部分构成。它具有以下特点:�支持基础运算符+-×/%逻辑运算符!&&||三元运算符?:以及特有的#集合运算。支持括号优先级,对&&,||,?:有短路优化处理。�支持函数执行,函数扩展,支持变量定义。�完整Jar包大小90K,API简单易学,超轻量级,无第三方类库依赖。IKExpression组件结构图1.2升级变更(ChangesLog)Version2.1的变更:�新增org.wltea.expression.ExpressionEvaluator.preparedCompile(Stringexpression,Collectionvariables)方法和类org.wltea.expression.PreparedExpression用来支持表达式预编译。用户可以像处理SQL语句那样,对需要循环执行的相同表达式进行预编译处理,而后设置不同的执行参数,得到不同的计算结果。详见“样例代码”和”API说明”.�修订了对声明为Object类型的参数传入Integer、Double、String等类型的值时,会抛出类型不匹配异常的问题。原来版本中,参数必须显式申明为DATATYPE_OBJECT类型,新版本则不需要,所有java类型默认继承于Object。�修改了ExpressionEvaluator的两个compile方法,不再抛出IllegalExpressionException异常,而改为运行期异常,以简化用户编码。Version2.0.5的变更:�支持表达式的换行编辑,方便表达式编写和阅读,如:�提供了更多的开放API,如:表达式验证API,这使得表达式在执行前可以检查其语法正确性。�修订了“?:”三元操作符的“:“号两端对不同类型的数值不兼容的BUG。如:原有版本中,表达”100>10?100:10.5“将会抛出“参数类型不兼容“异常,在新版本中,则返回double型的100.0Version2.0.2的变更:�修订了自定义函数返回类型为void时,表达式校验会抛出异常的BUG。$CALCDATE([2008-03-01],0,0,-(10+(23-3)*(4/5))%6,0,0,0)对于void返回类型,IK-Expression将当作null类型进行计算。Version2.0.1的变更:�添加了对表达式的折行书写的支持(即对表达式中出现CRLF的支持),方便于用户编写逻辑复杂的长表达式,增强表达式可阅读性。Version2.0的变更:�增加了“?:“三元操作符。�增强了“+“操作符,支持对null型,Date型,Boolean型的连接操作。�增加了自定义函数扩展,支持配置方式扩展函数和API编码方式扩展函数。�增加了函数别名映射功能,可配置中文函数别名。�增加了函数参数和返回值对javaObject类型的支持。...