Uno script che modifica il modello sourceSet o i relativi elementi secondari rende non valida la certificazione del modulo e il modulo potrebbe non essere più affidabile. Poiché un modulo può essere certificato in qualsiasi momento nel corso del relativo ciclo di vita, è importante utilizzare tecniche di scripting che evitino problemi al modulo in seguito alla relativa certificazione.
È necessario utilizzare duplicati del modello invece del modello stesso se si desidera usare script che modificano il modello sourceSet o uno dei relativi elementi secondari. La duplicazione consente di evitare la presenza di errori nel modulo quando gli script modificano un modello dati. Ad esempio, i moduli che eseguono attività comuni, come la visualizzazione di record in un database o la selezione di record specifici in un database, richiedono la modifica dei nodi di connessione dei dati contenuti all'interno del modello sourceSet.
Per duplicare il modello sourceSet, occorre creare sullo script un metodo che definisce la connessione dei dati da modificare nel modello sourceSet e assicurarsi che lo script continui ad utilizzare il duplicato invece della definizione.
Prendere in considerazione lo script seguente da un elenco a discesa di dati. Lo script compone l'elenco con dati provenienti da un'origine dati.
...
var oDB = xfa.sourceSet.nodes.item(nIndex);
...
// Search node with the class name "command"
var nDBIndex = 0;
while(oDB.nodes.item(nDBIndex).className != "command")
nDBIndex++;
oDB.nodes.item(nDBIndex).query.recordSet.setAttribute("stayBOF", "bofAction");
oDB.nodes.item(nDBIndex).query.recordSet.setAttribute("stayEOF", "eofAction");
Per duplicare il modello sourceSet, è necessario modificare la riga che ne consente l'accesso aggiungendo il metodo di duplicazione (1) alla fine dell'istruzione:
var oDB = xfa.sourceSet.nodes.item(nIndex).clone(1);
Nota: È possibile memorizzare il nodo di connessione dei dati duplicato in una variabile o in una variabile definita in un oggetto script.