4D v15 R5 führt eine neue, einfache und leistungsfähige Methode zum Austausch von Informationen zwischen Prozessen und auch zwischen Prozessen und Formularen ein. Diese Funktion basiert auf einem asynchronen Nachrichtensystem, mit dem Prozesse und Formulare aufgerufen und aufgefordert werden können, Methoden mit Parametern in ihrem eigenen Kontext auszuführen.
Der Worker-Prozess
Ein Worker hat ein Nachrichtenfeld. Der Worker-Prozess wird bei der ersten Verwendung erstellt und der zugehörige Prozess wird ebenfalls bei der ersten Verwendung automatisch gestartet. Anders als der Befehl „New process“ bleibt ein Worker-Prozess nach Beendigung der Methodenausführung am Leben.
Ein Worker kann sich selbst aufrufen, um große Aufträge in Stücken zu bearbeiten. Die Worker reduzieren drastisch den Bedarf an Inter-Prozess-Variablen sowie den Bedarf an Semaphoren, um eine parallele asynchrone Verarbeitung zu ermöglichen. Ein Worker ist für präemptives Multithreading erforderlich. Allerdings kann ein Worker auch mit kooperativen Prozessen verwendet werden, so dass er auch in 32-Bit- oder interpretierten Umgebungen nützlich ist.
Zwei neue Befehle sind verfügbar:
- „CALL WORKER“ kapselt den Namen der Projektmethode und alle Parameter in eine Nachricht und sendet sie in das Nachrichtenfeld des Workers.
CALL WORKER (Prozessname|Prozessnummer;Name der Projektmethode;Parameter1;…;ParameterN)
- „KILL WORKER“ sendet eine Nachricht an den angegebenen Worker mit der Aufforderung, alle anstehenden Nachrichten zu vergessen und sich selbst zu beenden.
KILL WORKER (nichts|Prozessname|Prozessnummer)
Eine Beispieldatenbank ist verfügbar, um die neue Funktionalität zu demonstrieren:
Formular aufrufen
Jetzt hat jedes Formular, das in einem Fenster läuft, ein Nachrichtenfeld. „CALL FORM“ ermöglicht die Ausführung einer Projektmethode mit Argumenten im Kontext eines in einem Fenster angezeigten Formulars, unabhängig vom Prozess, dem das Fenster gehört.
Der Befehl macht die Verwendung von „CALL PROCESS“ zusammen mit prozessübergreifenden Variablen zur Übergabe von Nachrichten überflüssig. „CALL FORM“ kann innerhalb eines Formularkontextes verwendet werden, um sich selbst aufzurufen, um die Arbeit zu stapeln oder zu gliedern. Dies eliminiert die Notwendigkeit für Workarounds wie SET TIMER(1). Obwohl es für präemptive Prozesse extrem wichtig ist, funktioniert es auch mit kooperativen Prozessen, mit 32-Bit- oder interpretierten Umgebungen.
Die Syntax lautet:
CALL FORM (Fensterreferenz;Projektmethodenname;param1;…;paramN)
Ähnlich wie bei „CALL WORKER„, „CALL FORM“ den Methodennamen und die Befehlsargumente in einer Nachricht, die in das Nachrichtenfeld des Formulars gestellt wird. Das Formular führt dann die Nachricht in seinem eigenen Prozess aus.
Eine Beispieldatenbank ist verfügbar, um die neue Funktionalität zu demonstrieren:
Weitere Details finden Sie im 4D v15 R5 Upgrade Handbuch.