Como solucionar restrições de segurança

O script que modifica o modelo sourceSet ou seus filhos torna a certificação do formulário inválida e o formulário deixa de ser confiável. Como um formulário pode se tornar certificado a qualquer momento durante seu ciclo de vida, é importante usar técnicas de script que impeçam o formulário de falhar após ser certificado.

Você deve trabalhar com clones do modelo, em vez de trabalhar com o modelo, se pretende usar scripts que modificam o modelo sourceSet ou qualquer um de seus filhos. A clonagem impede que o formulário falhe quando os scripts modificam um modelo de dados. Por exemplo, formulários que executam tarefas comuns, como exibir registros em um banco de dados ou selecionar registros específicos em um banco de dados, exigem a modificação de nós de conexão de dados contidos no modelo sourceSet.

Para clonar o modelo sourceSet, você deve criar um método no script que define a conexão de dados que deseja modificar dentro do modelo sourceSet e certificar-se de que o script sempre usa o clone, em vez de usar a definição.

Considere o seguinte script de uma lista suspensa de dados. O script preenche a lista a partir de dados de uma fonte de dados.

... 
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");

Para clonar o modelo sourceSet, é necessário alterar a linha que o acessa anexando o método clone (1) ao fim da declaração:

    var oDB = xfa.sourceSet.nodes.item(nIndex).clone(1);

Nota: É possível armazenar o nó de conexão de dados clonado em uma variável ou uma variável definida em um objeto de script.