Serverprozeduren

4D - Documentation   Français   English   German   Japanese   4D Server, Inhalt   Index   Back   Previous   Next

Version 2004 (Geändert)


Was ist eine SQL Serverprozedur?


Der Ausdruck Serverprozedur stammt aus der Server-Welt, die auf SQL basiert. Sendet eine Arbeitsstation eine Anfrage an einen SQL Server, sendet sie die Anfrage als Volltext in SQL Sprache an diesen Server. Die Anfrage wird vor der Ausführung auf dem SQL Server analysiert und interpretiert. Ist der Quellcode umfangreich und wird die Anfrage während einer Sitzung mehrere Male gesendet, beansprucht das natürlich viel Zeit für die Übertragung über das Netzwerk und die stets neue Analyse und Interpretation.

Deshalb sollte ein Weg gefunden werden, diese Anfrage zuerst über das Netzwerk zu senden, zu analysieren und zu interpretieren und nur noch auszuführen, wenn sie von der Arbeitsstation gesendet wird. Die Lösung war, den Quellcode der Anfrage (mit anderen Worten eine Prozedur) auf der Server-Seite zu lassen; die Arbeitsstation sendet dann als Anfrage nur den Namen dieser Prozedur. Da diese Prozedur auf dem Server gespeichert wird, nennen wir solche Prozeduren "Serverprozeduren".

Beachten Sie, dass eine Serverprozedur, die auf SQL basiert, Parameter von einer Arbeitsstation empfangen kann, die damit verbundenen Tasks synchron oder asynchron ausführt und evtl. ein Ergebnis an die Arbeitsstation zurückgibt. Löst eine Arbeitsstation die Ausführung einer Serverprozedur aus, überlässt die Station die Ausführung von Code bis zu einem gewissen Maß dem Server-Rechner.

Was ist eine 4D Server Serverprozedur?


Selbst wenn wir den üblichen Namen benutzen, bieten Serverprozeduren unter 4D Server weit mehr als reguläre Serverprozeduren.

Mit 4D im lokalen Modus können Sie beim Verwenden einer Routine, z.B. New process einen Benutzerprozess starten, in dem eine Methode abläuft. Diese Methode heißt Prozessmethode. Weitere Informationen dazu finden Sie im Handbuch 4D Programmiersprache im Abschnitt Projektmethoden.

Dasselbe können Sie mit 4D Server auf einer Arbeitsstation durchführen. Sie können zusätzlich mit der Funktion Execute on server auf dem Server-Rechner einen Benutzerprozess starten, in dem eine Methode abläuft. In beiden Fällen heißt die Methode Serverprozedur.

Der Prozess, der auf dem Server-Rechner oder einem anderen Client gestartet wird, heißt ebenfalls Serverprozedur.

Wichtig: Der Hauptunterschied zwischen einer Serverprozedur, die auf SQL-basiert und einer Serverprozedur unter 4D Server ist, dass im ersten Fall eine SQL Prozedur, im zweiten Fall ein eigenständiger 4D Prozess abläuft.

Architektur der 4D Serverprozeduren


Eine Serverprozedur hat wie ein normaler Prozess eine eigene Umgebung:

Aktuelle Auswahl pro Tabelle: Jede Serverprozedur hat eine eigene aktuelle Auswahl. Eine Tabelle kann in verschiedenen Serverprozeduren auch verschiedene Auswahlen haben.

Aktueller Datensatz pro Tabelle: Jede Tabelle kann in jeder Serverprozedur einen anderen aktuellen Datensatz haben.

Variablen: Jede Serverprozedur hat ihre eigenen Prozessvariablen. Prozessvariablen werden nur im Bereich der jeweiligen Serverprozedur erkannt.

Standardtabelle: Jede Serverprozedur hat eine eigene Standardtabelle.

Prozessmengen: Jede Serverprozedur hat ihre eigenen Prozessmengen.

On Error Call: Jede Serverprozedur hat ihre eigene Methode On Error Call.

Debugger Fenster: Jede Serverprozedur kann ein eigenes Debugger Fenster haben.

Eine Serverprozedur kann in der Benutzeroberfläche Fenster öffnen und Daten anzeigen (z.B. DISPLAY RECORD). Sie kann jedoch im Gegensatz zu Benutzerprozessen auf der Arbeitsstation keine Dateneingabe auslösen (z.B. ADD RECORD), da es keinen Eingabe-Kernel auf dem Server-Rechner gibt.

