public static Object evaluate(final String expression, final Binding binding) throws GroovyException, NotSerializableException, ActivityDefNotFoundException, DataFieldNotFoundException, ProcessNotFoundException, IOException, ClassNotFoundException { String workingExpression = expression; Object result = null; if (Misc.isJustAGroovyExpression(workingExpression)) { workingExpression = workingExpression.substring(START_DELIMITER.length()); workingExpression = workingExpression.substring(0, workingExpression.lastIndexOf(END_DELIMITER)); if (Misc.isJavaIdentifier(workingExpression) && binding.getVariables().containsKey(workingExpression)) { result = binding.getVariable(workingExpression); } else { result = evaluateGroovyExpression(workingExpression, binding); } } else { result = evaluate(getExpressions(workingExpression), binding); } return result; }