📄 jbpmexpressionevaluator.java
字号:
package org.jbpm.jpdl.el.impl;
import org.jbpm.JbpmConfiguration;
import org.jbpm.JbpmException;
import org.jbpm.graph.exe.ExecutionContext;
import org.jbpm.jpdl.el.ELException;
import org.jbpm.jpdl.el.ExpressionEvaluator;
import org.jbpm.jpdl.el.VariableResolver;
import org.jbpm.jpdl.el.FunctionMapper;
public class JbpmExpressionEvaluator {
static ExpressionEvaluator evaluator = new ExpressionEvaluatorImpl();
public static void setExpressionEvaluator(ExpressionEvaluator expressionEvaluator) {
JbpmExpressionEvaluator.evaluator = expressionEvaluator;
}
static VariableResolver variableResolver = null;
public static void setVariableResolver(VariableResolver variableResolver) {
JbpmExpressionEvaluator.variableResolver = variableResolver;
}
static FunctionMapper functionMapper = null;
public static void setFunctionMapper(FunctionMapper functionMapper) {
JbpmExpressionEvaluator.functionMapper = functionMapper;
}
public static Object evaluate(String expression, ExecutionContext executionContext) {
return evaluate(expression, executionContext, getUsedVariableResolver(), getUsedFunctionMapper());
}
public static Object evaluate(String expression, ExecutionContext executionContext, VariableResolver usedVariableResolver, FunctionMapper functionMapper) {
Object result = null;
ExecutionContext.pushCurrentContext(executionContext);
try {
String dollarExpression = translateExpressionToDollars(expression);
result = evaluator.evaluate(dollarExpression, Object.class, usedVariableResolver, functionMapper);
} catch (ELException e) {
throw new JbpmException("couldn't evaluate expression '"+expression+"'", (e.getRootCause()!=null ? e.getRootCause() : e));
} finally {
ExecutionContext.popCurrentContext(executionContext);
}
return result;
}
static String translateExpressionToDollars(String expression) {
char[] chars = expression.toCharArray();
int index = 0;
while (index!=-1) {
index = expression.indexOf("#{", index);
if (index!=-1) {
chars[index] = '$';
index++;
}
}
return new String(chars);
}
public static VariableResolver getUsedVariableResolver() {
if (variableResolver!=null) {
return variableResolver;
}
return (VariableResolver) JbpmConfiguration.Configs.getObject("jbpm.variable.resolver");
}
public static FunctionMapper getUsedFunctionMapper() {
if (functionMapper!=null) {
return functionMapper;
}
if (JbpmConfiguration.Configs.hasObject("jbpm.function.mapper")) {
return (FunctionMapper) JbpmConfiguration.Configs.getObject("jbpm.function.mapper");
}
return null;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -