public class ExpressRunner
extends java.lang.Object
| 构造器和说明 |
|---|
ExpressRunner() |
ExpressRunner(boolean aIsPrecise,
boolean aIstrace) |
ExpressRunner(boolean aIsPrecise,
boolean aIstrace,
IExpressResourceLoader aExpressResourceLoader,
NodeTypeManager aManager) |
ExpressRunner(boolean aIsPrecise,
boolean aIstrace,
NodeTypeManager aManager) |
| 限定符和类型 | 方法和说明 |
|---|---|
void |
addClassField(java.lang.String field,
java.lang.Class<?> bindingClass,
java.lang.Class<?> returnType,
Operator op)
添加类的方法
|
void |
addClassField(java.lang.String field,
java.lang.Class<?> bindingClass,
Operator op)
添加类的方法
|
void |
addClassMethod(java.lang.String name,
java.lang.Class<?> bindingClass,
OperatorBase op)
添加类的方法
|
void |
addFunction(java.lang.String name,
OperatorBase op)
添加函数定义
|
void |
addFunctionAndClassMethod(java.lang.String name,
java.lang.Class<?> bindingClass,
OperatorBase op)
添加函数定义扩展类的方法
|
void |
addFunctionOfClassMethod(java.lang.String name,
java.lang.Class<?> aClass,
java.lang.String aFunctionName,
java.lang.Class<?>[] aParameterClassTypes,
java.lang.String errorInfo)
添加一个类的函数定义,例如:Math.abs(double) 映射为表达式中的 "取绝对值(-5.0)"
|
void |
addFunctionOfClassMethod(java.lang.String name,
java.lang.String aClassName,
java.lang.String aFunctionName,
java.lang.Class<?>[] aParameterClassTypes,
java.lang.String errorInfo)
添加一个类的函数定义,例如:Math.abs(double) 映射为表达式中的 "取绝对值(-5.0)"
|
void |
addFunctionOfClassMethod(java.lang.String name,
java.lang.String aClassName,
java.lang.String aFunctionName,
java.lang.Class<?>[] aParameterClassTypes,
java.lang.String[] aParameterDesc,
java.lang.String[] aParameterAnnotation,
java.lang.String errorInfo)
添加一个类的函数定义,例如:Math.abs(double) 映射为表达式中的 "取绝对值(-5.0)"
|
void |
addFunctionOfClassMethod(java.lang.String name,
java.lang.String aClassName,
java.lang.String aFunctionName,
java.lang.String[] aParameterTypes,
java.lang.String errorInfo)
添加一个类的函数定义,例如:Math.abs(double) 映射为表达式中的 "取绝对值(-5.0)"
|
void |
addFunctionOfClassMethod(java.lang.String name,
java.lang.String aClassName,
java.lang.String aFunctionName,
java.lang.String[] aParameterTypes,
java.lang.String[] aParameterDesc,
java.lang.String[] aParameterAnnotation,
java.lang.String errorInfo)
添加一个类的函数定义,例如:Math.abs(double) 映射为表达式中的 "取绝对值(-5.0)"
|
void |
addFunctionOfServiceMethod(java.lang.String name,
java.lang.Object aServiceObject,
java.lang.String aFunctionName,
java.lang.Class<?>[] aParameterClassTypes,
java.lang.String errorInfo)
用于将一个用户自己定义的对象(例如Spring对象)方法转换为一个表达式计算的函数
|
void |
addFunctionOfServiceMethod(java.lang.String name,
java.lang.Object aServiceObject,
java.lang.String aFunctionName,
java.lang.Class<?>[] aParameterClassTypes,
java.lang.String[] aParameterDesc,
java.lang.String[] aParameterAnnotation,
java.lang.String errorInfo)
用于将一个用户自己定义的对象(例如Spring对象)方法转换为一个表达式计算的函数
|
void |
addFunctionOfServiceMethod(java.lang.String name,
java.lang.Object aServiceObject,
java.lang.String aFunctionName,
java.lang.String[] aParameterTypes,
java.lang.String errorInfo)
用于将一个用户自己定义的对象(例如Spring对象)方法转换为一个表达式计算的函数
|
void |
addFunctionOfServiceMethod(java.lang.String name,
java.lang.Object aServiceObject,
java.lang.String aFunctionName,
java.lang.String[] aParameterTypes,
java.lang.String[] aParameterDesc,
java.lang.String[] aParameterAnnotation,
java.lang.String errorInfo) |
void |
addMacro(java.lang.String macroName,
java.lang.String express)
添加宏定义 例如: macro 玄难 { abc(userinfo.userId);}
|
void |
addOperator(java.lang.String name,
Operator op)
添加操作符号,此操作符号的优先级与 "*"相同,语法形式也是 data name data
|
void |
addOperator(java.lang.String name,
java.lang.String aRefOpername,
Operator op)
添加操作符号,此操作符号与给定的参照操作符号在优先级别和语法形式上一致
|
void |
addOperatorWithAlias(java.lang.String keyWordName,
java.lang.String realKeyWordName,
java.lang.String errorInfo)
添加操作符和关键字的别名,同时对操作符可以指定错误信息。
|
void |
addSystemFunctions() |
boolean |
checkSyntax(java.lang.String text)
提供简答的语法检查,保证可以在运行期本地环境编译成指令
|
boolean |
checkSyntax(java.lang.String text,
boolean mockRemoteJavaClass,
java.util.List<java.lang.String> remoteJavaClassNames)
提供复杂的语法检查,(比如检查自定义的java类),不保证运行期在本地环境可以编译成指令
|
void |
clearExpressCache()
清除缓存
|
void |
createInstructionSet(ExpressNode root,
InstructionSet result) |
InstructionSet |
createInstructionSet(ExpressNode root,
java.lang.String type) |
boolean |
createInstructionSetPrivate(InstructionSet result,
java.util.Stack<ForRelBreakContinue> forStack,
ExpressNode node,
boolean isRoot) |
java.lang.Object |
execute(InstructionSet[] instructionSets,
IExpressContext<java.lang.String,java.lang.Object> context,
java.util.List<java.lang.String> errorList,
boolean isTrace,
boolean isCatchException,
org.apache.commons.logging.Log aLog)
已过时。
|
java.lang.Object |
execute(InstructionSet instructionSets,
IExpressContext<java.lang.String,java.lang.Object> context,
java.util.List<java.lang.String> errorList,
boolean isTrace,
boolean isCatchException,
org.apache.commons.logging.Log aLog)
执行指令集
|
java.lang.Object |
execute(java.lang.String expressString,
IExpressContext<java.lang.String,java.lang.Object> context,
java.util.List<java.lang.String> errorList,
boolean isCache,
boolean isTrace)
执行一段文本
|
java.lang.Object |
execute(java.lang.String expressString,
IExpressContext<java.lang.String,java.lang.Object> context,
java.util.List<java.lang.String> errorList,
boolean isCache,
boolean isTrace,
org.apache.commons.logging.Log aLog)
执行一段文本
|
java.lang.Object |
execute(java.lang.String expressString,
IExpressContext<java.lang.String,java.lang.Object> context,
java.util.List<java.lang.String> errorList,
boolean isCache,
boolean isTrace,
long timeoutMillis)
执行一段文本
|
java.lang.Object |
executeByExpressName(java.lang.String name,
IExpressContext<java.lang.String,java.lang.Object> context,
java.util.List<java.lang.String> errorList,
boolean isTrace,
boolean isCatchException,
org.apache.commons.logging.Log aLog)
根据表达式的名称进行执行
|
RuleResult |
executeRule(java.lang.String expressString,
IExpressContext<java.lang.String,java.lang.Object> context,
boolean isCache,
boolean isTrace) |
AppendingClassFieldManager |
getAppendingClassFieldManager() |
AppendingClassMethodManager |
getAppendingClassMethodManager() |
ExportItem[] |
getExportInfo()
输出全局定义信息
|
IExpressResourceLoader |
getExpressResourceLoader() |
OperatorBase |
getFunciton(java.lang.String name)
获取函数定义,通过函数定义可以拿到参数的说明信息
|
InstructionSet |
getInstructionSetFromLocalCache(java.lang.String expressString)
优先从本地指令集缓存获取指令集,没有的话生成并且缓存在本地
|
NodeTypeManager |
getNodeTypeManager()
获取语法定义的管理器
|
IOperateDataCache |
getOperateDataCache() |
OperatorFactory |
getOperatorFactory()
获取操作符号管理器
|
java.lang.String[] |
getOutFunctionNames(java.lang.String express) |
java.lang.String[] |
getOutVarNames(java.lang.String express)
获取一个表达式需要的外部变量名称列表
|
ExpressPackage |
getRootExpressPackage() |
boolean |
isIgnoreConstChar()
是否忽略charset类型的数据,而识别为string,比如'a' -》 "a"
默认为不忽略,正常识别为String
|
boolean |
isShortCircuit() |
void |
loadExpress(java.lang.String expressName)
装载文件中定义的Express
|
void |
loadMutilExpress(java.lang.String groupName,
java.lang.String express)
装载表达式,但不执行,例如一些宏定义,或者自定义函数
|
Condition |
parseContition(java.lang.String text) |
InstructionSet |
parseInstructionSet(java.lang.String text)
解析一段文本,生成指令集合
|
Rule |
parseRule(java.lang.String text) |
OperatorBase |
replaceOperator(java.lang.String name,
OperatorBase op)
替换操作符处理
|
void |
setIgnoreConstChar(boolean ignoreConstChar) |
void |
setShortCircuit(boolean isShortCircuit) |
public ExpressRunner()
public ExpressRunner(boolean aIsPrecise,
boolean aIstrace)
aIsPrecise - 是否需要高精度计算支持aIstrace - 是否跟踪执行指令的过程public ExpressRunner(boolean aIsPrecise,
boolean aIstrace,
NodeTypeManager aManager)
public ExpressRunner(boolean aIsPrecise,
boolean aIstrace,
IExpressResourceLoader aExpressResourceLoader,
NodeTypeManager aManager)
aIsPrecise - 是否需要高精度计算支持aIstrace - 是否跟踪执行指令的过程aExpressResourceLoader - 表达式的资源装载器public AppendingClassMethodManager getAppendingClassMethodManager()
public AppendingClassFieldManager getAppendingClassFieldManager()
public IOperateDataCache getOperateDataCache()
public void addSystemFunctions()
public NodeTypeManager getNodeTypeManager()
public OperatorFactory getOperatorFactory()
public IExpressResourceLoader getExpressResourceLoader()
public void addMacro(java.lang.String macroName,
java.lang.String express)
throws java.lang.Exception
macroName:玄难 - express - :abc(userinfo.userId);java.lang.Exceptionpublic void loadMutilExpress(java.lang.String groupName,
java.lang.String express)
throws java.lang.Exception
groupName - express - java.lang.Exceptionpublic void loadExpress(java.lang.String expressName)
throws java.lang.Exception
expressName - java.lang.Exceptionpublic void addFunction(java.lang.String name,
OperatorBase op)
name - 函数名称op - 对应的操作实现类public void addFunctionAndClassMethod(java.lang.String name,
java.lang.Class<?> bindingClass,
OperatorBase op)
name - bindingClass - op - public void addClassField(java.lang.String field,
java.lang.Class<?> bindingClass,
Operator op)
field - bindingClass - op - public void addClassField(java.lang.String field,
java.lang.Class<?> bindingClass,
java.lang.Class<?> returnType,
Operator op)
field - bindingClass - returnType - op - public void addClassMethod(java.lang.String name,
java.lang.Class<?> bindingClass,
OperatorBase op)
name - bindingClass - op - public OperatorBase getFunciton(java.lang.String name)
name - 函数名称public void addFunctionOfClassMethod(java.lang.String name,
java.lang.String aClassName,
java.lang.String aFunctionName,
java.lang.Class<?>[] aParameterClassTypes,
java.lang.String errorInfo)
throws java.lang.Exception
name - 函数名称aClassName - 类名称aFunctionName - 类中的方法名称aParameterClassTypes - 方法的参数类型名称errorInfo - 如果函数执行的结果是false,需要输出的错误信息java.lang.Exceptionpublic void addFunctionOfClassMethod(java.lang.String name,
java.lang.Class<?> aClass,
java.lang.String aFunctionName,
java.lang.Class<?>[] aParameterClassTypes,
java.lang.String errorInfo)
throws java.lang.Exception
name - 函数名称aClass - 类aFunctionName - 类中的方法名称aParameterClassTypes - 方法的参数类型名称errorInfo - 如果函数执行的结果是false,需要输出的错误信息java.lang.Exceptionpublic void addFunctionOfClassMethod(java.lang.String name,
java.lang.String aClassName,
java.lang.String aFunctionName,
java.lang.Class<?>[] aParameterClassTypes,
java.lang.String[] aParameterDesc,
java.lang.String[] aParameterAnnotation,
java.lang.String errorInfo)
throws java.lang.Exception
name - 函数名称aClassName - 类名称aFunctionName - 类中的方法名称aParameterClassTypes - 方法的参数类型名称aParameterDesc - 方法的参数说明aParameterAnnotation - 方法的参数注解errorInfo - 如果函数执行的结果是false,需要输出的错误信息java.lang.Exceptionpublic void addFunctionOfClassMethod(java.lang.String name,
java.lang.String aClassName,
java.lang.String aFunctionName,
java.lang.String[] aParameterTypes,
java.lang.String errorInfo)
throws java.lang.Exception
name - 函数名称aClassName - 类名称aFunctionName - 类中的方法名称aParameterTypes - 方法的参数类型名称errorInfo - 如果函数执行的结果是false,需要输出的错误信息java.lang.Exceptionpublic void addFunctionOfClassMethod(java.lang.String name,
java.lang.String aClassName,
java.lang.String aFunctionName,
java.lang.String[] aParameterTypes,
java.lang.String[] aParameterDesc,
java.lang.String[] aParameterAnnotation,
java.lang.String errorInfo)
throws java.lang.Exception
name - 函数名称aClassName - 类名称aFunctionName - 类中的方法名称aParameterTypes - 方法的参数类型名称aParameterDesc - 方法的参数说明aParameterAnnotation - 方法的参数注解errorInfo - 如果函数执行的结果是false,需要输出的错误信息java.lang.Exceptionpublic void addFunctionOfServiceMethod(java.lang.String name,
java.lang.Object aServiceObject,
java.lang.String aFunctionName,
java.lang.Class<?>[] aParameterClassTypes,
java.lang.String errorInfo)
throws java.lang.Exception
name - aServiceObject - aFunctionName - aParameterClassTypes - errorInfo - java.lang.Exceptionpublic void addFunctionOfServiceMethod(java.lang.String name,
java.lang.Object aServiceObject,
java.lang.String aFunctionName,
java.lang.Class<?>[] aParameterClassTypes,
java.lang.String[] aParameterDesc,
java.lang.String[] aParameterAnnotation,
java.lang.String errorInfo)
throws java.lang.Exception
name - aServiceObject - aFunctionName - aParameterClassTypes - aParameterDesc - 方法的参数说明aParameterAnnotation - 方法的参数注解errorInfo - java.lang.Exceptionpublic void addFunctionOfServiceMethod(java.lang.String name,
java.lang.Object aServiceObject,
java.lang.String aFunctionName,
java.lang.String[] aParameterTypes,
java.lang.String errorInfo)
throws java.lang.Exception
name - aServiceObject - aFunctionName - aParameterTypes - errorInfo - java.lang.Exceptionpublic void addFunctionOfServiceMethod(java.lang.String name,
java.lang.Object aServiceObject,
java.lang.String aFunctionName,
java.lang.String[] aParameterTypes,
java.lang.String[] aParameterDesc,
java.lang.String[] aParameterAnnotation,
java.lang.String errorInfo)
throws java.lang.Exception
java.lang.Exceptionpublic void addOperator(java.lang.String name,
Operator op)
throws java.lang.Exception
name - op - java.lang.Exceptionpublic void addOperator(java.lang.String name,
java.lang.String aRefOpername,
Operator op)
throws java.lang.Exception
name - 操作符号名称aRefOpername - 参照的操作符号,例如 "+","--"等op - java.lang.Exceptionpublic void addOperatorWithAlias(java.lang.String keyWordName,
java.lang.String realKeyWordName,
java.lang.String errorInfo)
throws java.lang.Exception
keyWordName - realKeyWordName - errorInfo - java.lang.Exceptionpublic OperatorBase replaceOperator(java.lang.String name, OperatorBase op)
name - public ExpressPackage getRootExpressPackage()
public void clearExpressCache()
public java.lang.Object executeByExpressName(java.lang.String name,
IExpressContext<java.lang.String,java.lang.Object> context,
java.util.List<java.lang.String> errorList,
boolean isTrace,
boolean isCatchException,
org.apache.commons.logging.Log aLog)
throws java.lang.Exception
name - context - errorList - isTrace - isCatchException - aLog - java.lang.Exception@Deprecated public java.lang.Object execute(InstructionSet[] instructionSets, IExpressContext<java.lang.String,java.lang.Object> context, java.util.List<java.lang.String> errorList, boolean isTrace, boolean isCatchException, org.apache.commons.logging.Log aLog) throws java.lang.Exception
instructionSets - context - errorList - isTrace - isCatchException - aLog - java.lang.Exceptionpublic java.lang.Object execute(InstructionSet instructionSets, IExpressContext<java.lang.String,java.lang.Object> context, java.util.List<java.lang.String> errorList, boolean isTrace, boolean isCatchException, org.apache.commons.logging.Log aLog) throws java.lang.Exception
instructionSets - context - errorList - isTrace - isCatchException - aLog - java.lang.Exceptionpublic java.lang.Object execute(java.lang.String expressString,
IExpressContext<java.lang.String,java.lang.Object> context,
java.util.List<java.lang.String> errorList,
boolean isCache,
boolean isTrace,
long timeoutMillis)
throws java.lang.Exception
expressString - 程序文本context - 执行上下文errorList - 输出的错误信息ListisCache - 是否使用Cache中的指令集isTrace - 是否输出详细的执行指令信息timeoutMillis - 超时毫秒时间java.lang.Exceptionpublic java.lang.Object execute(java.lang.String expressString,
IExpressContext<java.lang.String,java.lang.Object> context,
java.util.List<java.lang.String> errorList,
boolean isCache,
boolean isTrace)
throws java.lang.Exception
expressString - 程序文本context - 执行上下文errorList - 输出的错误信息ListisCache - 是否使用Cache中的指令集isTrace - 是否输出详细的执行指令信息java.lang.Exceptionpublic java.lang.Object execute(java.lang.String expressString,
IExpressContext<java.lang.String,java.lang.Object> context,
java.util.List<java.lang.String> errorList,
boolean isCache,
boolean isTrace,
org.apache.commons.logging.Log aLog)
throws java.lang.Exception
expressString - 程序文本context - 执行上下文errorList - 输出的错误信息ListisCache - 是否使用Cache中的指令集isTrace - 是否输出详细的执行指令信息aLog - 输出的logjava.lang.Exceptionpublic RuleResult executeRule(java.lang.String expressString, IExpressContext<java.lang.String,java.lang.Object> context, boolean isCache, boolean isTrace) throws java.lang.Exception
java.lang.Exceptionpublic Rule parseRule(java.lang.String text) throws java.lang.Exception
java.lang.Exceptionpublic Condition parseContition(java.lang.String text) throws java.lang.Exception
java.lang.Exceptionpublic InstructionSet parseInstructionSet(java.lang.String text) throws java.lang.Exception
text - java.lang.Exceptionpublic ExportItem[] getExportInfo()
public InstructionSet getInstructionSetFromLocalCache(java.lang.String expressString) throws java.lang.Exception
expressString - java.lang.Exceptionpublic InstructionSet createInstructionSet(ExpressNode root, java.lang.String type) throws java.lang.Exception
java.lang.Exceptionpublic void createInstructionSet(ExpressNode root, InstructionSet result) throws java.lang.Exception
java.lang.Exceptionpublic boolean createInstructionSetPrivate(InstructionSet result, java.util.Stack<ForRelBreakContinue> forStack, ExpressNode node, boolean isRoot) throws java.lang.Exception
java.lang.Exceptionpublic java.lang.String[] getOutVarNames(java.lang.String express)
throws java.lang.Exception
express - java.lang.Exceptionpublic java.lang.String[] getOutFunctionNames(java.lang.String express)
throws java.lang.Exception
java.lang.Exceptionpublic boolean isShortCircuit()
public void setShortCircuit(boolean isShortCircuit)
public boolean isIgnoreConstChar()
public void setIgnoreConstChar(boolean ignoreConstChar)
public boolean checkSyntax(java.lang.String text)
text - public boolean checkSyntax(java.lang.String text,
boolean mockRemoteJavaClass,
java.util.List<java.lang.String> remoteJavaClassNames)
text - mockRemoteJavaClass - remoteJavaClassNames - Copyright © 2012-2021 Alibaba Group. All Rights Reserved.