Code des Prozessschritts
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import javax.jcr.Binary;
import javax.jcr.Node;
import javax.jcr.Session;
import org.osgi.framework.Constants;
import org.osgi.service.component.annotations.Component;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.adobe.granite.workflow.WorkflowException;
import com.adobe.granite.workflow.WorkflowSession;
import com.adobe.granite.workflow.exec.WorkItem;
import com.adobe.granite.workflow.exec.WorkflowProcess;
import com.adobe.granite.workflow.metadata.MetaDataMap;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
@Component(property = {
Constants.SERVICE_DESCRIPTION + "=Create String Array",
Constants.SERVICE_VENDOR + "=Adobe Systems",
"process.label" + "=Replace comma seperated string with string array"
})
public class CreateStringArray implements WorkflowProcess {
private static final Logger log = LoggerFactory.getLogger(CreateStringArray.class);
@Override
public void execute(WorkItem workItem, WorkflowSession workflowSession, MetaDataMap arg2) throws WorkflowException {
log.debug("The string I got was ..." + arg2.get("PROCESS_ARGS", "string").toString());
String[] arguments = arg2.get("PROCESS_ARGS", "string").toString().split(",");
String objectName = arguments[0];
String propertyName = arguments[1];
String objects[] = objectName.split("\\.");
System.out.println("The params is " + propertyName);
log.debug("The params string is " + objectName);
String payloadPath = workItem.getWorkflowData().getPayload().toString();
log.debug("The payload in set Elmement Value in Json is " + workItem.getWorkflowData().getPayload().toString());
String dataFilePath = payloadPath + "/Data.xml/jcr:content";
Session session = workflowSession.adaptTo(Session.class);
Node submittedDataNode = null;
try {
submittedDataNode = session.getNode(dataFilePath);
InputStream submittedDataStream = submittedDataNode.getProperty("jcr:data").getBinary().getStream();
BufferedReader streamReader = new BufferedReader(new InputStreamReader(submittedDataStream, "UTF-8"));
StringBuilder stringBuilder = new StringBuilder();
String inputStr;
while ((inputStr = streamReader.readLine()) != null)
stringBuilder.append(inputStr);
JsonParser jsonParser = new JsonParser();
JsonObject jsonObject = jsonParser.parse(stringBuilder.toString()).getAsJsonObject();
System.out.println("The json object that I got was " + jsonObject);
JsonObject targetObject = null;
for (int i = 0; i < objects.length - 1; i++) {
System.out.println("The object name is " + objects[i]);
if (i == 0) {
targetObject = jsonObject.get(objects[i]).getAsJsonObject();
} else {
targetObject = targetObject.get(objects[i]).getAsJsonObject();
}
}
System.out.println("The final object is " + targetObject.toString());
String businessUnits = targetObject.get(propertyName).getAsString();
System.out.println("The values of " + propertyName + " are " + businessUnits);
JsonArray jsonArray = new JsonArray();
String[] businessUnitsArray = businessUnits.split(",");
for (String name: businessUnitsArray) {
jsonArray.add(name);
}
targetObject.add(propertyName, jsonArray);
System.out.println(" After updating the property " + targetObject.toString());
InputStream is = new ByteArrayInputStream(jsonObject.toString().getBytes());
System.out.println("The changed json data is " + jsonObject.toString());
Binary binary = session.getValueFactory().createBinary(is);
submittedDataNode.setProperty("jcr:data", binary);
session.save();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
Das Beispiel-Bundle kann hier heruntergeladen werden
Vorherige SeiteEinbetten des adaptiven Formulars in eine Webseite
Nächste SeiteElement-Ladepfad in AEM Forms
Experience Manager
- Überblick
- Best Practices, die zu befolgen sind
- Einrichten der OKTA-Authentifizierung mit AEM Author
- Erstellen Ihres ersten adaptiven Formulars
- Handhabung von Formularübermittlungen
- Nützliche Integrationen
- Erstellen eines OSGi-Bundles
- Adaptive Formulare
- Ausfüllen eines PDF-Formulars mit ChatBot
- Auf Kernkomponenten basierende Formulare
- Auswählen und Zusammenführen von DAM-Ordnerinhalt
- Vorausfüllen des adaptiven Formulars mithilfe des Formulardatenmodells
- Tipps und Tricks zur Benutzeroberfläche
- Anpassen des Posteingangs
- E-Mail-Formularanhänge
- Vorausfüllen von Formularen mit Daten und Anhängen
- Speichern und Abrufen adaptiver Formulare
- Importieren von Daten aus der PDF-Datei
- Exportieren gesendeter Daten im CSV-Format
- HTML5-Formulare
- AEM Forms und Acrobat Sign
- Signieren mehrerer Formulare
- Benutzerdefinierte Workflow-Schritte
- Benutzerdefinierte Workflow-Komponente
- Variablen im AEM-Workflow
- Überprüfen der Formulardaten
- Speichern und Abrufen von Formulardaten in MySQL DB
- Auslösen eines AEM-Workflows bei der Übermittlung eines PDF-Formulars
- Auslösen eines AEM-Workflows bei der Übermittlung eines mobilen Formulars
- Abfragen von Formularübermittlungen
- Auflisten benutzerdefinierter Asset-Typen im Formularportal
- AEM Forms mit Marketo
- AEM Forms mit Adobe Campaign Standard
- Begrüßungs-Kit
- Headless-Forms-API
- React-App mit Forms und Acrobat Sign
- Document Services
- Forms Designer
- AEM Forms Workbench
- Interaktive Kommunikationen für Print-Kanal
- Speichern und Abrufen von Briefentwürfen
- Interaktive Kommunikationen
- Interaktive Kommunikationen für Web-Kanal
- Fehlerbehebung