Výměna zpráv mezi procesy

Automaticky přeloženo z Deepl

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:

Příklad databáze

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:

Příklad databáze

Další podrobnosti naleznete v příručce k aktualizaci 4D v15 R5.

Vanessa Talbot
• Product Owner • Vanessa Talbot se připojila k programovému týmu 4D v červnu 2014. Jako Product Owner má na starosti psaní uživatelských příběhů a jejich převod do funkčních specifikací. Její úlohou je také zajistit, aby implementovaná funkce odpovídala potřebám zákazníka. Od svého příchodu pracovala na definování klíčových prvků ve 4D. Pracovala na většině nových funkcí preemptivního multi-threadingu a také na velmi složitém tématu: nové architektuře pro enginované aplikace. Vanessa má titul z Telecom Saint-Etienne. Svou kariéru začala ve Výzkumném ústavu kriminalistickém jako vývojářka pro audiovizuální oddělení. Působila také v mediální a lékařské oblasti jako expertka na technickou podporu, produkci i dokumentaci novinek.