Med den här funktionen kan du inkludera skickade data i e-postmeddelandet. Det anpassade processsteget extraherar bundna data från den adaptiva formuläröverföringen och fyller i en variabel av typen sträng med data. Du kan sedan använda den här strängvariabeln för att infoga data i din e-postmall.
I följande skärmbild visas de argument som du behöver skicka till det anpassade steget
Följande parametrar
data.xml
- Den fil som innehåller skickade data. Om formatet är json kan filens namn vara data.jsonDet anpassade processsteget extraherar sedan bundna data och lagrar dem i variabeln skickadDataString som definieras i arbetsflödet
Det anpassade paketet kan laddas ned härifrån
package AEMFormsProcessStep.core;
import com.adobe.granite.workflow.metadata.MetaDataMap;
import com.adobe.granite.workflow.WorkflowException;
import com.adobe.granite.workflow.WorkflowSession;
import com.adobe.granite.workflow.exec.WorkItem;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.osgi.service.component.annotations.Component;
import com.adobe.granite.workflow.exec.WorkflowProcess;
import javax.jcr.Session;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathFactory;
import org.w3c.dom.Document;
import javax.xml.parsers.DocumentBuilder;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.StringWriter;
import javax.jcr.Node;
@Component(property = {
"service.description=Save submitted Payload as String",
"process.label=Save submitted Payload as String"
})
public class SaveSubmittedDataInStringVariable implements WorkflowProcess {
private Logger log;
@Override
public void execute(WorkItem workItem, WorkflowSession workflowSession, MetaDataMap metaDataMap) throws WorkflowException {
String submittedDataFile = ((String) metaDataMap.get("PROCESS_ARGS", (Object)
"string")).toString();
String payloadPath = workItem.getWorkflowData().getPayload().toString();
log = LoggerFactory.getLogger(SaveSubmittedDataInStringVariable.class);
String dataFilePath = payloadPath + "/" + submittedDataFile + "/jcr:content";
Session session = (Session) workflowSession.adaptTo((Class) Session.class);
Node submittedDataNode = null;
try {
submittedDataNode = session.getNode(dataFilePath);
if (submittedDataFile.endsWith("json")) {
InputStream jsonDataStream = submittedDataNode.getProperty("jcr:data").getBinary().getStream();
BufferedReader streamReader = new BufferedReader(new InputStreamReader(jsonDataStream, "UTF-8"));
StringBuilder responseStrBuilder = new StringBuilder();
String inputStr;
while ((inputStr = streamReader.readLine()) != null) {
responseStrBuilder.append(inputStr);
}
JsonObject jsonObject = new Gson().fromJson(responseStrBuilder.toString(), JsonObject.class);
JsonObject boundData = jsonObject.getAsJsonObject("afData").getAsJsonObject("afBoundData").getAsJsonObject("data");
System.out.println(jsonObject.getAsJsonObject("afData").getAsJsonObject("afBoundData").getAsJsonObject("data"));
metaDataMap = workItem.getWorkflow().getWorkflowData().getMetaDataMap();
metaDataMap.put("submittedDataString", boundData.toString());
}
if (submittedDataFile.endsWith("xml")) {
log.debug("Got xml file");
DocumentBuilderFactory factory = null;
DocumentBuilder builder = null;
Document xmlDocument = null;
InputStream xmlDataStream = submittedDataNode.getProperty("jcr:data").getBinary().getStream();
System.out.println("Got xml file" + submittedDataNode);
XPath xPath = XPathFactory.newInstance().newXPath();
factory = DocumentBuilderFactory.newInstance();
builder = factory.newDocumentBuilder();
xmlDocument = builder.parse(xmlDataStream);
org.w3c.dom.Node node = (org.w3c.dom.Node) xPath.compile("/afData/afBoundData").evaluate(xmlDocument, XPathConstants.NODE);
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
StreamResult result = new StreamResult(new StringWriter());
DOMSource source = new DOMSource(node);
transformer.transform(source, result);
String xmlString = result.getWriter().toString();
log.debug("The xml string is " + xmlString);
metaDataMap = workItem.getWorkflow().getWorkflowData().getMetaDataMap();
metaDataMap.put("submittedDataString", xmlString);
}
} catch (Exception e) {
log.debug(e.getMessage());
}
}
}