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 Schema data mit demselben Namen und demselben Namensraum verknüpft. Um ein Formular mit einem anderen Namen zu verknüpfen, setzen Sie das entity-Schema -Attribut des <form> Elements auf den Namen des Schema-Schlüssels. Um die Struktur eines Eingabefformulars zu veranschaulichen, beschreiben wir eine Schnittstelle mit dem Schema "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 Eingabedatum basiert auf dem Schema example:
<form name="recipient" namespace="cus">
  <input xpath="@gender"/>
  <input xpath="@birthDate"/>
  <input xpath="@email"/>
</form>

Die Beschreibung der Bearbeitungssteuerelemente enthält Beginn aus dem <form> Stammelement. Ein Eingabefeld wird in einem <input> -Element mit seinem xpath -Attribut notiert, welches den Pfad des Felds in seinem Schema enthält.
Das Eingabefeld passt sich automatisch dem gewählten Datentyp an und verwendet den im Schema angegebenen Titel.
Sie können die im Schema data definierte Beschriftung überladen, indem Sie das Attribut label 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 ein Bild um die untergeordneten Steuerelemente mit der Beschriftung im label -Attribut 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 in das label -Attribut eingegeben.

Container

Mit Containern 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>

Typen von Containern

Container werden zum Erstellen komplexer Steuerelemente mit einem Satz von Feldern verwendet, die in Seiten formatiert sind.

Tabulator-Container

Ein Tabulator-Container 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 Hauptparameter wird durch das Attribut type="notebook" definiert. Tabs werden in den untergeordneten Containern 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>

Symbol-Liste

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 Container main wird durch das Attribut type="iconbox" definiert. Die mit den Symbolen verknüpften Seiten werden in den untergeordneten Containern deklariert. Die Beschriftung der Symbole wird aus dem label -Attribut gefüllt.
Das Seitensymbol wird aus dem img="<image>" Attribut gefüllt, wobei <image> der Bildname der zugehörigen Taste aus Name und Namensraum (z. B. "xtk:properties.png") entspricht.
Die Bilder stehen unter Administration > Konfiguration > Bilder zur Verfügung.

Container der Sichtbarkeit

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 Container für die Sichtbarkeit 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.

Aktivieren von Container

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 aktivierender Container wird durch das Attribut type="enabledGroup" definiert. Das Attribut enabledIf enthält die Bedingung für die Aktivierung.

Steuerelemente für die Memory-Liste

Mithilfe von Listen im Arbeitsspeicher können Sie die Sammlungselemente mithilfe der Listen-Daten im Voraus 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 nach Sortierreihenfolge werden automatisch hinzugefügt, wenn das Attribut ordered=" dem Collection-Element im data-Schema 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 einer 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 Liste-Definition ausgefüllt. Die Struktur des Formulars ist identisch mit der eines Eingabefelds. Die Detailschaltfläche wird automatisch hinzugefügt, wenn das Attribut zoom="true" im Tag der Liste abgeschlossen ist <input> . 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 Liste-Elements aufgerufen.

Eigenschaften der Liste

  • 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 Bild an, das der Liste zugeordnet ist
  • form : überschreibt das Bearbeitungsformular des Zielelements
  • zoom : fügt die Schaltfläche " Zoom "hinzu, um das Zielelement zu bearbeiten
  • 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 zur Liste der möglichen Optionen verwendet, 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 den Feldern "Boolescher Wert"(true/false) 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"/>

Feld "Ausdruck"

Ein Feld "Ausdruck"aktualisiert ein Feld dynamisch von einem Ausdruck aus. das <input> -Tag mit einem xpath -Attribut verwendet wird, um den Pfad des zu aktualisierenden Felds und ein expr -Attribut mit dem update-Ausdruck 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 Aktualisierungswert der Ausdruck oder Wert <value> ist.
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 <container> werden.

Ausdruck

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 bei der Überprüfung 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 untergeordnete Elemente des <form> Elements 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 " Zurück "und " Weiter "werden automatisch hinzugefügt, um das Durchsuchen zwischen Seiten zu ermöglichen.
Über die Schaltfläche " Fertig stellen "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 das zugehörige Implementierungsattribut werden über die Namens - und 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
  • dublette : Gleitkommazahl mit Dublette
  • 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>