⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jbpmexpressionevaluator.java

📁 workflow first jbpm
💻 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 + -