Sie können soviele Serverprozeduren starten wie es Hardware und Speicher des Systems zulassen. Im Grunde genommen antwortet der 4D Server-Rechner nicht nur auf Anfragen der Arbeitsstation und von Web Browsern, er führt auch Prozesse aus, die mit anderen Prozessen interagieren, die auf dem Server-Rechner und remote 4D Rechnern laufen.

Ebenso wie 4D eine Multi-Tasking Umgebung für Benutzerprozesse auf einer Arbeitsstation bietet, bietet 4D Server eine Multi-Tasking Umgebung für Serverprozeduren. 4D Server verwaltet zum Beispiel eine Tabelle mit Interprozessvariablen, die Serverprozeduren für die Interprozesskommunikation benutzen können.

Hinweis: Die Methodeneigenschaft "Auf Server ausführen" lässt sich für eine Methode anwenden, die in einem Prozess auf dem Server ausgeführt wird. Die Methode verwendet dann jedoch einen Zwillingsprozess des Client-Prozesses, d.h. sie kann die Umgebung dieses Client Prozesses nutzen. Es handelt sich dann nicht um eine 4D Serverprozedur. Weitere Informationen dazu finden Sie im Abschnitt Attribut Auf Server ausführen.

Was macht eine Serverprozedur?


Fast alles, was im Handbuch 4D Programmiersprache über die Funktionsweise von Prozessen und Befehlen beschrieben wird, gilt auch für Serverprozeduren. Davon ausgenommen ist die Dateneingabe.

Eine Serverprozedur kann Datensätze hinzufügen, suchen, sortieren, aktualisieren und löschen. Sie kann Mengen und Auswahlen verwenden, auf Dokumente auf der Festplatte zugreifen, mit BLOBs arbeiten, Datensätze drucken, u.v.m. Stellen Sie sich einfach vor, dass etwas nicht auf dem lokalen 4D Rechner, sondern auf dem Server-Rechner bzw. auf einer oder mehreren Arbeitsstationen ausgeführt wird.

Ein offensichtlicher Vorteil ist, dass eine Serverprozedur lokal auf dem Server-Rechner ausgeführt wird, also dort, wo auch die Datenbank-Engine liegt. So ist z.B. der Befehl APPLY TO SELECTION innerhalb einer Serverprozedur effizienter als über das Netzwerk. Das Beispiel im Abschnitt Import mit Serverprozeduren (Beispiel) zeigt, wie stark sich die Leistung über clever eingesetzte Serverprozeduren optimieren lässt.

Serverprozeduren, die auf einer oder mehreren Arbeitsstationen ausgeführt werden, ermöglichen, Aufgaben und Kommunikation afu mehrere Client Rechner zu verteilen. Ein Beispiel dazu finden Sie im Handbuch 4D Programmiersprache unter dem Befehl REGISTER CLIENT.

Der wichtigste Vorteil von Serverprozeduren sind jedoch die zusätzlichen Möglichkeiten für 4D Server. Mit Serverprozeduren können Sie Ihre eigenen 4D Server Dienste einrichten. Ihrer Phantasie sind keine Grenzen gesetzt. Das Beispiel im Abschnitt Service mit Serverprozeduren (Beispiel) zeigt eine Serverprozedur, die Clients mit Information über 4D Server bzw. den Server-Rechner ausstattet. Sie können z.B. die Volumes des Server-Rechners auflisten. Dieses Beispiel lässt sich leicht erweitern, so dass ein Client auch Information über ein Verzeichnis oder ein Dokument erhält.

Was macht eine Serverprozedur nicht (ausgeführt auf dem Server) ?


Generell sollten Serverprozeduren, die auf dem Server ausgeführt werden, nicht mit Oberflächenelementen arbeiten, wie z.B. Menüs, Fenster, Formulare, etc. Die Oberfläche wird ja auch nicht auf der Server-Seite verwaltet. Befehle, die Dialogfenster auf dem Server anzeigen, sowie Dialogfenster zur Dateneingabe, sollten vermieden werden.

Es folgt die Liste der Befehle, die Sie NICHT in Serverprozeduren verwenden sollten, die auf dem Server ausgeführt werden. Sie ist in drei Gruppen gegliedert:

Auf dem Server nicht zulässige Befehle

