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