Klicken Sie mit der rechten Maustaste auf den Knoten (der ein Rechen-, Datenbank- oder Filterknoten sein muss), und klicken Sie dann auf ESQL öffnen. Für diesen Nachrichtenfluss wird die Standard-ESQL-Datei (<Nachrichtenflussname>.esql) in der Editoransicht geöffnet. Wenn diese Datei noch nicht vorhanden ist, wird sie erstellt. (Falls Sie bereits die Standarddatei erstellt haben und auf ESQL öffnen klicken, wird die Datei in der Editoransicht geöffnet und ein neues Modul erzeugt und hervorgehoben.)
Es wird ein Entwurfsmodul für diesen Knoten am Ende der ESQL-Datei erstellt. Der genaue Inhalt ist vom Knotentyp abhängig.Für einen Rechenknoten wird das folgende Modul erstellt:
CREATE COMPUTE MODULE <Modulname>
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
-- CALL CopyMessageHeaders();
-- CALL CopyEntireMessage();
RETURN TRUE;
END;
CREATE PROCEDURE CopyMessageHeaders() BEGIN
DECLARE I INTEGER 1;
DECLARE J INTEGER CARDINALITY(InputRoot.*[]);
WHILE I < J DO
SET OutputRoot.*[I] = InputRoot.*[I];
SET I = I + 1;
END WHILE; END;
CREATE PROCEDURE CopyEntireMessage() BEGIN
SET OutputRoot = InputRoot;
END;
END MODULE;
Damit ein Broker der Version 2.1 die vorangehende ESQL einsetzen kann, müssen Sie die Modulstufenvariablen
InputRoot und
OutputRoot an die Prozedur oder Funktion wie im fett gedruckten Text des folgenden Beispiels weiterleiten:
CREATE COMPUTE MODULE <Modulname>
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
-- CALL CopyMessageHeaders(InputRoot, OutputRoot);
-- CALL CopyEntireMessage(InputRoot, OutputRoot);
RETURN TRUE;
END;
CREATE PROCEDURE CopyMessageHeaders(IN InputRoot REFERENCE, IN
OutputRoot REFERENCE) BEGIN
DECLARE I INTEGER 1;
DECLARE J INTEGER CARDINALITY(InputRoot.*[]);
WHILE I < J DO
CREATE LASTCHILD OF OutputRoot DOMAIN FIELDNAME (
InputRoot.*[I] ); /*Parser für OutputRoot erstellen*/
SET OutputRoot.*[I] = InputRoot.*[I];
SET I = I + 1;
END WHILE; END;
CREATE PROCEDURE CopyEntireMessage(IN InputRoot REFERENCE, IN
OutputRoot REFERENCE) BEGIN
SET OutputRoot = InputRoot;
END;
END MODULE;
Der Name des Moduls wird durch den Wert bestimmt, den Sie für die entsprechende Knoteneigenschaft angegeben haben. Der Standardname ist <Name_des_Nachrichtenflusses>_<Knotentyp>.
Die Hauptfunktion enthält Aufrufe für zwei unten beschriebene Prozeduren, die im Modul des Rechenknotens deklariert werden, das der Hauptfunktion folgt. Diese
Aufrufe sind jedoch auskommentiert. Falls Sie die Funktionen dieser Prozeduren nutzen möchten,
müssen Sie die Kommentarzeichen für diese Zeilen entfernen und die Zeilen an der entsprechenden
Stelle in dem ESQL-Code einfügen, der für Main erstellt wird.
- CopyMessageHeaders
- Diese Prozedur durchsucht die Eingabenachricht nach Headern und kopiert diese in die
Ausgabenachricht.
Wenn Sie eine Migration von Version 2.1 durchführen, entspricht diese Prozedur dem generierten Code, wenn Sie im Eigenschaftendialog des Rechenknotens auf die Schaltfläche 'Nachrichtenheader kopieren' klicken.
- CopyEntireMessage
- Diese Prozedur kopiert den gesamten Inhalt (einschl. Header) der Eingabenachricht in die
Ausgabenachricht.
Wenn Sie eine Migration von Version 2.1 durchführen, entspricht diese Prozedur dem generierten Code, wenn Sie im Eigenschaftendialog des Rechenknotens auf die Schaltfläche 'Gesamte Nachrichtkopieren' klicken.
Wenn Sie ein ESQL-Modul für einen Datenbankknoten erstellen, wird das folgende Modul erzeugt:
CREATE DATABASE MODULE <Modulname>
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
RETURN TRUE;
END;
END MODULE;
Bei einem Filterknoten entspricht das Modul demjenigen, das für den Datenbankknoten erstellt wurde, bis auf die erste Zeile, die lautet:
CREATE FILTER MODULE <Modulname>
Fügen Sie dieser Datei ESQL hinzu, um das Verhalten des Knotens anzupassen.
Dazu sollten Sie zunächst der Hauptfunktion ESQL-Anweisungen hinzufügen, d. h. nach der BEGIN-Anweisung und vor RETURN TRUE. Sie können im Modul DECLARE-Anweisungen hinzufügen, die nicht in der Hauptfunktion sind. Um eine neue Zeile in der Datei hinzuzufügen, drücken Sie die Eingabetaste.
Damit Sie gültiges ESQL codieren können, zeigt der Editor als Hilfe eine Liste mit gültigen Anweisungen und Funktionen an der Position des Cursor.
Klicken Sie auf , um diesen Assistenten aufzurufen. Bei einigen Systemen ist auch die Tastenkombination Strg+Leertaste möglich. Blättern Sie durch die angezeigte Liste, um den gewünschten Code zu finden und markieren. Drücken Sie dann die Eingabetaste.
Der entsprechende Code wird in Ihr Modul eingefügt, und die Liste wird wieder ausgeblendet.
Der Inhaltsassistent steht in folgenden Bereichen zur Verfügung:
- Anwendbare Schlüsselwörter, basierend auf Sprachsyntax
- Codeblöcke, die zusammengehören, wie z. B. BEGIN END;
- Konstanten, die Sie definiert haben, Kennungen, Bezeichnungen, Funktionen und Prozeduren, die verwendet werden können. Routinen können in jedem Projekt eingesetzt werden, auch wenn diese im aktuellen Projekt nicht referenziert werden.
- Datenbankschema und Tabellennamen nach dem Korrelationsnamen der Datenbank sowie Tabellenspaltennamen in INSERT-, UPDATE-, DELETE- und SELECT-Anweisungen und (in den meisten Fällen) die WHERE-Klauseln dieser Anweisungen.
- Elemente der Nachrichtenfeldreferenz: Namen von Runtime-Domänen (Parser), Formtat des Typausdrucks, Kennungen des Namespaces, Namespace-qualifiziertes Element und Attributnamen und Format des Indexausdrucks.
- Inhalt im Eigenschaftenordner unter dem Stammverzeichnis der Ausgabenachricht
- Für die Anweisung DECLARE NAMESPACE ZielNamespaces von Nachrichtengruppen und Schemanamen.
Der Inhaltsassistent funktioniert nur, wenn das ESQL korrekt ausgewertet werden kann.
Fehler wie z. B. ein fehlendes END nach einem BEGIN und andere unbestimmte Blockanweisungen führen zu Parser-Fehlern, wodurch der Inhaltsassistent keine Unterstützung bieten kann. Probieren Sie den Inhaltsassistenten um der Anweisung herum aus, bei der er nicht funktioniert, um die Position des Fehlers einzugrenzen. Alternativ hierzu können Sie die ESQL-Datei speichern; dabei wird eine Validierung gestaret, und alle Syntaxfehler werden in die Taskansicht geschrieben. Sehen Sie sich die jeweiligen gemeldeten Fehler an, um die ESQL-Syntax zu korrigieren. Wenn Sie die meisten Anweisungen (z. B. Blockanweisungen) mit Hilfe des Inhaltsassistenten generieren, werden diese korrekt eingegeben, und es besteht ein geringeres Fehlerrisiko.