Show Menu
ARGOMENTI×

Struttura di un modulo

La descrizione di un modulo è un documento XML strutturato che osserva la grammatica dello schema del modulo xtk:form .
Il documento XML del modulo di input deve contenere l'elemento <form> principale con gli attributi name e namespace per compilare il nome e lo spazio dei nomi del modulo.
<form name="form_name" namespace="name_space">
...
</form>

Per impostazione predefinita, un modulo è associato allo schema dati con lo stesso nome e lo stesso spazio dei nomi. Per associare un modulo con un nome diverso, impostare l'attributo entity-schema dell' <form> elemento sul nome della chiave dello schema. Per illustrare la struttura di un modulo di input, descriviamo un'interfaccia utilizzando lo schema di esempio "cus:Recipient":
<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>

Modulo di input basato sullo schema di esempio:
<form name="recipient" namespace="cus">
  <input xpath="@gender"/>
  <input xpath="@birthDate"/>
  <input xpath="@email"/>
</form>

La descrizione dei controlli di modifica inizia dall'elemento <form> principale. Un controllo di modifica viene immesso in un <input> elemento con l'attributo xpath che contiene il percorso del campo nello schema.
Il controllo edit si adatta automaticamente al tipo di dati corrispondente e utilizza l'etichetta definita nello schema.
È possibile sovraccaricare l'etichetta definita nel relativo schema dati aggiungendo l'attributo label all' <input> elemento: <input label="E-mail address" xpath="@name" />
Per impostazione predefinita, ogni campo viene visualizzato su una sola riga e occupa tutto lo spazio disponibile a seconda del tipo di dati.

Formattazione

Il layout dei controlli è simile al layout utilizzato nelle tabelle HTML, con la possibilità di dividere un controllo in più colonne, elementi di interlacciamento o di specificare l'occupazione dello spazio disponibile. Tenere presente, tuttavia, che la formattazione consente solo di dividere l’area per proporzioni; non è possibile specificare dimensioni fisse per un oggetto.
Per visualizzare i controlli dell'esempio precedente in due colonne:
<form name="recipient" namespace="cus">
  <container colcount="2">
    <input xpath="@gender"/>
    <input xpath="@birthDate"/>
    <input xpath="@email"/>
  </container>
</form>

L’ <container> elemento con l’attributo colcount consente di forzare la visualizzazione dei controlli secondari su due colonne.
L'attributo colspan di un controllo estende il controllo per il numero di colonne immesso nel relativo valore:
<form name="recipient" namespace="cus">
  <container colcount="2">
    <input xpath="@gender"/>
    <input xpath="@birthDate"/>
    <input xpath="@email" colspan="2"/>
  </container>
</form> 

Compilando l'attributo type="frame" , il contenitore aggiunge una cornice attorno ai controlli secondari con l'etichetta contenuta nell'attributo label :
<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>

Un <static> elemento può essere utilizzato per formattare il modulo di input:
<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>

Il <static> tag con il tipo di separatore consente di aggiungere una barra di separazione con un'etichetta contenuta nell'attributo label .
È stato aggiunto un testo della guida con il <static> tag help type. Il contenuto del testo viene immesso nell'attributo label .

Contenitori

I contenitori consentono di raggruppare un set di controlli. Sono rappresentati dall' <container> elemento . Sono stati utilizzati sopra per formattare i controlli su più colonne.
L'attributo xpath di un <container> oggetto consente di semplificare il riferimento ai controlli secondari. Il riferimento dei controlli è quindi relativo all' <container> elemento padre.
Esempio di contenitore senza "xpath":
<container colcount="2">
  <input xpath="location/@zipCode"/>
  <input xpath="location/@city"/>
</container>

Esempio con l'aggiunta di "xpath" all'elemento denominato "location":
<container colcount="2" xpath="location">
  <input xpath="@zipCode"/>
  <input xpath="@city"/>
</container>

Tipi di contenitore

I contenitori vengono utilizzati per creare controlli complessi utilizzando un set di campi formattati nelle pagine.

Contenitore di tabulazione

Un contenitore tabulazione formatta i dati in pagine accessibili dalle schede.
<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>

Il contenitore principale è definito dall'attributo type="blocco appunti" . Le schede vengono dichiarate nei contenitori secondari e l'etichetta delle schede viene compilata dall'attributo label .
Una funzione style="down|up (per impostazione predefinita) " forza il posizionamento verticale delle etichette di tabulazione sotto o sopra il controllo. Questa funzione è facoltativa. <container style="down" type="notebook"> ... </container>

Elenco icone

Questo contenitore presenta una barra di icone verticale che consente di selezionare le pagine da visualizzare.
<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>

