Ihre Kunden müssen oft mehrere Formulare senden, um sich bei einem Dienst oder anzumelden. Dazu gehört die Suche aller relevanter Formular sowie das Ausfüllen und Nachverfolgen. Außerdem müssen sie allgemeine Informationen mehrmals ausfüllen. Der gesamte Prozess ist mühsam und fehleranfällig, wenn eine große Anzahl von Formularen verwendet wird. Die Funktion von AEM Forms kann das Benutzererlebnis in derartigen Situationen vereinfachen.
Ein Formularsatz ist eine Sammlung von HTML5-Formularen, die zusammen gruppiert sind und als einzelner Formularsatz dem Endbenutzern präsentiert wird. Wenn der Benutzer ein Formularsatz ausfüllt, werden diese Informationen von einem Formular zu einem anderen übertragen. Am Ende können sie alle Formulare mit nur einem Mausklick senden.
AEM Forms bietet eine intuitive Benutzeroberfläche zum Erstellen, Konfigurieren und Verwalten von Formularsätzen. Als Autor können Sie Formulare in einer bestimmten Reihenfolge anfordern, in der Endanwender sie ausfüllen sollen. Sie können auch Bedingungen oder Berechtigungsausdrücke in einzelnen Formularen verwenden, um ihre Sichtbarkeit aufgrund Benutzereingaben zu steuern. Beispielsweise können Sie das Formular zum Ehepartner so konfigurieren, dass es nur dann angezeigt wird, wenn der Familienstand als „Verheiratet“ angegeben wurde.
Darüber hinaus können Sie allgemeine Datenfelder in unterschiedlichen Formularen konfigurieren, um allgemeine Daten zu teilen. Mit den richtigen Datenbindungen müssen Endbenutzer allgemeine Informationen nur einmal ausfüllen. Diese werden dann in den nachfolgenden Formularen automatisch ausgefüllt.
Formularsätze werden auch in der AEM Forms-App unterstützt, wodurch Ihre Außendienstmitarbeiter ein Formularsatz offline bearbeiten können, Kunden besuchen können, Daten eingeben können und später mit dem AEM Forms-Server synchronisieren können, um Formulardaten an Geschäftsprozessen zu senden.
Sie können mehrere XDPs oder Formularvorlagen, die unter Verwendung von Designer erstellt wurden, in einen Formularsatz zuordnen. Formularsätze können dann selektiv verwendet werden, um die XDPs zu rendern, basierend auf den Werten, die von den Benutzern in den anfänglichen Formularen und deren Profilen eingegeben wurden.
Verwenden Sie die AEM Forms-Benutzeroberfläche, um alle Formulare, Formularsätze und zugehörigen Assets zu verwalten.
Um Formularsätze zu erstellen, führen Sie folgende Schritte durch:
Wählen Sie Formulare > Formulare und Dokumente.
Klicken Sie auf „Erstellen“ > „Formularsatz“.
Fügen Sie auf der Seite „Eigenschaften hinzufügen“ die folgenden Angaben hinzu, und klicken Sie auf „Weiter“.
Der Bildschirm „Formular(e) auswählen“ zeigt die verfügbaren XDP-Formulare- oder als XDP-Dateien an. Suchen Sie nach den Formularen, die Sie den Formularsatz aufnehmen möchten, wählen Sie sie aus und klicken Sie auf „Zum Formularsatz hinzufügen“. Suchen Sie nötigenfalls nach weiteren hinzuzufügenden Formularen. Nachdem Sie die Formulare dem Formularsatz hinzugefügt haben, klicken Sie auf „Weiter“.
Stellen Sie sicher, dass die Feldnamen in den XDP-Formularen keinen Punkt enthalten. Andernfalls können die Skripte, die versuchen, die Felder zu beheben, in denen Punkte enthalten sind, diese nicht beheben.
Auf der Seite „Formular(e) konfigurieren“ haben Sie folgende Möglichkeiten:
fs.valueOf(<Formularkennung>, <fieldSom-Ausdruck>) > <Wert>
Wenn Sie beispielsweise zwei Formulare im Formularsatz hat: Geschäftsausgaben und Reisekosten, können Sie ein JavaScript-Codefragment im Feld „Berechtigungsausdruck“ für beide Formulare hinzufügen, sodass beide Formulare die Benutzereingabe für Kosten in einem Formular überprüfen. Wenn der Benutzer Geschäftsausgaben wählt, wird das Formular „Geschäftsausgaben“ für den Endbenutzer gerendert. Wenn der Benutzer „Reisekosten“ wählt, wird ein anderes Formular gerendert und angezeigt. Weitere Informationen finden Sie unter „Berechtigungsausdruck“.
Darüber hinaus hat der Verfasser die Möglichkeit, ein Formular mithilfe des Löschsymbols am rechten Ende jeder Zeile aus dem Formularsatz zu entfernen oder mithilfe des „+“ Symbols in der Symbolleiste einen weiteren Formularsatz hinzuzufügen. Über das Symbol „+“ gelangt der Benutzer zurück zum vorherigen Schritt des Assistenten, d. h. zur Auswahl der Formulare. Die bestehende Auswahl bleibt erhalten, zusätzlich ausgewählte Formulare müssen dem Formularsatz über das Symbol „Zum Formularsatz hinzufügen“ auf dieser Seite hinzugefügt werden.
Alle Formulare in Formularsätzen werden in der Benutzeroberfläche von AEM Forms verwaltet.
Nachdem ein Formular erstellt wurde, können Sie die folgenden Vorgänge für den Formularsatz durchführen:
Um Formularsätze zu bearbeiten, führen Sie folgende Schritte durch:
Wählen Sie Formulare > Formulare und Dokumente.
Suchen Sie nach dem Formularsatz, den Sie bearbeiten möchten. Bewegen Sie den Cursor darüber und wählen Sie „Bearbeiten“ ( ).
Auf der Seite „Formular(e) konfigurieren“ können Sie Folgendes bearbeiten:
Sie können auch auf das entsprechenden Löschen-Symbol klicken, um das Formular aus dem Formularsatz zu löschen.
Nachdem Sie einen Formularsatz in der Verwaltungsoberfläche von AEM Forms erstellt haben, können Sie ihn in Workbench für die Vorgänge „Ausgangspunkt“ oder „Aufgabe zuweisen“ verwenden.
Wählen Sie beim Entwickeln eines Prozesses im Bereich „Präsentation und Daten“ von „Ausgangspunkt“ bzw. „Aufgabe zuweisen“ die Option zum Verwenden eines CRX-Assets. Der Browser für CRX-Assets wird angezeigt.
Wählen Sie den Formularsatz, um den Formularsatz im AEM-Repository (CRX) zu filtern.
Wählen Sie einen Formularsatz aus und klicken Sie auf „OK“.
Mithilfe von Berechtigungsausdrücken können Sie die Formulare, die für bestimmte Benutzer angezeigt werden sollen, definieren und dynamisch steuern. So können Sie beispielsweise festlegen, dass ein bestimmtes Formular nur für Benutzer angezeigt werden soll, die zu einer bestimmten Altersgruppe gehören. Geben Sie einen Berechtigungsausdruck mithilfe des Formularmanagers an und bearbeiten Sie ihn.
Als Berechtigungsausdruck kann jede gültige JavaScript-Aussage verwendet werden, die einen booleschen Wert zurückgibt. Die letzte Aussage im JavaScript-Codesnippet wird als boolescher Wert behandelt, der die Berechtigung des Formulars bestimmt, basierend auf der Verarbeitung im Rest (vorangehende Zeilen) des JavaScript-Codesnippets. Wenn der Wert des Ausdrucks „wahr“ ist, bedeutet dies, dass das Formular für den Benutzer angezeigt werden soll. Solche Formulare sind als berechtigte Formulare bekannt.
Der Berechtigungsausdruck für das erste Formular des Formularsatzes wird nicht ausgeführt. Das erste Formular wird unabhängig vom Berechtigungsausdruck stets angezeigt.
Neben der normalen JavaScript-Funktion wird im Formularsatz die fs.valueOf-API genutzt, die Zugriff auf den Wert eines Formularfelds in einem Formularsatz bietet. Verwenden Sie diese API für den Zugriff auf den Wert eines Formularfelds in einem Formularsatz. Für die API wird die folgende Syntax verwendet: fs.valueOf (formUid, fieldSOM). Dabei gilt:
Die Parameter „formUid“ und „fieldSOM“ müssen Stringliterale sein.
Gültige Verwendung der API:
fs.valueOf("form1", "xfa.form.form1.subform1.field1")
Ungültige Verwendung der API:
var formUid = "form1";
var fieldSOM = "xfa.form.form1.subform1.field1"; fs.valueOf(formUid, fieldSOM);
Ein Formularsatz ist eine Sammlung mehrerer HTML5-Formulare mit einem gemeinsamen oder mehreren unterschiedlichen Schemata. Der Formularsatz unterstützt das Vorausfüllen von Formularfeldern mithilfe einer XML-Datei. Sie können eine XML-Datei mit einem Formularsatz verknüpfen, sodass, wenn Sie ein Formular in einem Formularsatz öffnen, einige der Felder im Formular voraufgefüllt werden.
Das Vorauffüllen einer XML-Datei wird mithilfe des dataRef-Parameters der URL des Formularsatzes angegeben. Der dataRef-Parameter gibt den absoluten Pfad der XML-Datendatei an, die mit dem Formularsatz zusammengeführt wird.
Nehmen wir z. B. an, Sie haben drei Formulare (Formular1, Formular2 und Formular3) in den Formularsätzen mit der folgenden Struktur:
form1
Field form1field
form2
Field form2field
form3
Field form3field
Jedes Formular hat ein Feld mit gemeinsamem Namen namens „Feld“ und ein eindeutig benanntes Feld namens „form<i>field“.
Sie können dieses Formular mithilfe einer XML-Datei automatisch mit der folgenden Struktur ausfüllen lassen:
<?xml version="1.0" encoding="UTF-8" ?>
<formSetRootTag>
<field>common field value</field>
<form1field>value1</form1field>
<form2field>value2</form2field>
<form3field>value3</form3field>
</formSetRootTag>
Das XML-Root-Tag kann jeden beliebigen Namen annehmen, aber die Element-Tags, die den Feldern entsprechen, müssen denselben Namen wie die Felder haben. Die Hierarchie der XML-Datei muss die Hierarchie des Formulars nachahmen. Das bedeutet, dass die XML-Datei entsprechende Tags für das Eingliedern von Teilformularen haben muss.
Das obige XML-Codefragment zeigt an, dass die XML zum Vorausfüllen des Formularsatzes eine Vereinigung der XML-Codefragmente zum Vorausfüllen der einzelnen Formulare darstellt. Wenn bestimmte Felder in unterschiedlichen Formularen eine ähnliche Datenhierarchie/Schema haben, werden die Felder mit den gleichen Werten vorausgefüllt. In diesem Beispiel werden alle drei Formulare mit dem gleichen Wert für das gemeinsame Datenfeld „Feld“ vorausgefüllt. Dies ist eine einfache Möglichkeit, Daten von einem Formular ans nächste weiterzuleiten. Dies kann auch erzielt werden, indem die Felder an das gleiche Schema oder die gleiche Datenreferenz gebunden werden. Angenommen, Sie möchten Formularsatzdaten basierend auf dem Schema des Formulars trennen. Dies kann erzielt werden, indem Sie während der Formularsatzerstellung das „data root“-Attribut des Formulars angeben (der Standardwert für die Zuordnung zum Formularsatz-Root-Tag ist „/“).
Wenn Sie im vorherigen Beispiel die Datenstämme für die drei Formulare angeben: „/form1“, „/form2“ und „/form3“, müssen Sie eine XML zum Vorausfüllen mit der folgenden Struktur verwenden:
<?xml version="1.0" encoding="UTF-8" ?>
<formSetRootTag>
<form1>
<field>field value1</field>
<form1field>value1</form1field>
</form1>
<form2>
<field>field value2</field>
<form2field>value2</form2field>
</form2>
<form3>
<field>field value3</field>
<form3field>value3</form3field>
</form3>
</formSetRootTag>
In einem Formularsatz definierte die XML ein XML-Schema mit der folgenden Syntax:
<formset>
<fs_data>
<xdp:xdp xmlns:xdp="https://ns.adobe.com/xdp/">
<xfa:datasets xmlns:xfa="https://www.xfa.org/schema/xfa-data/1.0/">
<xfa:data>
<rootElement>
... data ....
</rootElement>
</xfa:data>
</xfa:datasets>
</xdp:xdp>
</fs_data>
<fs_draft>
... private data...
</fs_draft>
</formset>
Wenn zwei Formulare mit überlappenden Datenstämmen vorhanden sind oder die Elementhierarchie eines Formulars sich mit der Datenstamm-Hierarchie eines anderen Formulars überschneidet, werden in der XML zum Vorausfüllen die Werte der überlappenden Elemente zusammengeführt. Die Senden-XML hat eine ähnliche Struktur wie die XML zum Vorausfüllen, die Senden-XML hat jedoch mehr Wrapper-Tags und am Ende sind einige Kontextdaten-Tags des Formularsatzes angehängt.
Syntaxregeln zum Erstellen einer XML-Datei zu Vorauffüllen:
parent elements:
null
cardinality: [0,1]
submitXML: P
prefillXML: O
children: fs_data
Das Stammelement der XML für den Formularsatz. Es wird empfohlen, dieses Wort nicht als Namen für rootSubform in den Formularen innerhalb des Formularsatzes zu verwenden.
parent elements:
formset
Kardinalität: [1]
submitXML: P
prefillXML: O
children: xdp:xdp/rootElement
Die Unterstruktur gibt die Daten der Formulare im Formularsatz an. Das Element ist in der XML zum Vorausfüllen nur dann optional, wenn das Formularsatz-Element nicht vorhanden ist.
parent elements: fs_data/null
cardinality: [0,1]
submitXML: O
prefillXML: O
children: xfa:datasets
Dieses Tag gibt den Anfang der XML für das HTML5-Formular an. Dies wird in der Sende-XML hinzugefügt, sofern es in der der XML zum Vorausfüllen angegeben wurde oder diese nicht vorhanden ist. Dieses Tag kann aus der XML zum Vorausfüllen entfernt werden.
parent elements: xdp:xdp
cardinality: [1]
submitXML: O
prefillXML: O
children: xfa:data
parent elements: xfa:datasets
cardinality: [1]
submitXML: O
prefillXML: O
children: rootElement
parent elements: xfa:datasets/fs_data/null
cardinality: [0,1]
submitXML: P
prefillXML: O
children: controlled by the Forms in Form set
Der Name „rootElement“ dient hier lediglich als Platzhalter. Der tatsächliche Name wird aus den im Formularsatz verwendeten Formularen übernommen. Die mit dem rootElement beginnende Unterstruktur enthält die Daten aus den Feldern und Unterformularen innerhalb der im Formularsatz enthaltenen Formulare. Die Struktur des rootElement und der ihm untergeordneten Elemente wird durch mehrere Faktoren bestimmt.
Dieses Tag ist in der XML zum Vorausfüllen optional, fehlt es jedoch, wird die gesamte XML ignoriert.
NAME DES STAMMELEMENT-TAGS
Ist in der XML zum Vorausfüllen ein Stammelement vorhanden, wird der Name dieses Elements auch für die Senden-XML übernommen. Falls keine XML zum Vorausfüllen vorhanden ist, wird der Name des Unterformulars auf der Stammebene des ersten Formulars im Formularsatz, dessen dataRoot-Eigenschaft auf „/“ eingestellt wurde, als Name für das rootElement übernommen. Ist kein solches Formular vorhanden, wird das reservierte Schlüsselwort fs_dummy_root als Name für das rootElement verwendet.
Die AEM Forms-App ermöglicht es Außendienstmitarbeitern, ihre Mobilgeräte mit einem AEM Forms-Server zu synchronisieren und Aufgaben zu bearbeiten. Die Anwendung funktioniert nahtlos, wenn das Gerät offline ist, da Daten lokal auf dem Gerät gespeichert werden. Unter Verwendung von Anmerkungen wie Fotos können Außendienstmitarbeiter genaue Informationen bereitstellen, die in den Geschäftsprozess integriert werden können.
Die folgenden Datenmuster werden nicht vollständig in Formularsätzen unterstützt:
Muster werden nicht vollständig in Formularsätzen unterstützt | Beispiel |
Abweichungen von Eingabe-und Mustergröße | Wenn Muster= num{z, zzz} Und Input= 12,345 oder 1,23 |
Bildklausel-Muster mit Klammern „(" ")“ | num{(zz,zzz)} |
Mehrere Datenmuster | num{zz,zzz} | num{z,zzz,zzz} |
Kurzschriftmuster | num.integer{}, num.decimal{}, num.percent{} oder num.currency{} |