Show Menu
THEMEN×

Formularstruktur

The description of a form is a structured XML document that observes the grammar of the form schema xtk:form .
The XML document of the input form must contain the <form> root element with the name and namespace attributes to populate the form name and namespace.
<form name="form_name" namespace="name_space">
...
</form>

Standardmäßig ist ein Formular mit dem Datenschema mit demselben Namen und Namespace verknüpft. Um ein Formular mit einem anderen Namen zu verknüpfen, legen Sie das entity-schema -Attribut des <form> Elements auf den Namen des Schemaschlüssels fest. Um die Struktur eines Eingabeformulars zu veranschaulichen, beschreiben wir eine Schnittstelle anhand des Beispielschemas "cus:empfänger":
<srcSchema name="recipient" namespace="cus">
  <enumeration name="gender" basetype="byte">    
    <value name="unknown" label="Not specified" value="0"/>    
    <value name="male" label="Male" value="1"/>   
    <value name="female" label="Female" value="2"/>   
  </enumeration>

  <element name="recipient">
    <attribute name="email" type="string" length="80" label="Email" desc="E-mail address of recipient"/>
    <attribute name="birthDate" type="datetime" label="Date"/>
    <attribute name="gender" type="byte" label="Gender" enum="gender"/>
  </element>
</srcSchema>

Das auf dem Beispielschema basierende Eingabeformular:
<form name="recipient" namespace="cus">
  <input xpath="@gender"/>
  <input xpath="@birthDate"/>
  <input xpath="@email"/>
</form>

Die Beschreibung der Steuerelemente zum Bearbeiten beginnt mit dem <form> Stammelement. An edit control is entered in an <input> element with the xpath attribute containing the path of the field in its schema.
Das Eingabefeld passt sich automatisch dem gewählten Datentyp an und verwendet den im Schema angegebenen Titel.
Sie können die im Datenschema definierte Beschriftung überladen, indem Sie das label -Attribut zum <input> Element hinzufügen: <input label="E-mail address" xpath="@name" />
Standardmäßig wird jedes Feld in einer einzelnen Zeile angezeigt und nimmt je nach Datentyp den gesamten verfügbaren Platz ein.

Layout

Das Layout der Steuerelemente ähnelt dem Layout, das in HTML-Tabellen verwendet wird. Es besteht die Möglichkeit, ein Steuerelement in mehrere Spalten zu unterteilen, Elemente zu überschneiden oder die Belegung des verfügbaren Raums anzugeben. Beachten Sie jedoch, dass Sie bei der Formatierung den Bereich nur nach Proportionen aufteilen können. Sie können keine festen Abmessungen für ein Objekt angeben.
So zeigen Sie die Steuerelemente des obigen Beispiels in zwei Spalten an:
<form name="recipient" namespace="cus">
  <container colcount="2">
    <input xpath="@gender"/>
    <input xpath="@birthDate"/>
    <input xpath="@email"/>
  </container>
</form>

Mit dem <container> Element mit dem Attribut " colcount "können Sie die Anzeige von untergeordneten Steuerelementen auf zwei Spalten erzwingen.
Das Attribut colspan eines Steuerelements erweitert das Steuerelement um die Anzahl der Spalten, die in seinen Wert eingegeben werden:
<form name="recipient" namespace="cus">
  <container colcount="2">
    <input xpath="@gender"/>
    <input xpath="@birthDate"/>
    <input xpath="@email" colspan="2"/>
  </container>
</form> 

Durch das Füllen des Attributs type="frame" fügt der Container einen Rahmen um die untergeordneten Steuerelemente mit der im Attribut label enthaltenen Beschriftung hinzu:
<form name="recipient" namespace="cus">
  <container colcount="2" type="frame" label="General">
    <input xpath="@gender"/>
    <input xpath="@birthDate"/>
    <input xpath="@email" colspan="2"/>
  </container>
</form>