Enthält eine Serverprozedur einen dieser Befehle, erscheint eine Meldung, dass der Befehl nicht auf 4D Server ausgeführt werden kann. Der Fehler #67 wird zurückgegeben. Sie können ihn mit dem Befehl ON ERR CALL verwalten.

ACCUMULATE

ADD RECORD

ADD SUBRECORD

APPEND MENU ITEM

BREAK LEVEL

CALL PROCESS

CHANGE LICENSES

Count menu items

Count menus

CREATE DATA FILE

DELETE MENU ITEM

DISABLE MENU ITEM

DISPLAY SELECTION

EDIT ACCESS

ENABLE MENU ITEM

FILTER EVENT

Get menu item

Get menu item key

Get menu item mark

Get menu item style

Get menu title

GRAPH TABLE

HIDE MENU BAR

INSERT MENU ITEM

Level

Menu selected

MODIFY RECORD

MODIFY SELECTION

MODIFY SUBRECORD

ON EVENT CALL

OPEN DATA FILE

Open external window

PAGE BREAK

PAGE SETUP

PRINT SETTINGS

Printing page

QR REPORT

QUERY BY EXAMPLE

REMOVE PICTURE FROM LIBRARY

SET MENU ITEM SHORTCUT

SET MENU ITEM MARK

SET MENU ITEM STYLE

SET PICTURE TO LIBRARY

SHOW MENU BAR

Subtotal

Auf dem Server ungeeignete Befehle

Wir raten dringend, die folgenden Befehle nicht in Serverprozeduren zu verwenden, da sie für Methoden, die auf dem Server ausgeführt werden, ungeeignet sind. Sie können den Server blockieren und Fehler erzeugen und werden in jedem Fall nicht korrekt ausgeführt. Es erscheint keine explizite Fehlermeldung.

ACCEPT

Activated

ADD DATA SEGMENT

After

APPEND DATA TO PASTEBOARD

APPEND TO LIST

Before

BRING TO FRONT

BUTTON TEXT

CANCEL

CHANGE CURRENT USER

CHANGE PASSWORD

CLEAR PASTEBOARD

CLEAR LIST

Copy list

Count list items

Count screens

Create document (1)

Create resource file (1)

Current form page

Current form table

Current user

C_GRAPH

Deactivated

DELETE FROM LIST

DELETE USER

DIALOG

DISABLE BUTTON

DRAG AND DROP PROPERTIES

DRAG WINDOW

Drop position

During

ENABLE BUTTON

ERASE WINDOW

EXPORT DATA (1)

FILTER KEYSTROKE

Find window

FIRST PAGE

Focus object

FONT

FONT LIST

Font name

Font number

FONT SIZE

FONT STYLE

Form event

Frontmost process

Frontmost window

GET PASTEBOARD DATA

Get edited text

GET FORM PROPERTIES

GET GROUP LIST

GET GROUP PROPERTIES

GET HIGHLIGHT

GET LIST ITEM

GET LIST ITEM PROPERTIES

GET LIST PROPERTIES

GET MOUSE

GET OBJECT RECT

GET PICTURE FROM PASTEBOARD

Get text from pasteboard

GET USER LIST

GET USER PROPERTIES

GET WINDOW RECT

Get window title

GOTO AREA

GOTO PAGE

GRAPH SETTINGS

HIDE PROCESS

HIDE TOOL BAR

HIDE WINDOW

HIGHLIGHT RECORDS

HIGHLIGHT TEXT

IMPORT DATA (1)

In break

In footer

In header

INPUT FORM

INSERT IN LIST

INVERT BACKGROUND

Is a list

Is user deleted

Keystroke

LAST PAGE

List item parent

List item position

LIST TO BLOB

Load list

MAXIMIZE WINDOW

Menu bar height

Menu bar screen

MINIMIZE WINDOW

Modified

MOVE OBJECT

New list

NEXT PAGE

Next window

Old

Open document (1)

Open resource file (1)

ORDER BY (2)

OUTPUT FORM

Outside call

Pasteboard data size

Pop up menu

POST CLICK

POST EVENT

POST KEY

PREVIOUS PAGE

QUERY BY FORMULA (2)

QUERY (2)

REDRAW

REDRAW LIST

REDRAW WINDOW

REGISTER CLIENT

REJECT

SAVE LIST

SCREEN COORDINATES

SCREEN DEPTH

Screen height

Screen width

Selected list items

SELECT LIST ITEMS BY POSITION

