4D v16.3

Einführung in Prozesse

Home

 
4D v16.3
Einführung in Prozesse

Einführung in Prozesse  


 

 

Multitasking in 4D bedeutet, dass unterschiedliche Operationen der Datenbank gleichzeitig ausgeführt werden können. Diese Operationen werden Prozesse genannt.

Multiple Prozesse sind wie mehrere Benutzer am gleichen Rechner, wobei jeder seine eigene Aufgabe ausführt. Das bedeutet, dass sich jede Methode als ein anderes Task der Datenbank ausführen lässt.

Dieses Kapitel behandelt folgende Themen:

  • Prozesse anlegen und löschen
  • Elemente eines Prozesses
  • Benutzerprozesse
  • Von 4D erstellte Prozesse
  • Lokale und globale Prozesse
  • Record locking zwischen Prozessen

Hinweis: Dieses Kapitel beschreibt nicht die Serverprozeduren. Informationen dazu finden Sie im Handbuch 4D Server im Abschnitt Serverprozeduren.

Es gibt verschiedene Wege, einen neuen Prozess zu erstellen:

  • Sie führen in der Designumgebung eine Methode aus. Markieren Sie dazu im Dialogfenster Methode ausführen in der DropDown-Liste Neuer Prozess. Die gewählte Methode ist die Prozessmethode.
  • Sie starten über eine Menüzeile einen Prozess. Wählen Sie dazu im Menüleisteneditor den Menübefehl und markieren das Kontrollkästchen Starte Neuen Prozeß. Die diesem Menübefehl zugeordnetete Methode ist die Prozessmethode.
  • Verwenden Sie die Funktion New process. Die als Parameter übergebene Methode ist die Prozessmethode.
  • Verwenden Sie die Funktion Execute on server, um einen Serverprozess auf dem Server zu erstellen. Die Methode, die als ein Parameter der Funktion übergeben wird, ist die Prozessmethode.
  • Verwenden Sie den Befehl CALL WORKER. Existiert der Worker Prozess noch nicht, wird er angelegt.

Es gibt folgende Arten, einen Prozess zu löschen:

  • Automatisch nach Beendigung der Methode
  • Beim Schließen der Datenbank
  • Durch einen Klick auf die Schaltflächen Stop oder Bearbeiten im Fenster für den Schrittmodus, wenn Sie sich in einer Hauptmethode befinden.
  • Durch Markieren des Befehls Stop im Runtime-Explorer
  • Durch Aufrufen des Befehls KILL WORKER (nur zum Löschen eines Worker Prozesses).

Ein Prozess kann einen anderen Prozess erstellen. Prozesse sind nicht hierarchisch organisiert — alle Prozesse sind gleich, unabhängig von welchem Prozess aus sie erstellt wurden. Hat ein Hauptprozess einen Unterprozess erstellt, kann der Unterprozess weiterlaufen, auch wenn der Hauptprozess nicht mehr ausgeführt wird.

Jeder Prozess enthält folgende Elementarten:

  • Elemente für die Bildschirmoberfläche: Sie sind notwendig, um einen Prozess anzuzeigen
  • Elemente für die Daten: Sie informieren über die Daten in der Datenbank.
  • Elemente für die Programmiersprache: Sie werden in der Programmierung verwendet bzw. sind wichtig zum Entwickeln Ihrer eigenen Anwendung.

  • Menüleiste: Jeder Prozess hat seine eigene Menüleiste. Sie wird angezeigt, wenn sich das Prozessfenster vorn befindet.
  • Fenster: Jeder Prozess kann ein oder mehrere gleichzeitig geöffnete Fenster haben. Es gibt aber auch Prozesse ohne Fenster.
  • Aktives (vorderstes) Fenster: Das Prozessfenster, das ganz vorn liegt, ist das aktive Fenster für diesen Prozess. Sie haben so viele aktive Fenster, wie geöffnete Prozesse mit eigenem Fenstern vorhanden sind.