Ein <static> Element kann zum Formatieren des Eingabefelds verwendet werden:
<form name="recipient" namespace="cus">
  <static type="separator" colspan="2" label="General"/>
  <input xpath="@gender"/>
  <input xpath="@birthDate"/>
  <input xpath="@email" colspan="2"/>
  <static type="help" label="General information about recipient with date of birth, gender, and e-mail address." colspan="2"/>
</form>

Mit dem <static> Tag mit dem Trennzeichentyp können Sie eine Trennleiste mit einer im label -Attribut enthaltenen Beschriftung hinzufügen.
Ein Hilfetext wurde mithilfe des <static> Tags mit dem Hilfetyp hinzugefügt. Der Inhalt des Textes wird im label -Attribut eingegeben.

Container

Mit Behältern können Sie einen Satz von Steuerelementen gruppieren. Sie werden durch das <container> Element dargestellt. Sie wurden oben verwendet, um Steuerelemente über mehrere Spalten zu formatieren.
Mit dem xpath -Attribut auf einem <container> können Sie die Referenz von untergeordneten Steuerelementen vereinfachen. Die Referenzierung von Steuerelementen ist dann relativ zum übergeordneten <container> Element.
Beispiel eines Containers ohne "xpath":
<container colcount="2">
  <input xpath="location/@zipCode"/>
  <input xpath="location/@city"/>
</container>

Beispiel mit dem Zusatz "xpath"zum Element "location":
<container colcount="2" xpath="location">
  <input xpath="@zipCode"/>
  <input xpath="@city"/>
</container>

Behältertypen

Container werden verwendet, um komplexe Steuerelemente mithilfe eines Satzes von Feldern zu erstellen, die in Seiten formatiert sind.

Tab-Container

Ein Registerkartencontainer formatiert Daten auf Seiten, auf die über Registerkarten zugegriffen werden kann.
<container type="notebook">
  <container colcount="2" label="General">
    <input xpath="@gender"/>
    <input xpath="@birthDate"/>
    <input xpath="@email" colspan="2"/>
  </container>
  <container colcount="2" label="Location">
    ...
  </container>
</container>

Der Hauptbehälter wird durch das Attribut type="Notebook" definiert. Tabs werden in den untergeordneten Behältern deklariert, und die Beschriftung der Registerkarten wird aus dem label -Attribut gefüllt.
Eine style="down|up (standardmäßig) " -Funktion erzwingt die vertikale Positionierung von Registerkartenbeschriftungen unter oder über dem Steuerelement. Hierbei handelt es sich um eine optionale Funktion. <container style="down" type="notebook"> ... </container>

Symbolliste

In diesem Container wird eine vertikale Symbolleiste angezeigt, mit der Sie die anzuzeigenden Seiten auswählen können.
<container type="iconbox">
  <container colcount="2" label="General" img="xtk:properties.png">
    <input xpath="@gender"/>
    <input xpath="@birthDate"/>
    <input xpath="@email" colspan="2"/>
  </container>
  <container colcount="2" label="Location" img="nms:msgfolder.png">
    ...
  </container>
</container>

Der Hauptbehälter wird durch das Attribut type="iconbox" definiert. Die mit den Symbolen verknüpften Seiten werden in den untergeordneten Behältern deklariert. Die Beschriftung der Symbole wird aus dem label -Attribut gefüllt.
Das Symbol einer Seite wird aus dem img="<image>" Attribut gefüllt, wobei <image> der Name des Bilds, das dem Schlüssel entspricht, der aus dem Namen und dem Namespace besteht (z. B. "xtk:properties.png").
Die Bilder sind über den Administration > Configuration > Images Knoten verfügbar.

Sichtbarkeitsbehälter

Sie können eine Gruppe von Steuerelementen über eine dynamische Bedingung maskieren.
Dieses Beispiel veranschaulicht die Sichtbarkeit der Steuerelemente für den Wert des Felds "Geschlecht":
<container type="visibleGroup" visibleIf="@gender=1">
  ...
</container>
<container type="visibleGroup" visibleIf="@gender=2">
  ...
