Austausch von Nachrichten zwischen Prozessen

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:

Beispiel-Datenbank

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:

Beispiel-Datenbank

Weitere Details finden Sie im 4D v15 R5 Upgrade Handbuch.

Vanessa Talbot
Product Owner - Vanessa Talbot kam im Juni 2014 zum 4D Programmteam. Als Product Owner ist sie für das Schreiben der User Stories und deren Umsetzung in funktionale Spezifikationen zuständig. Ihre Aufgabe ist es auch, sicherzustellen, dass die Implementierung der Funktionen den Anforderungen des Kunden entspricht. Seit ihrer Ankunft hat sie an der Definition der wichtigsten Funktionen in 4D gearbeitet. Sie hat an den meisten der neuen Funktionen für präemptives Multi-Threading gearbeitet und auch an einem sehr komplexen Thema: der neuen Architektur für erstellte Anwendungen. Vanessa hat einen Abschluss von der Telecom Saint-Etienne. Sie begann ihre Karriere am Criminal Research Institute als Entwicklerin für die audiovisuelle Abteilung. Sie hat auch in den Bereichen Medien und Medizin als Expertin für technischen Support, Produktion und die Dokumentation neuer Funktionen gearbeitet.