Mit dieser Funktion können Sie die gesendeten Daten in den Nachrichtentext Ihrer E-Mail einschließen. Der benutzerdefinierte Prozessschritt extrahiert die gebundene Daten aus der Übermittlung des adaptiven Formulars und füllt eine Variable des Typs Zeichenfolge mit den Daten. Anschließend können Sie diese Zeichenfolgenvariable verwenden, um die Daten in Ihre E-Mail-Vorlage einzufügen.
Der folgende Screenshot zeigt die Argumente, die Sie an den benutzerdefinierten Prozessschritt übergeben müssen
Im Folgenden finden Sie die Parameter .
data.xml
- Die Datei mit den gesendeten Daten. Wenn das Format in json angegeben ist, kann der Name der Datei data.json sein.Der benutzerdefinierte Prozessschritt extrahiert dann die gebundenen Daten und speichert sie in der im Workflow definierten Variablen "submitDataString"
Benutzerdefiniertes Bundle kann von hier heruntergeladen werden
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());
}
}
}