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