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

📄 jbpmexpressionevaluator.java

📁 jBpm是一个灵活可扩展的工作流管理系统。作为jBpm运行时server输入的业务流程使用简单强大的语言表达并打包在流程档案中
💻 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.VariableResolver;

public class JbpmExpressionEvaluator {

  static ExpressionEvaluatorImpl evaluator = new ExpressionEvaluatorImpl();
  
  static VariableResolver variableResolver = null;
  public static void setVariableResolver(VariableResolver variableResolver) {
    JbpmExpressionEvaluator.variableResolver = variableResolver;
  }
  
  public static Object evaluate(String expression, ExecutionContext executionContext) {
    Object result = null;
    
    ExecutionContext.pushCurrentContext(executionContext);
    try {
      VariableResolver usedResolver = null;
      
      if (variableResolver!=null) {
        usedResolver = variableResolver;
      } else {
        usedResolver = (VariableResolver) JbpmConfiguration.Configs.getObject("jbpm.variable.resolver");
      }
      
      String dollarExpression = translateExpressionToDollars(expression);

      result = evaluator.evaluate(dollarExpression, Object.class, usedResolver, null);

    } 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);
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -