4D v15 R5 zavádí nový, jednoduchý a výkonný způsob výměny informací mezi procesy a také mezi procesy a formuláři. Tato funkce je založena na asynchronním systému zpráv, který umožňuje volat procesy a formuláře a žádat je o provedení metod s parametry v jejich vlastním kontextu.
Pracovní proces
Pracovník má schránku zpráv. Proces workeru je vytvořen při prvním použití a jeho přidružený proces je rovněž automaticky spuštěn při prvním použití. Na rozdíl od „New process“ zůstává proces worker naživu i po skončení provádění metody.
Worker může volat sám sebe, aby mohl pracovat na velkých úlohách po částech. Workery výrazně sníží potřebu meziprocesových proměnných i potřebu semaforů, aby bylo možné paralelní asynchronní zpracování. Worker je nutný pro preemptivní vícevláknové zpracování. Worker však lze použít i u kooperativních procesů, takže je užitečný i v 32bitových nebo interpretovaných prostředích.
K dispozici jsou dva nové příkazy:
- „CALL WORKER“ zapouzdří název metody projektu a případné parametry do zprávy a zveřejní ji v poli zpráv pracovníka.
CALL WORKER (název procesu|číslo procesu;název metody projektu;param1;…;paramN)
- „KILL WORKER“ odešle zprávu určenému pracovníkovi s žádostí, aby zapomněl na všechny nevyřízené zprávy a ukončil se.
KILL WORKER (nic|jméno procesu|číslo procesu)
K dispozici je příklad databáze, který demonstruje novou funkčnost:
Formulář volání
Nyní má každý formulář spuštěný v okně okno se zprávou. „CALL FORM“ umožňuje spustit metodu projektu s argumenty v kontextu formuláře zobrazeného v okně bez ohledu na proces, který okno vlastní.
Příkaz umožňuje použití „CALL PROCESS“ spolu s meziprocesovými proměnnými k předávání zpráv zastaralé. „CALL FORM“ lze použít uvnitř kontextu formuláře k volání sebe sama za účelem stohování nebo rozdělení práce. Tím odpadá potřeba obcházení, jako je např. SET TIMER(1). Ačkoli je to mimořádně nutné pro preemptivní procesy, funguje to i u kooperativních procesů, s 32bitovým nebo interpretovaným prostředím.
Syntaxe je následující:
CALL FORM (odkaz na okno;název metody projektu;param1;…;paramN)
Podobně jako „CALL WORKER„, „CALL FORM“ zapouzdřuje název metody a argumenty příkazu do zprávy, která je odeslána do pole zprávy formuláře. Formulář pak zprávu provede ve svém vlastním procesu.
Pro demonstraci nové funkčnosti je k dispozici příklad databáze:
Další podrobnosti naleznete v příručce k aktualizaci 4D v15 R5.