Explicit XFA Host Transport

Unit: HPDFXFARuntime

Deklarace

Options := TXFAWidgetRuntimeOptions.Default;
Options.ScriptOptions.EnableJavaScript := True;
Options.HostTransport := ApplicationHost.Transport;
Options.OnHostTransactionCompleted := ApplicationHost.Completed;

Chování

Nakonfiguruje explicitní aplikační callbacky pro provedení xfa.host.messageBox, response, beep, print, gotoURL, submitForm, importData a exportData a FormCalc Get, Post a Put

Knihovna automaticky nespustí žádný dialog, čtečku, síťový požadavek ani přenos souboru; callback implementuje transport aplikace a vrací typovanou odpověď

Každý dispatchnutý požadavek proběhne jednou uvnitř obklopující runtime transakce; retry při pozastavení QuickJS i replay potvrzeného sezení konzumují zaznamenané odpovědi, aniž by callbacky opakovaly

Požadavky zachovávají poziční argumenty jako Unicode řetězce, tedy i prázdné argumenty; číslování požadavků začíná na nule pro každou transakci

Neúspěšné transakce obnoví stav dokumentu i skriptových objektů a upozorní completion callback s Committed=False; aplikace musí připravit či kompenzovat své externí efekty, protože rollback dokumentu nedokáže vzít zpět externí operaci

Completion callbacky běží jednou po úspěšné validaci dokumentu a layoutu či po rollbacku, dřív než běžní úspěchoví pozorovatelé; callbacky nesmí vyhazovat výjimky ani znovu vstupovat do runtime

Host callbacky vyžadují dodávané QuickJS sezení; vlastní JavaScriptEvaluator callbacky dodávaný kontrakt checkpointu a replay nemají

Počet požadavků, počet argumentů, kódované bajty požadavků i bajty odpovědí mají samostatné kladné limity; uplynulý čas callbacku se počítá do transakčního deadline, ale synchronní aplikační kód nelze násilně přerušit

Skriptové funkce dostanou number, Boolean, string, null či undefined podle Kind odpovědi; číselné odpovědi musí být konečné a Unicode odpovědi musí obsahovat platné surrogate páry

Související API

Explicitní XFA Host Transport, TXFAHostTransaction a Interactive Dynamic XFA Widget Runtime