</container>

Ein Sichtbarkeitsbehälter wird durch das Attribut type="visibleGroup" definiert. Das Attribut visibleIf enthält die Sichtbarkeitsbedingung.
Beispiele für Bedingungssyntax:
  • visibleIf="@email='peter.martinezATneeolane.net'" : prüft Gleichheit bei Zeichenfolgendaten. Der Vergleichswert muss in Anführungszeichen gesetzt werden.
  • visibleIf="@gender >= 1 und @gender != 2" : -Bedingung auf einen numerischen Wert.
  • visibleIf="@boolean1==true oder @boolean2==false" : Testen von booleschen Feldern.

Container aktivieren

Mit diesem Container können Sie einen Datensatz aus einer dynamischen Bedingung aktivieren oder deaktivieren. Durch Deaktivieren eines Steuerelements wird dessen Bearbeitung verhindert. Das folgende Beispiel veranschaulicht die Aktivierung von Steuerelementen aus dem Wert des Felds "Geschlecht":
<container type="enabledGroup" enabledIf="@gender=1">
  ...
</container>
<container type="enabledGroup" enabledIf="@gender=2">
  ...
</container>

Ein aktivierbarer Container wird durch das Attribut type="enabledGroup" definiert. Das Attribut enabledIf enthält die Aktivierungsbedingung.

Steuerelemente für Speicherlisten

Mit Speicherlisten können Sie die Sammlungselemente mithilfe des Vorladens von Listendaten bearbeiten. Diese Liste kann nicht gefiltert oder konfiguriert werden.
Diese Listen werden für XML-zugeordnete Sammlungselemente oder für Links mit niedrigem Volumen verwendet.

Listen in Spalten

Dieses Steuerelement zeigt eine Liste mit editierbaren Spalten und einer Symbolleiste mit den Schaltflächen "Hinzufügen" und "Löschen" an.
<input xpath="rcpEvent" type="list">
  <input xpath="@label"/>
  <input xpath="@date"/>
</input>

Das Steuerelement Liste muss vom Attribut type="list" begleitet werden, der Listenpfad muss auf das Kollektionselement verweisen.
The columns are declared in the child <input> tags of the list. Spaltenbeschriftung und -größe können mit den Attributen label und colSize erzwungen werden.
Pfeile der Sortierreihenfolge werden automatisch hinzugefügt, wenn das Attribut ordered=" dem Collection-Element im Datenschema hinzugefügt wird.
Die Symbolleistenschaltflächen können horizontal ausgerichtet werden:
<input nolabel="true" toolbarCaption="List of events" type="list" xpath="rcpEvent" zoom="true">
  <input xpath="@label"/>
  <input xpath="@date"/>
</input>

The toolbarCaption attribute forces the horizontal alignment of the toolbar and enters the title above the list.

In Listen zoomen

Das Einfügen und Bearbeiten der Daten in eine Liste kann in einem separaten Bearbeitungsformular eingegeben werden.
<input nolabel="true" toolbarCaption="List of events" type="list" xpath="rcpEvent" zoom="true" zoomOnAdd="true">
  <input xpath="@label"/>
  <input xpath="@date"/>

  <form colcount="2" label="Event">
    <input xpath="@label"/>
    <input xpath="@date"/>
  </form>
</input>

Das Bearbeitungsformular wird aus dem <form> Element unter Listendefinition ausgefüllt. Die Struktur des Formulars ist identisch mit der eines Eingabefelds. Die Detail Schaltfläche wird automatisch hinzugefügt, wenn das Attribut zoom="true" auf dem <input> Tag der Liste abgeschlossen ist. Mit diesem Attribut können Sie das Bearbeitungsformular der ausgewählten Zeile starten.
Durch Hinzufügen des Attributs zoomOnAdd="true" wird das Bearbeitungsformular beim Einfügen eines Listenelements aufgerufen.

