We try to use Workflow Metadata inside Assign Task notification eMail.
Sample https://docs.adobe.com/content/help/en/experience-manager-64/forms/publish-process-aem-forms/use-met... is working fine.
When using var wfmetadata = workItem.getWorkflow().getMetaDataMap();
witch is working in participantChoser getParticipant() we get error
/apps/fd/dashboard/scripts/metadataScripts/kpbTaskMetaData_v1.ecma: ReferenceError: "workItem" is not defined. (NO_SCRIPT_NAME#28)
Please advice how to get Workflow Metadata based on ECMA Script in Assign Task
Thanks for any help
Regards Wendelin
Solved! Go to Solution.
Views
Replies
Total Likes
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;
}
Will get back to you on this
Views
Replies
Total Likes
Views
Replies
Total Likes
Views
Replies
Total Likes
Use variables instead of metadata property
Views
Replies
Total Likes
Views
Replies
Total Likes
Views
Replies
Total Likes
Views
Replies
Total Likes
I have reached out to engineering and should have an answer to you soon
this is working in the ecma script
var workflowData = workItem.getWorkflowData();
var payloadPath = workItem.getWorkflowData().getPayload().toString();
log.info("The path is "+payloadPath);
Once you get the payloadPath, you can acces the submitteddata and from there do the rest
I recommend creating osgi service to do this
Let us know if you have problems
thanks for the ecma statements - this working also for us on other places like participantchoser until know but not in this custom metadata script integration.
Unfortunately we still get ReferenceError: "workItem" is not defined at this specific place .. is workItem generally not available in this function getUserMetaData() as described in the sample?
Views
Replies
Total Likes
Views
Replies
Total Likes
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;
}
Views
Replies
Total Likes