SELECT LIST ITEMS BY REFERENCE

SELECT LOG FILE

Self

SET CHOICE LIST

SET COLOR

SET CURSOR

SET ENTERABLE

SET FIELD TITLES

SET FILTER

SET FORMAT

Set group properties

SET LIST ITEM

SET LIST ITEM PROPERTIES

SET LIST PROPERTIES

SET PICTURE TO PASTEBOARD

SET RGB COLORS

SET SCREEN DEPTH

SET TABLE TITLES

SET TEXT TO PASTEBOARD

SET TIMER

Set user properties

SET VISIBLE

SET WINDOW RECT

Shift down

SHOW PROCESS

SHOW WINDOW

SORT LIST

User in group

Validate password

Window kind

WINDOW LIST

Window process

(1) Nur wenn der erste Parameter ein leerer String ist.

(2) Nur wenn die Syntax die Anzeige eines Dialogfensters auslöst, z.B. SORT ([Tabelle]).

Befehle ohne Auswirkung auf dem Server

Diese Befehle haben keine Auswirkung, wenn sie in Serverprozeduren auf dem Server ausgeführt werden. Es erscheint keine explizite Fehlermeldung.

GRAPH

MESSAGES OFF

MESSAGES ON

SET MENU BAR

SHOW TOOL BAR

Eine Serverprozedur starten


Von 4D aus können Sie eine Serverprozedur im Dialogfenster Methode ausführen manuell starten:

Sie können sie auf dem 4D Server- oder einem Client-Rechner ausführen. Beachten Sie, dass nur die Client-Rechner in der Liste erscheinen, welche Sie zuvor registriert haben. Weitere Informationen dazu finden Sie im Abschnitt Serverprozeduren auf Client-Rechnern registrieren und unter dem Befehl REGISTER CLIENT.

Sie können in 4D eine Serverprozedur auch per Programmierung starten: Verwenden Sie dazu die Routinen Execute on server oder EXECUTE ON CLIENT.

Hinweis: Sie können von remote 4D aus keine Befehle zur Prozessverwaltung für Serverprozeduren auf dem Server verwenden. Das sind die Befehle DELAY PROCESS, PAUSE PROCESS und RESUME PROCESS.

Sie können eine Serverprozedur über eine Methode aufrufen, die auf 4D Server ausgeführt wird (Server Datenbankmethode, Methode mit dem Attribut Auf Server ausführen oder Serverprozedur): Verwenden Sie dazu die Funktionen Execute on server, New process oder EXECUTE ON CLIENT.

Interprozess-Kommunikation zwischen Serverprozeduren und Benutzerprozessen


Serverprozeduren können miteinander kommunizieren durch:

Interprozessvariablen

lokale oder globale Semaphoren

Datensätze

Interprozessmengen und temporäre Auswahlen auf Interprozessebene

die Befehle GET PROCESS VARIABLE, SET PROCESS VARIABLE und VARIABLE TO VARIABLE

Weitere Informationen dazu finden Sie im Handbuch 4D Programmiersprache in den entsprechenden Abschnitten. Nochmal zur Erinnerung: Denken Sie daran, dass die 4D Befehle im Bereich des Server-Rechners genauso arbeiten wie im Bereich eines Client-Rechners.

Hinweis: Die Befehle CALL PROCESS und Outside call haben auf dem Server-Rechner keine Bedeutung, da Serverprozeduren keine Benutzeroberfläche mit Dateneingabe haben.

Es gibt jedoch ein anderes wichtiges Feature: Benutzerprozesse, die auf dem Client-Rechner laufen, können mit den Befehlen GET PROCESS VARIABLE, SET PROCESS VARIABLE und VARIABLE TO VARIABLE Prozessvariablen (*) von einer Serverprozedur lesen und schreiben.

(*) ebenso wie die Interprozessvariable auf dem Server-Rechner.

Wichtig: Die Prozesskommunikation zwischen mehreren Rechnern über die Befehle GET PROCESS VARIABLE, SET PROCESS VARIABLE und VARIABLE TO VARIABLE ist nur vom Client zum Server möglich. Es ist immer ein Client-Prozess, der die Variablen einer Serverprozedur liest oder schreibt.

Referenz

Import mit Serverprozeduren (Beispiel), Service mit Serverprozeduren (Beispiel)


4D - Documentation   Français   English   German   Japanese   4D Server, Inhalt   Index   Back   Previous   Next