So if you are having a problem in 6.4 version, Please log a support ticket. The following code is working fine in 6.5 environment
function getUserMetaData() {
//Commented lines below provide an overview on how to set user metadata in map and return it.
var payloadPath = workItem.getWorkflowData().getPayload().toString();
log.info("The size is "+workItem.getWorkflowData().getMetaDataMap().size());
log.info("The path is "+payloadPath);
var path = workItem.getWorkflowData().getPayload().toString();
var dataFilePath = path+"/Data.xml/jcr:content";
var xPath = Packages.javax.xml.xpath.XPathFactory.newInstance().newXPath();
var factory = Packages.javax.xml.parsers.DocumentBuilderFactory.newInstance();
var builder = factory.newDocumentBuilder();
var session = workflowSession.adaptTo(Packages.javax.jcr.Session);
var xmlDataNode = session.getNode(dataFilePath);
var xmlDataStream = xmlDataNode.getProperty("jcr:data").getBinary().getStream();
var xPath = Packages.javax.xml.xpath.XPathFactory.newInstance().newXPath();
factory = Packages.javax.xml.parsers.DocumentBuilderFactory.newInstance();
builder = factory.newDocumentBuilder();
xmlDocument = builder.parse(xmlDataStream);
node = xPath.compile("afData/afUnboundData/data/firstName").evaluate(xmlDocument, Packages.javax.xml.xpath.XPathConstants.NODE);
log.info("#####"+node.getTextContent());
var HashMap = Packages.java.util.HashMap;
var valuesMap = new HashMap();
valuesMap.put("policyNumber", payloadPath);
valuesMap.put("policyHolder", payloadPath);
return valuesMap;
}