Il contenitore principale è definito dall'attributo type="iconbox" . Le pagine associate alle icone sono dichiarate nei contenitori secondari. L'etichetta delle icone viene compilata dall'attributo label .
L'icona di una pagina viene compilata dall' img="<image>" attributo, dove <image> è il nome dell'immagine corrispondente alla chiave costituita dal nome e dallo spazio dei nomi (ad esempio, "xtk:properties.png").
Le immagini sono disponibili dal Administration > Configuration > Images nodo.

Contenitore di visibilità

È possibile mascherare un set di controlli tramite una condizione dinamica.
Questo esempio illustra la visibilità dei controlli sul valore del campo "Genere":
<container type="visibleGroup" visibleIf="@gender=1">
  ...
</container>
<container type="visibleGroup" visibleIf="@gender=2">
  ...
</container>

Un contenitore di visibilità è definito dall'attributo type="visibleGroup" . L'attributo visibleIf contiene la condizione di visibilità.
Esempi di sintassi della condizione:
  • visibleIf="@email='peter.martinezATneeolane.net'" : verifica l'uguaglianza nei dati di tipo stringa. Il valore di confronto deve essere racchiuso tra virgolette.
  • visibleIf="@gender >= 1 e @gender != 2" : su un valore numerico.
  • visibleIf="@boolean1==true o @boolean2==false" : test sui campi booleani.

Abilitazione del contenitore

Questo contenitore consente di abilitare o disabilitare un set di dati da una condizione dinamica. La disattivazione di un controllo ne impedisce la modifica. L'esempio seguente illustra l'abilitazione dei controlli dal valore del campo "Genere":
<container type="enabledGroup" enabledIf="@gender=1">
  ...
</container>
<container type="enabledGroup" enabledIf="@gender=2">
  ...
</container>

Un contenitore di attivazione è definito dall'attributo type="enabledGroup" . L'attributo enabledIf contiene la condizione di attivazione.

Controlli dell'elenco di memoria

Gli elenchi di memoria consentono di modificare gli elementi della raccolta utilizzando il precaricamento dei dati dell'elenco. Impossibile filtrare o configurare l'elenco.
Questi elenchi vengono utilizzati sugli elementi di raccolta mappati XML o su collegamenti di volume basso.

Elenco colonne

Questo controllo visualizza un elenco di colonne modificabili con una barra degli strumenti contenente i pulsanti Aggiungi ed Elimina.
<input xpath="rcpEvent" type="list">
  <input xpath="@label"/>
  <input xpath="@date"/>
</input>

Il controllo elenco deve essere compilato con l'attributo type="list" e il percorso dell'elenco deve fare riferimento all'elemento collection.
Le colonne sono dichiarate nei <input> tag secondari dell'elenco. L’etichetta e la dimensione delle colonne possono essere forzate con gli attributi label e colSize .
Le frecce di ordinamento vengono aggiunte automaticamente quando l'attributo ordered="true" viene aggiunto all'elemento raccolta nello schema di dati.
I pulsanti della barra degli strumenti possono essere allineati orizzontalmente:
<input nolabel="true" toolbarCaption="List of events" type="list" xpath="rcpEvent" zoom="true">
  <input xpath="@label"/>
  <input xpath="@date"/>
</input>

L'attributo toolbarCaption forza l'allineamento orizzontale della barra degli strumenti e inserisce il titolo sopra l'elenco.

Zoom in un elenco

L'inserimento e la modifica dei dati in un elenco possono essere immessi in un modulo di modifica separato.
<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>

Il modulo di modifica viene completato dall' <form> elemento in definizione elenco. La struttura è identica a quella di un modulo di input. Il Detail pulsante viene aggiunto automaticamente quando l’attributo zoom="true" viene completato sul <input> tag dell’elenco. Questo attributo consente di avviare il modulo di modifica della riga selezionata.
Aggiungendo l’attributo zoomOnAdd="true" si forza la chiamata del modulo di modifica quando viene inserito un elemento elenco.

Proprietà elenco

  • noToolbar : nasconde la barra degli strumenti (con valore "true")
  • toolbarCaption : scarica l’etichetta della barra degli strumenti
  • toolbarAlign : modifica il posizionamento della barra degli strumenti (valori possibili: "vertical"|"horizontal")
  • img : visualizza l'immagine associata all'elenco
  • modulo : carica il modulo di modifica dell'elemento di destinazione
  • zoom : aggiunge il Zoom pulsante per modificare l'elemento di destinazione
  • zoomOnAdd : avvia il modulo di modifica sull’aggiunta
  • xpathChoiceTarget : inoltre, avvia il modulo di selezione sul collegamento inserito

Campi non modificabili

Per visualizzare un campo e impedirne la modifica, utilizzate il <value> tag o completate l'attributo readOnly="true" sul <input> tag .
Esempio nel campo "Genere":
<value value="@gender"/>
<input xpath="@gender" readOnly="true"/>

Pulsante di scelta

