Binden eines XSD-Schemas an sich wiederholende Unterformularelemente mit Adobe LiveCycle Designer

Vorausgesetzte Kenntnisse

Kenntnisse im Umgang mit LiveCycle Designer; Grundsätze der XSD-Schema-Entwicklung.

Anwenderebene

Fortgeschr.

Zusätzlich erforderliche andere Produkte (Drittanbieter/Labs/Open Source)

  • Ein beliebiges XML/XSD-Editorprogramm

    oder

  • Ein Texteditorprogramm (z. B. Notepad++)

Einführung

Das Problem, mit dem sich dieser Artikel befasst, besteht darin, wie dynamische Formularfelder mit LiveCycle Designer ES an ein XML-Schema-Dokument (XSD)-Element gebunden werden können. 

Die dynamische Interaktion mit elektronischen Formularen ist eines der attraktivsten Merkmale von LiveCycle.  Ein Formular, das der für eine bestimmte Transaktion erforderlichen Dokumentengröße entspricht, kann Druckkosten einsparen (wenn das Formular ausgedruckt werden muss). Dadurch, dass nur die für den Abschluss einer Transaktion erforderliche Menge an Informationen dargestellt wird, ist ein Formular für den Benutzer leichter zu lesen und zu verstehen.  Formularobjekte wie Schaltflächen können verwendet werden, um die erforderliche Anzahl von Dateneingabefeldern zu einem Formular hinzuzufügen oder zu löschen.  

Die von Formularobjekten erfasste Daten werden im Formular als XML-Daten gespeichert.  Um diese XML-Daten an Backend-Dienste zu senden, muss die XML strukturiert sein.  Standardmäßig entsprechen die XML-Daten, die in einem Formular ausgegeben werden, einer XML-Pfadstruktur (XPath), die das Layout der Formularobjekte selbst und ihre Position im Formular widerspiegelt.  Diese Methode zur Benennung von XPaths ist für einen Backend-Entwickler häufig nicht hilfreich. Um die XML-Ausgabe aus einem Formular so zu strukturieren, dass sie für den Backend-Entwickler logisch ist, wird ein XSD-Dokument verwendet. 

Das XSD-Dokument ist im Grunde ein Schema- oder Regelsatzdokument, das in XML geschrieben ist.  Diese XSD-Datei beschreibt, wie die XML-Daten strukturiert werden sollen, wenn sie aus dem Formular extrahiert werden.  Sobald ein Formularobjekt an die Schemaelemente gebunden wurde, werden die im Formular erfassten Daten in einem XML-Dokument im in der XSD beschriebenen Format gespeichert.

Die naheliegende Frage ist: Wie bindet man ein Element eines sich dynamisch wiederholenden Formularobjekts an ein Schema? Schließlich erscheinen die Objekte nur einmal in der Formularstruktur und einmal in der Schemastruktur, können aber zum Speichern mehrerer Datensätze verwendet werden.  In diesem Dokument werden die strukturellen Anforderungen und verbindlichen Konventionen erläutert, die für die Bindung eines Formulars an ein Schema für diese Sätze sich wiederholender Daten erforderlich sind.

Das Formular, das als Beispiel für diese Anleitung verwendet wird (Abbildung 1), ist ein einfaches Formular, das man verwenden kann, um einen Site-Administrator zu bitten, Unternehmenspartnern die Nutzung der Unternehmenswebsite durch einige Hauptbenutzer zu ermöglichen.  Die Anzahl der Benutzer ist unterschiedlich. Damit der Site-Administrator die entsprechende Anzahl von Benutzern hinzufügen kann, wird die Schaltfläche „Benutzer hinzufügen“ hinzugefügt.  Durch Drücken dieser Schaltfläche wird ein neuer Benutzerblock angezeigt, der folgende Benutzerinformationen erfasst: Vorname, Nachname, Hinzufügen/Ändern/Löschen (des benannten Benutzers), Telefonnummer und E-Mail-Adresse.

Erstellen dynamischer Felder

Zunächst muss ein Formular mit der gewünschten Funktion für sich wiederholende Felder erstellt werden.  Dies wird durch Erstellen eines Formulars mit einem Fließtextlayout erreicht.  Ein Fließtextlayout ist kein statisches Layout.  Wie der Name schon sagt, kann ein Fließtextlayout in der Größe verändert und nach Bedarf erweitert oder verkleinert werden.  Standardmäßig werden alle Formularobjekte in einem Fließtextlayout übereinander angeordnet und nach links ausgerichtet. Da dies die Grundfläche des Formulars (nutzbarer Whitespace-Bereich auf einem Formular) nicht ausreichend ausnutzt, muss man entweder eine Tabelle oder vorzugsweise ein Unterformular verwenden, das ein positioniertes Layout innerhalb des Fließtextlayouts hat.

Erstellen eines Unterformulars mit Fließtextlayout

