Gli addetti al marketing e gli operatori utilizzano i moduli di input per creare, modificare e visualizzare in anteprima i record. Forms mostra una rappresentazione visiva delle informazioni.
È possibile creare e modificare i moduli di input:
Forms sono entità di xtk:form
tipo. È possibile visualizzare la struttura del modulo di input in xtk:form
schema. Per visualizzare questo schema, scegli Administration > Configuration > Data schemas dal menu. Ulteriori informazioni su struttura del modulo.
Per accedere ai moduli di input, scegliere Administration> Configuration >Input forms dal menu:
Per progettare moduli, modificare il contenuto XML nell'editor XML:
Per visualizzare l'anteprima di un modulo, fare clic su Preview scheda:
È possibile creare diversi tipi di moduli di input. Il tipo di modulo determina il modo in cui gli utenti si spostano nel modulo:
Schermata console
Questo è il tipo di modulo predefinito. Il modulo comprende una singola pagina.
Gestione dei contenuti
Utilizza questo tipo di modulo per la gestione dei contenuti. Vedi questo caso d’uso.
Assistente virtuale
Questo modulo comprende più schermi mobili ordinati in una sequenza specifica. Gli utenti possono passare da una schermata all’altra. Ulteriori informazioni.
Iconbox
Questo modulo comprende più pagine. Per spostarsi nel modulo, gli utenti selezionano le icone a sinistra del modulo.
Notebook
Questo modulo comprende più pagine. Per spostarsi nel modulo, gli utenti selezionano le schede nella parte superiore del modulo.
Riquadro verticale
In questo modulo viene visualizzata una struttura di spostamento.
Riquadro orizzontale
Questo modulo mostra un elenco di elementi.
Nei moduli è possibile utilizzare i contenitori per vari scopi:
Utilizzare i contenitori per organizzare il contenuto nei moduli:
Per inserire un contenitore, utilizza <container>
elemento. Ulteriori informazioni.
Utilizza i contenitori per raggruppare i campi di input in sezioni organizzate.
Per inserire una sezione in un modulo, utilizzare questo elemento: <container type="frame">
. Facoltativamente, per aggiungere un titolo di sezione, utilizza label
attributo.
Sintassi: <container type="frame" label="
section_title"> […] </container>
In questo esempio, un contenitore definisce Creazione sezione, che comprende Created by e Name campi di input:
<form _cs="Coupons (nms)" entitySchema="xtk:form" img="xtk:form.png" label="Coupons"
name="coupon" namespace="nms" type="default" xtkschema="xtk:form">
<input xpath="@code"/>
<input xpath="@type"/>
<container label="Creation" type="frame">
<input xpath="createdBy"/>
<input xpath="createdBy/@name"/>
</container>
</form>
Per i moduli multipagina, utilizza un contenitore per creare una pagina modulo.
Questo esempio mostra i contenitori per Generale e Dettagli pagine di un modulo:
<container img="ncm:book.png" label="General">
[…]
</container>
<container img="ncm:detail.png" label="Details">
[…]
</container>
Utilizza i contenitori per definire ciò che è visibile e per definire l’accesso ai campi. È possibile attivare o disattivare gruppi di campi.
Utilizzare i contenitori per nidificare i moduli all'interno di altri moduli. Ulteriori informazioni.
Per trovare le immagini, scegliere Administration > Configuration > Images dal menu.
Per associare un'immagine a un elemento del modulo, ad esempio un'icona, è possibile aggiungere un riferimento a un'immagine. Utilizza il img
, ad esempio, nel <container>
elemento.
Sintassi: img="
namespace
:
filename
.
extension
"
Questo esempio mostra i riferimenti al book.png
e detail.png
immagini da ncm
namespace:
<container img="ncm:book.png" label="General">
[…]
</container>
<container img="ncm:detail.png" label="Details">
[…]
</container>
Queste immagini sono utilizzate per le icone su cui gli utenti fanno clic per spostarsi in un modulo multipagina:
Per creare un modulo, eseguire la procedura seguente:
Dal menu, scegli Administration > Configuration > Input forms.
Fai clic su New in alto a destra nell’elenco.
Specificare le proprietà del modulo:
Specifica il nome del modulo e lo spazio dei nomi.
Il nome del modulo e lo spazio dei nomi possono corrispondere allo schema di dati correlato. Questo esempio mostra un modulo per cus:order
schema dati:
<form entitySchema="xtk:form" img="xtk:form.png" label="Order" name="order" namespace="cus" type="iconbox" xtkschema="xtk:form">
[…]
</form>
In alternativa, è possibile specificare esplicitamente lo schema dati nel entity-schema
attributo.
<form entity-schema="cus:stockLine" entitySchema="xtk:form" img="xtk:form.png" label="Stock order" name="stockOrder" namespace="cus" xtkschema="xtk:form">
[…]
</form>
Specificare l'etichetta da visualizzare nel modulo.
Facoltativamente, specificare il tipo di modulo. Se non si specifica un tipo di modulo, per impostazione predefinita viene utilizzato il tipo di schermata della console.
Se si progetta un modulo multipagina, è possibile omettere il tipo di modulo nel <form>
e specificare il tipo in un contenitore.
Fai clic su Save.
Inserire gli elementi del modulo.
Ad esempio, per inserire un campo di input, utilizza <input>
elemento. Imposta il xpath
attributo al riferimento di campo come espressione XPath. Ulteriori informazioni.
Questo esempio mostra i campi di input basati su nms:recipient
schema.
<input xpath="@firstName"/>
<input xpath="@lastName"/>
Se il modulo è basato su un tipo di schema specifico, è possibile cercare i campi per questo schema:
Fai clic su Insert > Document fields.
Seleziona il campo e fai clic su OK.
Facoltativamente, specifica l’editor di campi.
A ciascun tipo di dati è associato un editor di campi predefinito:
Puoi utilizzare i seguenti tipi di editor di campi:
Editor campo | Attributo modulo |
---|---|
Pulsante di opzione | type="radiobutton" |
Casella di controllo | type="checkbox" |
Modifica struttura | type="tree" |
Ulteriori informazioni su controlli elenco memoria.
Facoltativamente, definisci l’accesso ai campi:
Elemento “element” | Attributo | Descrizione |
---|---|---|
<input> |
read-only="true" |
Fornisce accesso in sola lettura a un campo |
<container> |
type="visibleGroup" visibleIf=" edit-expr" |
Visualizza un gruppo di campi in modo condizionale |
<container> |
type="enabledGroup" enabledIf=" edit-expr" |
Abilita un gruppo di campi in modo condizionale |
Esempio:
<container type="enabledGroup" enabledIf="@gender=1">
[…]
</container>
<container type="enabledGroup" enabledIf="@gender=2">
[…]
</container>
Facoltativamente, utilizza i contenitori per raggruppare i campi in sezioni.
<container type="frame" label="Name">
<input xpath="@firstName"/>
<input xpath="@lastName"/>
</container>
<container type="frame" label="Contact details">
<input xpath="@email"/>
<input xpath="@phone"/>
</container>
Puoi creare moduli multipagina. È inoltre possibile nidificare i moduli all'interno di altri moduli.
iconbox
moduloUtilizza il iconbox
tipo di modulo per visualizzare le icone a sinistra del modulo, che portano gli utenti a pagine diverse del modulo.
Per modificare il tipo di un modulo esistente in iconbox
, effettua le seguenti operazioni:
Modificare il type
attributo del <form>
elemento a iconbox
:
<form […] type="iconbox">
Impostare un contenitore per ogni pagina del modulo:
Aggiungi un <container>
elemento come elemento figlio di <form>
elemento.
Per definire un’etichetta e un’immagine per l’icona, utilizza label
e img
attributi.
<form entitySchema="xtk:form" name="Service provider" namespace="nms" type="iconbox" xtkschema="xtk:form">
<container img="xtk:properties.png" label="General">
<input xpath="@label"/>
<input xpath="@name"/>
[…]
</container>
<container img="nms:msgfolder.png" label="Details">
<input xpath="@address"/>
[…]
</container>
<container img="nms:supplier.png" label="Services">
[…]
</container>
</form>
In alternativa, rimuovi il type="frame"
attributo esistente <container>
elementi.
Utilizza il notebook
tipo di modulo per visualizzare le schede nella parte superiore del modulo, che portano gli utenti a pagine diverse.
Per modificare il tipo di un modulo esistente in notebook
, effettua le seguenti operazioni:
Modificare il type
attributo del <form>
elemento a notebook
:
<form […] type="notebook">
Aggiungi un contenitore per ogni pagina modulo:
<container>
elemento come elemento figlio di <form>
elemento.label
e img
attributi. <form entitySchema="xtk:form" name="Service provider" namespace="nms" type="notebook" xtkschema="xtk:form">
<container label="General">
<input xpath="@label"/>
<input xpath="@name"/>
[…]
</container>
<container label="Details">
<input xpath="@address"/>
[…]
</container>
<container label="Services">
[…]
</container>
</form>
In alternativa, rimuovi il type="frame"
attributo esistente <container>
elementi.
È possibile nidificare i moduli all'interno di altri moduli. Ad esempio, è possibile nidificare i moduli notebook all'interno dei moduli iconbox.
Il livello di nidificazione controlla la navigazione. Gli utenti possono eseguire il drill-down alle sottomaschere.
Per nidificare un modulo all'interno di un altro modulo, inserire un <container>
e impostare type
al tipo di modulo. Per il modulo di primo livello, è possibile impostare il tipo di modulo in un contenitore esterno o nel <form>
elemento.
Questo esempio mostra un modulo complesso:
Il modulo di primo livello è un modulo iconbox. Questo modulo comprende due contenitori etichettati Generale e Dettagli.
Di conseguenza, nella maschera esterna viene visualizzato Generale e Dettagli pagine al livello superiore. Per accedere a queste pagine, gli utenti possono fare clic sulle icone a sinistra del modulo.
La sottomaschera è una maschera del blocco appunti nidificata all'interno del Generale contenitore. La sottomaschera comprende due contenitori etichettati Nome e Contatto.
<form _cs="Profile (nms)" entitySchema="xtk:form" img="xtk:form.png" label="Profile" name="profile" namespace="nms" xtkschema="xtk:form">
<container type="iconbox">
<container img="ncm:general.png" label="General">
<container type="notebook">
<container label="Name">
<input xpath="@firstName"/>
<input xpath="@lastName"/>
</container>
<container label="Contact">
<input xpath="@email"/>
</container>
</container>
</container>
<container img="ncm:detail.png" label="Details">
<input xpath="@birthDate"/>
</container>
</container>
</form>
Di conseguenza, il Generale nella pagina del modulo esterno viene visualizzata la Nome e Contatto schede.
Per nidificare un modulo all'interno di un altro modulo, inserire un <container>
e impostare type
al tipo di modulo. Per il modulo di primo livello, è possibile impostare il tipo di modulo in un contenitore esterno o nel <form>
elemento.
Questo esempio mostra un modulo complesso:
Il modulo di primo livello è un modulo iconbox. Questo modulo comprende due contenitori etichettati Generale e Dettagli.
Di conseguenza, nella maschera esterna viene visualizzato Generale e Dettagli pagine al livello superiore. Per accedere a queste pagine, gli utenti possono fare clic sulle icone a sinistra del modulo.
La sottomaschera è una maschera del blocco appunti nidificata all'interno del Generale contenitore. La sottomaschera comprende due contenitori etichettati Nome e Contatto.
<form _cs="Profile (nms)" entitySchema="xtk:form" img="xtk:form.png" label="Profile" name="profile" namespace="nms" xtkschema="xtk:form">
<container type="iconbox">
<container img="ncm:general.png" label="General">
<container type="notebook">
<container label="Name">
<input xpath="@firstName"/>
<input xpath="@lastName"/>
</container>
<container label="Contact">
<input xpath="@email"/>
</container>
</container>
</container>
<container img="ncm:detail.png" label="Details">
<input xpath="@birthDate"/>
</container>
</container>
</form>
Di conseguenza, il Generale nella pagina del modulo esterno viene visualizzata la Nome e Contatto schede.
Per modificare un modulo di fabbrica, effettuare le seguenti operazioni:
Modificare il modulo di input di fabbrica:
È possibile estendere gli schemi di dati di fabbrica, ma non i moduli di input di fabbrica. È consigliabile modificare direttamente i moduli di input di fabbrica senza ricrearli. Durante gli aggiornamenti del software, le modifiche nei moduli di input di fabbrica vengono unite agli aggiornamenti. Se l'unione automatica non riesce, è possibile risolvere i conflitti. Ulteriori informazioni.
Ad esempio, se si estende uno schema di fabbrica con un campo aggiuntivo, è possibile aggiungere questo campo al relativo modulo di fabbrica.
È possibile includere controlli di convalida nelle maschere.
Per concedere l’accesso in sola lettura a un campo, utilizza readOnly="true"
attributo. È ad esempio possibile visualizzare la chiave primaria di un record, ma con accesso in sola lettura. Ulteriori informazioni.
In questo esempio, la chiave primaria (iRecipientId
) del nms:recipient
lo schema viene visualizzato in accesso in sola lettura:
<value xpath="@iRecipientId" readOnly="true"/>
Puoi controllare le informazioni obbligatorie:
required="true"
per i campi obbligatori.<leave>
per controllare questi campi e visualizzare i messaggi di errore.In questo esempio, l’indirizzo e-mail è obbligatorio e viene visualizzato un messaggio di errore se l’utente non ha fornito queste informazioni:
<input xpath="@email" required="true"/>
<leave>
<check expr="@email!=''">
<error>The email address is required.</error>
</check>
</leave>
Ulteriori informazioni su campi espressione e contesto modulo.
Puoi utilizzare le chiamate SOAP JavaScript per convalidare i dati del modulo dalla console. Utilizza queste chiamate per la convalida complessa, ad esempio, per confrontare un valore con un elenco di valori autorizzati. Ulteriori informazioni.
Crea una funzione di convalida in un file JS.
Esempio:
function nms_recipient_checkValue(value)
{
logInfo("checking value " + value)
if (…)
{
logError("Value " + value + " is not valid")
}
return 1
}
In questo esempio, la funzione è denominata checkValue
. Questa funzione viene utilizzata per controllare recipient
tipo di dati in nms
spazio dei nomi. Il valore che viene controllato viene registrato. Se il valore non è valido, viene registrato un messaggio di errore. Se il valore è valido, viene restituito il valore 1.
È possibile utilizzare il valore restituito per modificare il modulo.
Nel modulo, aggiungi <soapCall>
elemento al <leave>
elemento.
In questo esempio, viene utilizzata una chiamata SOAP per convalidare @valueToCheck
stringa:
<form name="recipient" (…)>
(…)
<leave>
<soapCall name="checkValue" service="nms:recipient">
<param exprIn="@valueToCheck" type="string"/>
</soapCall>
</leave>
</form>
In questo esempio, la proprietà checkValue
e il nms:recipient
servizio utilizzato:
La chiamata viene eseguita in modo sincrono.
Vengono visualizzate tutte le eccezioni. Se si utilizza <leave>
, gli utenti non potranno salvare il modulo finché le informazioni immesse non saranno convalidate.
In questo esempio viene illustrato come effettuare chiamate di servizio all'interno dei moduli:
<enter>
<soapCall name="client" service="c4:ybClient">
<param exprIn="@id" type="string"/>
<param type="boolean" xpathOut="/tmp/@count"/>
</soapCall>
</enter>
In questo esempio, l’input è un ID, che è una chiave primaria. Quando gli utenti compilano il modulo per questo ID, viene effettuata una chiamata SOAP con questo ID come parametro di input. L’output è un valore booleano scritto in questo campo: /tmp/@count
. Puoi utilizzare questo valore booleano all’interno del modulo. Ulteriori informazioni su contesto modulo.