Hinweise:

  • Prozesse enthalten standardmäßig keine Menüleisten, d.h. die Tastenkürzel des Standardmenüs Bearbeiten, insbesondere Ausschneiden/Kopieren/Einfügen, sind im Prozessfenster nicht verfügbar. Damit Benutzer beim Aufrufen von Dialogfenstern oder 4D Editoren (Formulareditor, Sucheditor, Request, etc.) über einen Prozess solche Tastenkürzel nutzen können, müssen Sie sicherstellen, dass im Prozess eine Entsprechung des Menüs Bearbeiten installiert ist.
  • Auf dem Server ausgeführte Prozesse (Serverprozeduren) dürfen keine Elemente der Oberfläche enthalten.

  • Eine aktuelle Auswahl pro Tabelle: Jeder Prozess kann eine aktuelle Auswahl für jede Tabelle haben. Arbeiten Sie mit mehreren Prozessen gleichzeitig, können Sie auch mehrere aktuelle Auswahlen für eine Tabelle haben
  • Ein aktueller Datensatz pro Tabelle: Ein Prozess kann einen aktuellen Datensatz für jede Tabelle haben. Arbeiten Sie mit mehreren Prozessen gleichzeitig, haben Sie auch mehrere aktuelle Datensätze für eine Tabelle.

Hinweis: Diese Beschreibung gilt für Datenelemente mit globalen Prozessen. Weitere Informationen dazu finden Sie im später aufgeführten Abschnitt Globale und lokale Prozesse.

  • Variablen: Jeder Prozess hat seine eigenen Prozessvariablen. Weitere Informationen dazu finden Sie im Abschnitt Variablen. Prozessvariablen werden nur innerhalb des Prozesses erkannt.
  • Haupttabelle: Jeder Prozess hat seine eigene Haupttabelle. Beachten Sie jedoch, dass der Befehl DEFAULT TABLE nur eine Sprachkonvention zum Programmieren ist.
  • Eingabe- und Ausgabeformulare: Jeder Prozess hat für jede Tabelle ein aktuelles Ein- und Ausgabeformular.
  • Prozessmengen: Jeder Prozess hat sowohl seine eigenen Prozessmengen. LockedSet ist eine Prozessmenge. Die Mengen werden nach Beendigung des Prozesses, der sie erzeugt hat, gelöscht. Weitere Informationen dazu finden Sie im Kapitel Mengen.
  • Fehlerbehandlung: In jedem Prozess können Sie den Befehl ON ERR CALL aufrufen. Jeder Prozess hat seine eigene Fehlerbehandlung.
  • Debugger Fenster: Jeder Prozess hat sein eigenes Fenster für den Schrittmodus.

Sie erstellen Benutzerprozesse, um bestimmte Tasks auszuführen. Diese teilen sich die Prozesszeit mit den Kernel-Prozessen. Web-Verbindungsprozesse sind zum Beispiel Benutzerprozesse.

Das 4D Programm erstellt auch Prozesse für seine eigenen Zwecke. 4D erstellt und verwaltet folgende Prozesse:

  • Hauptprozess: Dieser Prozess steuert die Anzeigefenster der Benutzeroberfläche.
  • Design Prozess: Er verwaltet die Fenster und Editoren der Designumgebung. In einer kompilierten Datenbank fehlt dieser Prozess.
  • Web Server Prozess: Dieser Prozess läuft, wenn die Datenbank im Web publiziert wird. Weitere Informationen dazu finden Sie im Abschnitt Web Server konfigurieren und Verbindung verwalten.
  • Cache Manager: Er verwaltet die Übertragung der Daten aus dem Cache-Speicher von 4D auf die Festplatte. Die Daten werden asynchron auf die Festplatte geschrieben und beeinträchtigen nicht die Arbeit des Anwenders. Er wird angelegt, sobald 4D Developer oder 4D Server laufen.
  • Index Prozess: Dieser Prozess verwaltet das Anlegen von Indizes. Das Anlegen der Indizes geschieht in einem eigenen Prozess. Er wird angelegt, wenn ein Index für ein Feld erzeugt bzw. gelöscht wird.
  • On Event Manager: Beim Aufruf des Befehls ON EVENT CALL wird dieser lokale Prozess erzeugt. Er wird kontinuierlich ausgeführt, auch wenn keine Methode abläuft. Die Ereignisverwaltung geschieht auch in der Designumgebung.

