Serverprozeduren

4D - Documentation   Français   English   German   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 gängigen Namen benutzen, bieten Serverprozeduren unter 4D Server weit mehr als reguläre Serverprozeduren.

Mit einer 4D Funktion, wie z.B. New process können Sie einen Benutzerprozess starten, in dem eine Methode abläuft. Diese Methode heißt Prozessmethode. Weitere Informationen dazu finden Sie im Handbuch 4th Dimension 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. Diese Methode heißt Serverprozedur. Der Prozess, der auf dem Server-Rechner 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 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 Client-Rechnern laufen.

Ebenso wie 4th Dimension und 4D Client eine Multi-Tasking Umgebung für Benutzerprozesse auf einer Arbeitsstation bieten, 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.

Was macht eine Serverprozedur?


Fast alles, was im Handbuch 4th Dimension Programmiersprache über die Funktionsweise von Prozessen und Befehlen beschrieben wird, gilt auch für Serverprozeduren. Davon ausgenommen sind die Eingabe von Daten und einige Druckoptionen.

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 u.v.m. arbeiten. Der einzige Unterschied besteht darin, dass etwas nicht auf dem 4D Client-Rechner, sondern auf dem Server-Rechner ausgeführt wird.

Ein großer Vorteil ist, dass eine Serverprozedur lokal auf dem Server-Rechner ausgeführt wird, also dort, wo auch die Datenbank-Engine liegt. Der Befehl APPLY TO SELECTION ist 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.

Der wichtigste Vorteil von Serverprozeduren sind jedoch die neuen Möglichkeiten, die sich für 4D Server ergeben. 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 Laufwerke 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.

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 FORM

PRINT LABEL

PRINT SETTINGS

Printing page

QR REPORT

QUERY BY EXAMPLE

REMOVE PICTURE FROM LIBRARY

SET MENU ITEM KEY

SET MENU ITEM MARK

SET MENU ITEM STYLE

SET PICTURE TO LIBRARY

SET PRINT PREVIEW

SHOW MENU BAR

Subtotal

Auf dem Server ungeeignete Befehle

Enthält eine Serverprozedur einen dieser Befehle, kann der Server blockiert werden. Es kann ein Fehler erzeugt werden oder nicht das gewünschte Ergebnis eintreten. Sie erhalten keine spezifische Fehlermeldung. Vermeiden Sie deshalb diese Befehle in Serverprozeduren.

ACCEPT

Activated

ADD DATA SEGMENT

After

APPEND TO CLIPBOARD

APPEND TO LIST

Before

BLOB TO DOCUMENT

BLOB to list

BRING TO FRONT

BUTTON TEXT

CANCEL

CHANGE CURRENT USER

CHANGE PASSWORD

CLEAR CLIPBOARD

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 LIST ITEM

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 CLIPBOARD

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 CLIPBOARD

Get text from clipboard

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 LIST ITEM

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

PRINT RECORD (2)

PRINT SELECTION (2)

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

Select folder

SELECT LIST ITEMS BY POSITION

SELECT LIST ITEMS BY REFERENCE

SELECT LOG FILE

Selected list items

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 CLIPBOARD

SET RGB COLORS

SET SCREEN DEPTH

SET TABLE TITLES

SET TEXT TO CLIPBOARD

SET TIMER

Set user properties

SET VISIBLE

SET WINDOW RECT

Shift down

SHOW PROCESS

SHOW WINDOW

SORT LIST

Test clipboard

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 in Serverprozeduren auf dem Server. Sie erhalten keine Fehlermeldung.

GRAPH

MENU BAR

MESSAGES OFF

MESSAGES ON

SHOW TOOL BAR

Eine Serverprozedur starten


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

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

Über Code in 4D Client: Rufen Sie die Routinen Execute on server oder EXECUTE ON CLIENT auf.

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

Über eine Methode, die auf 4D Server ausgeführt wird (Server Datenbankmethode oder Serverprozedur): Wählen Sie dazu die Funktionen Execute on server oder 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 4th Dimension 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 des 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   4D Server, Inhalt   Index   Back   Previous   Next