Es spielt keine Rolle, ob man die ganze Seite oder eine umgebrochene Unterform des Fließtextbereichs erstellt, es muss nur Fließtext sein.

Hinweis:

 Wenn Sie die gesamte Ansicht als Fließtext erstellen möchten, klicken Sie dazu mit der rechten Maustaste auf das Element in der Formularobjekthierarchie, das die Seite in der Designansicht darstellt (standardmäßig heißt dies: „(untitled Subform)(page 1)“). Vergewissern Sie sich, dass Sie nicht mit der rechten Maustaste auf das Objekt „Seite1“ unter dem Objekt „(Übergeordnete Seiten)“ klicken.

So erstellen Sie ein neues Unterformular:

  1. Klicken Sie mit der rechten Maustaste auf die Seite in der Formularobjekthierarchie (standardmäßig links im Designer).

  2. Wählen Sie im angezeigten Popup-Menü „Unterformular einfügen“ aus.

  3. Benennen Sie Ihr Unterformular entsprechend (im folgenden Beispiel wurde dieses Objekt „UserDesigneeContainer“ genannt).

  4. Stellen Sie sicher, dass die Einstellung „Inhalt“ auf der Registerkarte „Unterformular“ unter der Palette „Objekt“ auf „Fließtext“ eingestellt ist.

Erstellen Sie im Unterformular „Fließtext“ ein Unterformular mit einem positionierten Layout

  1. Klicken Sie mit der rechten Maustaste in der Formularobjekthierarchie auf das neu erstellte Unterformular mit Fließtext.

  2. Wählen Sie im angezeigten Popup-Menü „Unterformular einfügen“ aus.

  3. Benennen Sie Ihr Unterformular entsprechend (im folgenden Beispiel wurde dieses Objekt „UserDesigneeSubform“ genannt).

  4. Stellen Sie sicher, dass die Einstellung „Inhalt“ auf der Registerkarte „Unterformular“ unter der Palette „Objekt“ auf „Positioniert“ eingestellt ist.

  5. Fügen Sie die Formularelemente hinzu, die in diesem Unterformular wiederholt werden sollen (Abbildungen 2 und 3).

Erstellen Sie ein Schema, das einen Knoten enthält, um das sich wiederholende Unterformular zu imitieren

Die XML-Schemaentwicklung ist für diese Anleitung nicht relevant, aber es muss ein XML-Schema für das Formular erstellt und dann eine Datenverbindung zwischen dem Formular und dem Schema hergestellt werden.

Ein XML-Schema kann mit jedem XML- oder XSD-Schemaentwicklungstool entwickelt oder mit einem einfachen Texteditor wie dem Open-Source-Produkt Notepad++ erstellt werden.  Die einzige erforderliche Eigenschaft des XML-Schemas besteht darin, dass ein Abschnitt enthalten sein muss, der die Struktur des sich wiederholenden Unterformulars aufnimmt.

Im oben gezeigten Beispiel enthält das „UserDesigneeSubform“ einige Datenerfassungselemente, nämlich:

  • UserFirstNm – ein Textfeld
  • UserLastNm – ein Textfeld
  • UserAddChangeDelIn – eine Dropdown-Listenauswahl
  • UserTelNo – ein Textfeld (kann auch ein numerisches Feld sein)
  • UserEmailAd – ein Textfeld

Das bedeutet, dass das XML-Schemadokument ebenfalls dieselben Elemente enthalten muss (wie in Abbildung 4 unten dargestellt).  Beachten Sie, dass sowohl das enthaltende „Fließtext“-Objekt (UserDesigneeContainer) als auch das „positionierte“ Unterformularobjekt (UserDesigneeSubform) das Attribut „maxOccurs“ auf unbegrenzt gesetzt haben müssen.  Beachten Sie außerdem, dass das sich wiederholende Objekt „UserDesigneeSubform“ auch in das Objekt „UserDesigneeContainer“ eingebettet werden muss, damit es seine Position in der Formularhierarchie in Designer widerspiegelt.

Binden des sich wiederholenden Formularobjekts an das Schema

Sobald das Schema entwickelt und die Datenverbindung hergestellt wurde, kann mit dem Binden der Formularelemente an das Schema begonnen werden. Informationen zum Binden von Feldern an eine Datenquelle finden Sie hier.

Verwenden Sie das Sternchen in Klammern „[*]“

Der einzige Unterschied zu einer typischen Bindung eines Formularobjekts an ein XML-Schema besteht darin, dass der Entwickler auch ein mit Klammern versehenes Sternchen „[*]“ in den Bindungspfad in Designer aufnehmen muss (Abbildung 5).

Dies ist alles, was erforderlich ist, um das sich wiederholende Unterformular an die XSD-Datei zu binden.  Wenn ein Benutzer nun einen Abschnitt zum Ausfüllen des Formulars hinzufügt, wird ein weiterer identischer XML-Ausgabeknoten angezeigt (Abbildung 6).