Ab 4D v15 R5 64 bits können Sie in 4D im kompililierten Modus preemptive Benutzerprozesse ausführen. In bisherigen Versionen waren nur kooperative Benutzerprozesse verfügbar.

Beim preemptive Modus (unterbrechend) ist der Prozess einer CPU zugeordnet. Die Prozessverwaltung wird dann an das System delegiert, das jede CPU einem multi-core Rechner einzeln zuweisen kann. Beim kooperativen Modus (nicht-unterbrechend) werden alle Prozesse vom übergeordneten Applikation Thread verwaltet und nutzen dieselbe CPU gemeinsam, und das auch auf einem multi-core Rechner.

Durch den preemptive Modus wird die globale Performance der Applikation erhöht, insbesondere auf multi-core Rechnern, da mehrfache Prozesse (Threads) real simultan laufen können. Der jeweilige Gewinn hängt jedoch von den ausgeführten Operationen ab. Außerdem gelten für Methoden, die preemptiv nutzbar sein sollen, spezifische Einschränkungen. Denn im preemptive Modus ist jeder Thread von den anderen unabhängig und wird nicht direkt von der Applikation verwaltet. Zusätzlich ist die preemptive Ausführung nur in ganz bestimmten Kontexten verfügbar.

Weitere Informationen zu preemptive Prozessen finden Sie im Abschnitt Preemptive 4D Prozesse

Prozesse können sowohl global als auch lokal sein. Standardmäßig sind alle Prozesse global.

Globale Prozesse können jede Operation ausführen, inkl. auf Daten zugreifen und Daten steuern. In den meisten Fällen verwenden Sie globale Prozesse.

Lokale Prozesse eignen sich nur für Operationen, die nicht auf Daten zugreifen. Sie verwenden diese beispielsweise für eine Methode zur Ereignisverwaltung oder zum Steuern von Oberflächenelementen, wie z.B. das Palettenfenster.

Der Name des lokalen Prozesses muss mit einem Dollarzeichen beginnen ($).

Warnung: Versuchen Sie, von einem lokalen Prozess aus auf Daten zuzugreifen, geschieht das über den Hauptprozess. Das kann Konflikte mit den Operationen geben, die innerhalb dieses Prozesses ausgeführt werden.

4D Server: Setzen Sie auf der Arbeitsstation lokale Prozesse ein für Operationen ohne Zugriff auf Daten. So bleibt mehr Prozesszeit für Server-intensive Tasks übrig.

Ein Datensatz ist gesperrt, wenn ein anderer Prozess ihn erfolgreich zum Bearbeiten geladen hat. Ein gesperrter Datensatz kann von einem anderen Prozess geladen, jedoch nicht geändert werden. Der Datensatz wird nur in dem Prozess freigegeben, in welchem er bearbeitet wurde. Ein Datensatz ist nur ungesperrt ladbar, wenn die entsprechende Tabelle im Lese/Schreibmodus ist. Weitere Informationen dazu finden Sie im Abschnitt Überblick zu Datensatz sperren.



Siehe auch 

Methoden
Projektmethoden
Variablen

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Prozesse

 
GESCHICHTE 

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v16)
4D Programmiersprache ( 4D v16.1)
4D Programmiersprache ( 4D v16.2)
4D Programmiersprache ( 4D v16.3)