Un pulsante di scelta consente di scegliere tra diverse opzioni. I <input> tag vengono utilizzati per elencare le opzioni possibili e l'attributo checkValue specifica il valore associato alla scelta.
Esempio nel campo "Genere":
<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"/>

Casella di controllo

Una casella di controllo riflette uno stato booleano (selezionato o meno). Per impostazione predefinita, questo controllo è utilizzato dai campi "booleani" (true/false). A questo pulsante può essere associata una variabile con un valore predefinito pari a 0 o 1. Questo valore può essere sovraccaricato tramite gli attributi checkValue .
<input xpath="@boolean1"/>
<input xpath="@field1" type="checkbox" checkedValue="Y"/>

Campo espressione

Un campo espressione aggiorna dinamicamente un campo da un'espressione; il <input> tag viene utilizzato con un attributo xpath per immettere il percorso del campo da aggiornare e un attributo espr contenente l'espressione update.
<!-- 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"/>

Contesto dei moduli

L'esecuzione di un modulo di input inizializza un documento XML contenente i dati dell'entità in fase di modifica. Questo documento rappresenta il contesto del modulo e può essere utilizzato come area di lavoro.

Aggiornamento del contesto

Per modificare il contesto del modulo, utilizzare il <set expr="<value>" xpath="<field>"/> tag , dove <field> è il campo di destinazione, ed <value> è l'espressione o il valore di aggiornamento.
Esempi di utilizzo del <set> tag:
  • <set expr="'Test'" xpath="/tmp/@test" /> : posiziona il valore 'Test' nella posizione temporanea /tmp/@test1
  • <set expr="'Test'" xpath="@lastName" /> : aggiorna l'entità sull'attributo "lastName" con il valore "Test"
  • <set expr="true" xpath="@boolean1" /> : imposta il valore del campo "boolean1" su "true"
  • <set expr="@lastName" xpath="/tmp/@test" /> : aggiornamenti relativi al contenuto dell'attributo "lastName"
Il contesto del modulo può essere aggiornato quando si inizializza e si chiude il modulo tramite <enter> tag e <leave> .
<form name="recipient" namespace="cus">
  <enter>
    <set...
  </enter>
  ...
  <leave>
    <set...
  </leave>
</form>

I <enter> tag e <leave> possono essere utilizzati sulla <container> serie di pagine ("blocco appunti" e "iconbox").

Lingua delle espressioni

Per eseguire test condizionali è possibile utilizzare una macro-lingua nella definizione del modulo.
Il <if expr="<expression>" /> tag esegue le istruzioni specificate sotto il tag se l'espressione è verificata:
<if expr="([/tmp/@test] == 'Test' or @lastName != 'Doe') and @boolean2 == true">
  <set xpath="@boolean1" expr="true"/>
</if>

Il <check expr="<condition>" /> tag combinato con il <error> tag impedisce la convalida del modulo e visualizza un messaggio di errore se la condizione non è soddisfatta:
<leave>
  <check expr="/tmp/@test != ''">
    <error>You must populate the 'Test' field!</error> 
  </check>
</leave>

Procedure guidate

Una procedura guidata illustra una serie di passaggi per l'immissione dei dati nel modulo delle pagine. I dati immessi vengono salvati al momento della convalida del modulo.
Una procedura guidata ha la struttura seguente:
<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>

La presenza dell'attributo type="Wizard" sull' <form> elemento consente di definire la modalità guidata nella costruzione del modulo. Le pagine vengono completate da <container> elementi secondari dell' <form> elemento. L' <container> elemento di una pagina viene popolato con gli attributi title per il titolo e desc per visualizzare la descrizione sotto il titolo della pagina. I Previous pulsanti e Next vengono aggiunti automaticamente per consentire la navigazione tra le pagine.
Il Finish pulsante salva i dati immessi e chiude il modulo.

Metodi SOAP

L'esecuzione del metodo SOAP può essere avviata da un <leave> tag popolato alla fine di una pagina.
Il <soapcall> tag contiene la chiamata per il metodo con i seguenti parametri di input:
<soapCall name="<name>" service="<schema>">
  <param type="<type>" exprIn="<xpath>"/>  
  ...
</soapCall>

Il nome del servizio e il relativo schema di implementazione vengono immessi tramite gli attributi name e service del <soapcall> tag.
I parametri di input sono descritti sugli <param> elementi sotto il <soapcall> tag .
Il tipo di parametro deve essere specificato tramite l'attributo type . I tipi possibili sono i seguenti:
  • stringa : stringa di caratteri
  • booleano : Booleano
  • byte : Numero intero a 8 bit
  • short : Numero intero a 16 bit
  • long : Numero intero a 32 bit
  • short : Numero intero a 16 bit
  • double : numero a virgola mobile a doppia precisione
  • DOMElement : element-type node
L'attributo exprIn contiene la posizione dei dati da trasmettere come parametro.
Esempio :
<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>