Version 6.0
Mit der Multitasking-Funktion von 4D laufen mehrere Tasks oder Prozesse gleichzeitig ab. Jede Operation kann ihren eigenen Prozeß haben.
Multiple Prozesse arbeiten wie mehrere Benutzer am gleichen Rechner, wobei jeder seine eigene Aufgabe ausführt. Das bedeutet, daß sich jeder Prozeß als ein anderes Task der Datenbank ausführen läßt.
In diesem Kapitel werden folgende Themen behandelt:
Prozesse anlegen und löschen
Elemente eines Prozesses
Benutzerprozesse
Automatisch erstellte Prozesse
Lokale und globale Prozesse
Record locking zwischen Prozessen
Hinweis: Dieses Kapitel beschreibt nicht die Serverprozeduren. Informationen dazu finden Sie im 4D Serverhandbuch im Abschnitt Serverprozeduren.
Prozesse anlegen und löschen
Es gibt drei verschiedene Wege, einen neuen Prozeß zu erstellen:
Sie führen in der Benutzerumgebung eine Methode aus. Markieren Sie dazu im Dialogfenster Methode ausführen in der DropDown-Liste Neuer Prozess. Die gewählte Methode ist die Prozeßmethode.
Sie starten über eine Menüzeile im Runtimemodus einen Prozeß. Wählen Sie dazu in der Designumgebung den Menüleisteneditor, wählen Sie den Menübefehl und markieren Sie das Kontrollkästchen Starte Neuen Prozeß. Die diesem Menübefehl zugeordnetete Methode ist die Prozeßmethode.
Verwenden Sie die Funktion Neuer Prozeß. Die als Parameter übergebene Methode ist die Prozeßmethode.
Es gibt vier Arten, einen Prozeß 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 Menü Prozeß des Designmodus.
Ein Prozeß kann einen anderen Prozeß erstellen. Prozesse sind nicht hierarchisch organisiertalle Prozesse sind gleich, unabhängig von welchem Prozeß aus sie erstellt wurden. Hat ein Hauptprozeß einen Unterprozeß erstellt, kann der Unterprozeß weiterlaufen, auch wenn der Hauptprozeß nicht mehr ausgeführt wird.
Prozeßelemente
Jeder Prozeß enthält folgende Elementarten:
Elemente für die Bildschirmoberfläche: Sie sind notwendig, um einen Prozeß 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.
Elemente für die Bildschirmoberfläche
Menüleiste: Jeder Prozeß hat seine eigene Menüleiste. Sie wird angezeigt, wenn sich das Prozeßfenster vorn befindet.
Fenster: Jeder Prozeß kann ein oder mehrere gleichzeitig geöffnete Fenster haben. Es gibt aber auch Prozesse ohne Fenster.
Aktives (vorderstes) Fenster: Das Prozeßfenster, das ganz vorn liegt, ist das aktive Fenster für diesen Prozeß. Sie haben soviele aktive Fenster, wie geöffnete Prozesse mit eigenem Fenstern vorhanden sind.
Elemente für die Daten
Eine aktuelle Auswahl pro Tabelle: Jeder Prozeß 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 Prozeß 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".
Elemente für die Programmiersprache
Variablen: Jeder Prozeß hat seine eigenen Prozeßvariablen. Weitere Informationen dazu finden Sie im Kapitel Variablen. Prozeßvariablen werden nur innerhalb des Prozesses erkannt.
Haupttabelle: Jeder Prozeß hat seine eigene Haupttabelle. Beachten Sie jedoch, daß der Befehl DEFAULT TABLE nur eine Sprachkonvention zum Programmieren ist.
Eingabe- und Ausgabeformulare: Jeder Prozeß hat für jede Tabelle ein aktuelles Ein- und Ausgabeformular.
Prozeßmengen: Jeder Prozeß hat sowohl seine eigenen Mengen als auch seine eigenen Systemmengen UserSet und LockedSet. Die Mengen werden nach Beendigung des Prozesses, der sie erzeugt hat, gelöscht. Weitere Informationen dazu finden Sie im Kapitel Mengen.
Fehlerbehandlung: In jedem Prozeß können Sie den Befehl ON ERR CALL aufrufen. Jeder Prozeß hat seine eigene Fehlerbehandlung.
Debugger Fenster: Jeder Prozeß hat sein eigenes Fenster für den Schrittmodus.
Benutzerprozesse
Sie erstellen Benutzerprozesse, um bestimmte Tasks auszuführen. Diese teilen sich die Prozeßzeit mit den Kernel-Prozessen. Web-Verbindungsprozesse sind zum Beispiel Benutzerprozesse.
Automatisch erzeugte Prozesse
4th Dimension erstellt und verwaltet folgende Prozesse:
Benutzer-/Runtime-Prozeß: Dieser Prozeß steuert 4D im Benutzer- und Runtimemodus. Er wird angelegt, sobald 4th Dimension läuft. Dazu gehört auch der standardmäßig angezeigte Stardbildschirm der Runtime-Umgebung.
Design Prozeß: Er verwaltet den Strukturteil der Datenbank: Tabelle, Formular, Methoden, Menüs. Er wird nur erstellt, wenn der Benutzer das erste Mal in die Designumgebung geht. Wollen Sie ihn schließen, gehen Sie in die Designumgebung und wählen Sie im Menü Datei/Ablage den Befehl Design-Umgebung verlassen. In einer kompilierten Datenbank fehlt dieser Prozeß.
Web Server Prozeß: Dieser Prozeß läuft, wenn die Datenbank im Web publiziert wird. Weitere Informationen dazu finden Sie im Abschnitt Web Dienste,Web Verbindungsprozesse.
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 4th Dimension oder 4D Server laufen.
Index Prozeß: Dieser Prozeß verwaltet das Anlegen von Indizes. Das Anlegen der Indizes geschieht in einem eigenen Prozeß, unabhängig von dem Prozeß, der die Benutzer- und Runtimeumgebung verwaltet. Die Indizierung beeinträchtigt nicht die Arbeit des Anwenders. Er wird angelegt, wenn ein Index für ein Feld erzeugt bzw. gelöscht wird.
On Serial Port Manager: Beim Aufruf des Befehls ON SERIAL PORT CALL wird dieser lokale Prozeß erzeugt.
On Event Manager: Beim Aufruf des Befehls ON EVENT CALL wird dieser lokale Prozeß erzeugt. Er wird kontinuierlich ausgeführt, auch wenn keine Methode abläuft. Die Ereignisverwaltung geschieht auch in der Designumgebung.
Globale und lokale 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 muß mit einem Dollarzeichen beginnen ($).
Warnung: Versuchen Sie, von einem lokalen Prozeß aus auf Daten zuzugreifen, geschieht das über den Benutzer-/Runtime-Prozeß. 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 Prozeßzeit für Server-intensive Tasks übrig.
Record Locking zwischen Prozessen
Ein Datensatz ist gesperrt, wenn ein anderer Prozeß ihn erfolgreich zum Bearbeiten geladen hat. Ein gesperrter Datensatz kann von einem anderen Prozeß geladen, jedoch nicht geändert werden. Der Datensatz wird nur in dem Prozeß freigegeben, in welchem er bearbeitet wurde. Ein Datensatz ist nur ungesperrt ladbar, wenn die entsprechende Tabelle im Lese/Schreibmodus ist.
Referenz
Methoden, Projektmethoden, Variablen.