Zusätzlich zu den Erläuterungen in diesem Video 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
u.s.w.
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:
Diese Befehlszeile muss in der Methode sein. Wir empfehlen, nachfolgendes Konzept zu verwenden; damit sparen Sie Zeit und sorgen für Klarheit:
C_TEXT($1) If(Count parameters=0) // Wird kein Parameter empfangen, soll der Prozess erstellt werden C_LONGINT(<>ProcessNumber) <>ProcessNumber:=New process("Display_Stats2";1024*1024;"Statistics";"Fictitious_Parameter") // Erstelle Prozess Else// Empfängt die Methode mindestens einen Parameter, wurde bereits ein Prozess gestartet, jetzt die Anzeigemethode ausführen C_LONGINT($Window) //Erstelle Fenster (Container), in dem der Dialog (Inhalt) angezeigt wird $Window:=Open form window("STATS";Plain form window;Horizontally centered;Vertically centered) DIALOG("STATS") //Zeige den Dialog CLOSE WINDOW($Window) // Ist der Dialog geschlossen, schließe das Fenster End if
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: