Transporte explícito do XFA Host
Unit: HPDFXFARuntime
Declaração
Options := TXFAWidgetRuntimeOptions.Default;
Options.ScriptOptions.EnableJavaScript := True;
Options.HostTransport := ApplicationHost.Transport;
Options.OnHostTransactionCompleted := ApplicationHost.Completed;
Comportamento
Configure callbacks explícitos da aplicação para executar xfa.host.messageBox, response, beep, print, gotoURL, submitForm, importData e exportData, e FormCalc Get, Post e Put
A biblioteca não invoca automaticamente diálogo, reader, requisição de rede nem transferência de arquivos; o callback implementa o transporte da aplicação e retorna uma resposta tipada
Cada requisição despachada roda uma vez dentro de uma transação envolvente do runtime; retries de suspensão do QuickJS e replay de sessões commitadas consomem as respostas registradas sem repetir callbacks
As requisições preservam arguments posicionais como strings Unicode, incluindo arguments vazios; a sequência de requisições começa em zero para cada transação
Transações com falha restauram o estado do documento e dos objetos de script e notificam o callback de conclusão com Committed=False; a aplicação deve preparar ou compensar seus efeitos externos, porque o rollback do documento não pode desfazer uma operação externa
Callbacks de conclusão rodam uma vez após a validação e o layout bem-sucedidos do documento ou após o rollback, antes dos observers normais de sucesso; callbacks não podem disparar exceções nem reentrar no runtime
Callbacks do host exigem a sessão QuickJS embarcada; callbacks customizados de JavaScriptEvaluator não fornecem o contrato de checkpoint e replay
Contagem de requisições, contagem de arguments, bytes de requisições codificadas e bytes de resposta têm limites positivos independentes; o tempo decorrido dos callbacks conta contra o deadline da transação, mas código síncrono da aplicação não pode ser interrompido à força
Funções de script recebem number, Boolean, string, null ou undefined conforme o Kind da resposta; respostas numéricas precisam ser finitas, e respostas Unicode precisam conter surrogate pairs válidos
APIs relacionadas
Transporte explícito do XFA Host, TXFAHostTransaction e Runtime interativo de widgets XFA dinâmicos