4D v16

Prozesse

Home

 
4D v16
Prozesse

Prozesse    


 

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.

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:

 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:

  • Importe
  • Erneut bearbeiten
  • PDF drucken
  • E-Mails senden
  • usw.

 
 

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Prozesse

 
GESCHICHTE 

 
ARTIKELVERWENDUNG

Self-Training ( 4D v16)