Listeneigenschaften

  • noToolbar : Blendet die Symbolleiste aus (mit dem Wert "true")
  • toolbarCaption : überschreibt die Symbolleistenbeschriftung
  • toolbarAlign : ändert die Positionierung der Symbolleiste (mögliche Werte: "vertical"|"horizontal")
  • img : zeigt das mit der Liste verknüpfte Bild an
  • form : überschreibt das Bearbeitungsformular des Zielelements
  • zoom : fügt die Zoom Schaltfläche zum Bearbeiten des Zielelements hinzu
  • zoomOnAdd : startet das Bearbeitungsformular auf dem Zusatz
  • xpathChoiceTarget : startet außerdem das Auswahlformular auf dem eingegebenen Link

Nicht bearbeitbare Felder

Um ein Feld anzuzeigen und zu verhindern, dass es bearbeitet wird, verwenden Sie das <value> Tag oder füllen Sie das Attribut readOnly="true" auf dem <input> Tag aus.
Beispiel für das Feld "Geschlecht":
<value value="@gender"/>
<input xpath="@gender" readOnly="true"/>

Optionsfeld

Mit einem Optionsfeld können Sie aus verschiedenen Optionen wählen. Die <input> Tags werden verwendet, um die möglichen Optionen aufzulisten, und das Attribut checkValue gibt den Wert an, der der Auswahl zugeordnet ist.
Beispiel für das Feld "Geschlecht":
<input type="RadioButton" xpath="@gender" checkedValue="0" label="Choice 1"/>
<input type="RadioButton" xpath="@gender" checkedValue="1" label="Choice 2"/>
<input type="RadioButton" xpath="@gender" checkedValue="2" label="Choice 3"/>

Kontrollkästchen

Ein Kontrollkästchen gibt den booleschen Status an (ausgewählt oder nicht). Standardmäßig wird dieses Steuerelement von "Booleschen"(true/false) Feldern verwendet. Eine Variable, die den Standardwert 0 oder 1 hat, kann mit dieser Schaltfläche verknüpft werden. Dieser Wert kann über die Attribute checkValue überladen werden.
<input xpath="@boolean1"/>
<input xpath="@field1" type="checkbox" checkedValue="Y"/>

Ausdrucksfeld

Ein Ausdrucksfeld aktualisiert ein Feld dynamisch von einem Ausdruck. das <input> Tag wird mit einem xpath -Attribut verwendet, um den Pfad des zu aktualisierenden Felds und ein expr -Attribut mit dem Ausdruck update einzugeben.
<!-- Example: updating the boolean1 field from the value contained in the field with path /tmp/@flag -->
<input expr="Iif([/tmp/@flag]=='On', true, false)" type="expr" xpath="@boolean1"/>
<input expr="[/ignored/@action] == 'FCP'" type="expr" xpath="@launchFCP"/>

Kontext von Formularen

Die Ausführung eines Eingabefelds initialisiert ein XML-Dokument, das die Daten der Entität enthält, die bearbeitet wird. Dieses Dokument stellt den Kontext des Formulars dar und kann als Arbeitsbereich verwendet werden.

Aktualisieren des Kontexts

Um den Kontext des Formulars zu ändern, verwenden Sie das <set expr="<value>" xpath="<field>"/> -Tag, wobei <field> das Zielfeld und der Aktualisierungsausdruck oder -wert <value> sind.
Beispiele für die Verwendung des <set> -Tags:
  • <set expr="'Test'" xpath="/tmp/@test" /> : positioniert den Wert 'Test' an der temporären Position /tmp/@test1
  • <set expr="'Test'" xpath="@lastName" /> : aktualisiert die Entität des Attributs "lastName"mit dem Wert "Test"
  • <set expr="true" xpath="@boolean1" /> : setzt den Wert des Felds "boolean1"auf "true"
  • <set expr="@lastName" xpath="/tmp/@test" /> : Aktualisierungen mit dem Inhalt des Attributs "lastName"
Der Kontext des Formulars kann beim Initialisieren und Schließen des Formulars über die Tags <enter> und <leave> aktualisiert werden.
<form name="recipient" namespace="cus">
  <enter>
    <set...
  </enter>
  ...
  <leave>
    <set...
  </leave>
</form>

Die Tags <enter> und <leave> Tags können auf den Seiten ("Notebook"- und "iconbox"-Typen) verwendet werden <container> .

Ausdruckssprache

In der Formulardefinition kann eine Makrosprache verwendet werden, um bedingte Tests durchzuführen.
Das <if expr="<expression>" /> -Tag führt die unter dem Tag angegebenen Anweisungen aus, wenn der Ausdruck überprüft wird:
<if expr="([/tmp/@test] == 'Test' or @lastName != 'Doe') and @boolean2 == true">
  <set xpath="@boolean1" expr="true"/>
</if>

Das <check expr="<condition>" /> Tag in Kombination mit dem <error> Tag verhindert die Überprüfung des Formulars und zeigt eine Fehlermeldung an, wenn die Bedingung nicht erfüllt ist:
<leave>
  <check expr="/tmp/@test != ''">
    <error>You must populate the 'Test' field!</error> 
  </check>
</leave>

Assistenten

Ein Assistent führt Sie durch eine Reihe von Schritten zur Dateneingabe in Form von Seiten. Die eingegebenen Daten werden beim Überprüfen des Formulars gespeichert.
Ein Assistent hat folgende Struktur:
<form type="wizard" name="example" namespace="cus" img="nms:rcpgroup32.png" label="Wizard example" entity-schema="nms:recipient">
  <container title="Title of page 1" desc="Long description of page 1">
    <input xpath="@lastName"/>
    <input xpath="comment"/>
  </container>
  <container title="Title of page 2" desc="Long description of page 2">
    ...
  </container>
  ...
</form>

Durch das Vorhandensein des Attributs type="wizard" auf dem <form> Element können Sie den Assistentenmodus beim Aufbau des Formulars definieren. Die Seiten werden aus <container> Elementen abgeschlossen, die dem <form> Element untergeordnet sind. Das <container> Element einer Seite wird mit den Titelattributen für den Titel und desc gefüllt, um die Beschreibung unter dem Seitentitel anzuzeigen. Die Schaltflächen Previous und Next werden automatisch hinzugefügt, um das Durchsuchen von Seiten zu ermöglichen.
Über die Finish Schaltfläche werden die eingegebenen Daten gespeichert und das Formular geschlossen.

SOAP-Methoden

Die Ausführung der SOAP-Methode kann von einem ausgefüllten <leave> -Tag am Ende einer Seite gestartet werden.
Das <soapcall> -Tag enthält den Aufruf für die Methode mit den folgenden Eingabeparametern:
<soapCall name="<name>" service="<schema>">
  <param type="<type>" exprIn="<xpath>"/>  
  ...
</soapCall>

Der Name des Dienstes und sein Implementierungsschema werden über den Namen und die Dienstattribute des <soapcall> Tags eingegeben.
Die Eingabeparameter werden in den <param> Elementen unter dem <soapcall> -Tag beschrieben.
Der Parametertyp muss über das type -Attribut angegeben werden. Folgende Typen sind möglich:
  • Zeichenfolge : Zeichenfolge
  • boolean : Boolesch
  • byte : 8-Bit-Ganzzahl
  • short : 16-Bit-Ganzzahl
  • long : 32-Bit-Ganzzahl
  • short : 16-Bit-Ganzzahl
  • Double : Gleitkommazahl mit doppelter Genauigkeit
  • DOMElement : element-type-Knoten
Das Attribut exprIn enthält den Speicherort der Daten, die als Parameter übergeben werden sollen.
Beispiel :
<leave>
  <soapCall name="RegisterGroup" service="nms:recipient">         
    <param type="DOMElement" exprIn="/tmp/entityList"/>         
    <param type="DOMElement" exprIn="/tmp/choiceList"/>         
    <param type="boolean"    exprIn="true"/>       
  </soapCall>
</leave>