Diese Sequenz erläutert die Lebensdauer eines Prozesses: Anlegen, Dauer und Ende.
Prozesse sind oft in multi-tasking Jobs integriert. Sie ermöglichen, mehrere Jobs gleichzeitig zu erstellen, wobei der erste Prozess nicht abgeschlossen sein muss, bevor der zweite beginnt.
Nehmen wir an, Sie wollen auf das zuvor eingerichtete Statistik-Modul zugreifen. Es soll aktiv bleiben, während Sie etwas anderes ausführen.
Dazu starten Sie die Methode in einem Prozess und ermöglichen, die Statistik über eine Schaltfläche im Formular zu aktualisieren.
Zuerst erstellen wir den Aufruf des Statistikdialogs im Formular Navigator:
- Wir duplizieren eine Schaltfläche
- Und nennen sie Stats
in deren Methode führen wir, wie im 1. Dialog, folgendes aus:
- Container anlegen
- Dialog Stats anzeigen
- Dann Fenster wieder schließen
Wir testen das. Wir haben eine Schaltfläche Stats, die die passende Statistik anzeigt.
Wir können jedoch nicht mehr im Formular Navigator arbeiten, da es im Hintergrund ist.
Es gibt aber einen Weg, um mit mehreren Fenstern zu arbeiten; hier ist es sinnvoll, mit verschiedenen Prozessen zu arbeiten. Das richten wir jetzt ein.
Sie erstellen mit der Funktion New process einen Prozess, der von einer Methode aufgerufen wird.
Dann geben wir an:
- Welche Methode im Prozess ausgeführt werden muss
- Stapel Speichergröße
- Prozessname
- und Parameter
In diesem Fall erstellen wir eine Methode Display Stats zur Anzeige von Stats. Wir schneiden den Code der Schaltfläche Stats aus, fügen ihn in die neu erstellte Methode ein und ersetzen den Code der Schaltfläche durch:
vProcessNum:=New process("Display_Stats";1024*1024;"Statistics")
- Der Prozessname ist Statistics
- Wir benötigen keine spezifischen Parameter
In 4D gibt es einen Parameter * (Stern), den Sie als letzten Parameter übergeben können und der in vielen Befehlen verwendbar ist. Dann wird derselbe Prozess nicht mehrfach angelegt. Weitere Informationen dazu im Handbuch 4D Programmiersprache.
Wir testen die Arbeitsweise. Klicken wir auf die Schaltfläche Stats:
- Erscheint weiterhin das Formular Stats
- Wir können jedoch in dem einen oder anderen Fenster arbeiten
- Den Prozess schließen
- Erneut anzeigen
- Und auf dieser Ebene sogar mehrere anzeigen, da wir nicht den Parameter Stern verwendet haben.
![](../../picture/2878489/pict2878489.de.png)
Es wäre sogar möglich, wenn das Jahr im Formular konfiguriert ist, die Statistik von einem Jahr und von einem weiteren in zwei verschiedenen Fenstern zu haben.
Sie müssen beachten, dass jeder Prozess seine eigene Umgebung hat; d.h. führen wir hier eine Berechnung aus, erhalten wir bestimmte Teilinformation, egal wie viele Datensätze da sind.
Wir können festlegen, nur ein paar davon zu nehmen, die Statistik wird immer mit allen Informationen in der Tabelle berechnet.
Sie sollten also verstehen, dass ein Prozess:
- eigene Auswahlen
- und eigene Variablen hat
Haben wir 2 Prozesse, die dieselbe Methode ausführen, kann jeder andere Informationen haben.
Werden mehrere Prozesse erstellt und im Schrittmodus durchlaufen, zeigt 4D alle angelegten Prozesse:
- Standardprozesse, die 4D anlegt
- plus von uns angelegte, wie der Prozess Statistics
Wir können sie also Schritt für Schritt prüfen, beim Berechnen wird die angeklickte Methode durchlaufen.
Durchlaufen wir einen anderen Prozess, sehen wir, dass der Schrittmodus dieses Prozesses hier erscheint.
Anfangs haben wir Anlegen, Dauer und Ende eines Prozesses genannt.
Sehen wir uns diese 3 Stadien an:
1. Prozess anlegen: New process legt ihn an.
Um zu verfolgen, was in New process läuft, müssen Sie diese Schaltfläche verwenden: Ein 2. Schrittfenster erscheint, um die ablaufende Methode "Statistics" zu verfolgen.
Als nächstes läuft eine Methode, währenddessen ist der Prozess aktiv.
- Wir können verschiedenes ausführen, wie:
- Interprozess Austausch
- oder Drag-and-Drop
Der Prozess wird beendet, wenn die Methode, die bei seiner Erstellung ausgeführt wurde, abgeschlossen ist:
- Hier gehen wir zurück zur Anfangsmethode, die beim Erstellen des Prozesses ausgeführt wurde
- Das Fenster schließt
- Die Methode endet
- Und der Prozess endet
Im Schrittmodus sehen wir den Prozess "Statistics" nicht mehr.
Zusätzlich zu den Erläuterungen sollten Sie folgendes beachten:
Ein Prozess ist eine Umgebung, die folgendes enthält:
- eigenen Speicherplatz
- eigene aktuelle Auswahlen (eine pro Tabelle)
- eigene Variablen (Prozessvariablen)
- möglicherweise eine eigene Oberfläche
- usw.
Prozesse können untereinander auf verschiedene Weise kommunizieren:
- Interprozessvariablen
- Variablen lesen und schreiben
- etc.
Sie können gesetzt werden:
- in Wartestellung (schlafender Prozess)
- in Winterschlaf (suspendierter Prozess) bis ein anderer Prozess sie aufweckt.
Ein Prozess endet nur, wenn die ihn ausführende Methode abgeschlossen ist.
Sie können einen Prozess nicht per Programmierung beenden, sondern nur programmieren, dass er unter bestimmten Bedingungen endet (siehe 4D Befehl CALL PROCESS).
Prozesse dienen generell für folgende Zwecke:
- Zum Erstellen bestimmter Prozesse, z.B. Hintergrund- oder Überwachungsprozesse
- Zum Erstellen von Werkzeugpaletten (unabhängige Fenster mit spezifischen Funktionen)
- Zum Anzeigen von Eingabe-/Ansichtsdialogen, damit der Benutzer mit mehreren Fenstern arbeiten kann
4D erstellt bestimmte Prozesse direkt.
Ein Prozess wird über die Funktion New process angelegt:
vProcessNumber:=New process(Method;Stack;Processname;Settings;...)
Diese Befehlszeile muss in der Methode sein. Wir empfehlen, nachfolgendes Konzept zu verwenden; damit sparen Sie Zeit und sorgen für Klarheit:
- Beim Aufrufen der Methode (ohne Parameter), erstellt 4D einen Prozess, in dem er eine Methode ausführt
- Die Methode ruft sich selbst auf (sie erstellt eine zweite Instanz der Methode in einem neuen Prozess)
- Und übergibt sich selbst einen Parameter
- Die erste Methode endet
- Während die vom Prozess ausgeführte Methode weiter läuft und das Statistik Array anzeigt
Auf diese Weise können Sie weiterarbeiten, während das Fenster mit der Statistik in Reichweite bleibt.
Um die Ausführung eines Prozesses zu verfolgen (wenn Sie die Zeile New Process ausführen), verwenden Sie die Schaltfläche “step-by-step new process”. Sie führt die Zeile aus und öffnet ein zweites Fenster im Schrittmodus, in dem Sie das Fortschreiten der im Prozess ausgeführten Methode unabhängig von der aufrufenden Methode verfolgen können.
Sie können z.B. einen Prozess erstellen, der die Zeit und die seit dem Start des neuen Prozesses vergangene Zeit anzeigt. Dieses Beispiel gibt Ihnen die Grundlagen zum Einrichten eines Zeitzählers.
Über Prozesse können Sie rasch weitere Verbesserungen in Ihrer Programmierung in Betracht ziehen:
- Sie können Ihre Prozesse in Konzepte fassen
- Die Code-Zeilen Schritt für Schritt testen
- Dann zur unabhängigen Ausführung in einen Prozess setzen
Es gibt unzählige Beispiele zum Verwenden von Prozessen. Hier ein weiteres: Sie müssen in einer Anwendung mit kritischen Daten Updates durchführen; diese Updates können einige Sekunden oder gar Minuten dauern, ohne dass der laufende Betrieb, wie z.B. Produktion oder Krankenhaus beeinträchtigt werden. Sie können also:
- Eine Tabelle einplanen, in der Sie verschiedene auszuführende Aufgaben abspeichern.
- Für jede dieser Aufgaben geben Sie Datum, Uhrzeit und evtl. die Prioritätsebene und Aufgabenbeschreibung an (Was? in welcher Tabelle? welcher Datensatz? etc.).
- Dann richten Sie einen Prozess ein, dessen einzige Mission ist, diese Tabelle zu konsultieren und die entsprechenden Aufgaben auszuführen.
- Sind sie erledigt, wird der Prozess suspendiert, bis die nächste Aufgabe ansteht und der Prozess wieder aktiviert wird
Diese Operation ist äußerst praktisch im Client/Server Modus, wo ein Prozess (Serverprozedur) auf dem Server läuft und die einzelnen Aufgaben durchführt:
- Importe
- Erneut bearbeiten
- PDF drucken
- E-Mails senden
- usw.