String clazz = TypeResolver.getFunction(type);  if (clazz == null) { clazz = (String) args.get(CLASS_NAME); }  FunctionProvider provider = (FunctionProvider) loadObject(clazz);
FunctionProvider provider = TypeResolver.getResolver().getFunction(type, args);
    protected void executeFunction(FunctionDescriptor function, Map transientVars, PropertySet ps) throws WorkflowException {        if (function != null) {            String type = function.getType();            HashMap args = new HashMap(function.getArgs());            for (Iterator iterator = args.entrySet().iterator();                    iterator.hasNext();) {                Map.Entry mapEntry = (Map.Entry) iterator.next();                mapEntry.setValue(ScriptVariableParser.translateVariables((String) mapEntry.getValue(), transientVars, ps));            }            String clazz = TypeResolver.getFunction(type);            if (clazz == null) {                clazz = (String) args.get(CLASS_NAME);            }            FunctionProvider provider = (FunctionProvider) loadObject(clazz);            if (provider == null) {                String message = "Could not load FunctionProvider class: " + clazz;                context.setRollbackOnly();                throw new WorkflowException(message);            }            try {                provider.execute(transientVars, args, ps);            } catch (WorkflowException e) {                context.setRollbackOnly();                throw e;            }        }    }