Erstellen Sie in der ESQL-Datei ein Modul, das mit einem Knoten
in Ihrem Nachrichtenfluss verknüpft ist. Ein Modul kann nur einem einzigen Knoten eines bestimmten
Typs (Compute-,
Database- oder
Filter) zugeordnet werden.
Im Modul können Sie Funktionen und Prozeduren erstellen und auch die übergebenen Anweisungen und Funktionen verwenden. Sie können auch lokale Konstanten und Variablen erstellen.
Wenn Sie Konstanten, Funktionen oder Prozeduren auf Brokerschema-Ebene erstellt haben, können Sie auch darauf innerhalb des Moduls verweisen.
Sie können Routinen auf einer Ebene definieren, auf der verschiedene Module sie verwenden können; dadurch können Sie Entwicklungszeit und Verwaltungsaufwand einsparen.
So erstellen Sie ESQL für einen Knoten:
- Wechseln Sie zur Ansicht 'Brokeranwendungsentwicklung'.
- Klicken Sie in der Ansicht 'Brokerentwicklung' doppelt auf den Nachrichtenfluss, der den Knoten enthält, für den die ESQL erstellt werden soll. Der Nachrichtenfluss wird in der Editoransicht geöffnet.
- Klicken Sie mit der rechten Maustaste auf den Knoten (bei dem es sich um einen
Compute-,
Database- oder
Filter-Knoten handeln muss), und klicken Sie dann auf
ESQL öffnen. Die Standard-ESQL-Datei für diesen Nachrichtenfluss
(Nachrichtenflussname.esql) wird in der Editoransicht
geöffnet. Falls die Datei noch nicht vorhanden ist, wird sie erstellt.
Wenn Sie die Datei bereits erstellt haben, wird sie in der Editoransicht geöffnet, und es wird
ein neues Modul erstellt und hervorgehoben.
Falls die Datei automatisch erstellt wird, enthält sie am Ende ein Entwurfsmodul für
diesen Knoten. Der genaue Inhalt ist vom Knotentyp abhängig.
Für einen Compute-Knoten wird folgendes 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 der vorangehenden ESQL-Code einsetzen kann, müssen Sie
die Modulstufenvariablen
InputRoot und
OutputRoot an die Prozedur
oder Funktion übergeben, so wie im fett gedruckten Text des folgenden Beispiels gezeigt:
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 (Main) enthält Aufrufe für zwei unten beschriebene Prozeduren, die im Modul des
Compute-Knotens deklariert werden, das der Hauptfunktion
folgt. Diese Aufrufe sind jedoch auskommentiert. Wenn Sie die von diesen Prozeduren bereitgestellte
Funktion nutzen möchten, entfernen Sie die Kommentarzeichen aus den Zeilen, und fügen Sie die
Zeilen an der entsprechenden Stelle in den ESQL-Code ein, der für die Hauptfunktion 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 Code, der
generiert wird, wenn Sie in der Eigenschaftenansicht des
Compute-Knotens 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 Code, der generiert wird, wenn Sie in der
Eigenschaftenansicht des Compute-Knotens auf die
Schaltfläche 'Gesamte Nachricht kopieren' klicken.
Wenn Sie ein ESQL-Modul für einen Database-Knoten
erstellen, wird folgendes Modul erzeugt:
CREATE DATABASE MODULE Modulname
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
RETURN TRUE;
END;
END MODULE;
Bei einem Filter-Knoten ist das Modul mit dem Modul
identisch, das für den Database-Knoten erzeugt wurde,
bis auf die erste Zeile, die wie folgt lautet:
CREATE FILTER MODULE Modulname
- Fügen Sie dieser Datei ESQL hinzu, um das Verhalten des Knotens anzupassen.
Beginnen Sie damit, dass Sie in der Hauptfunktion (Main) 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 verwendbar. 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, sowie 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 Namespace, 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 gestartet, 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) mithilfe des Inhaltsassistenten generieren, werden diese korrekt eingegeben, und es besteht ein geringeres Fehlerrisiko.
- Wenn Sie mit der Arbeit an diesem Modul fertig sind, können Sie die ESQL-Datei schließen. Speichern Sie vorher die Datei, damit alle durchgeführten Änderungen übernommen werden und das ESQL überprüft wird.
Bei Bedarf können Sie die ESQL-Datei direkt öffnen und das Modul mithilfe des Editors in dieser Datei erstellen. Gehen Sie hierfür folgendermaßen vor:
- Wechseln Sie zur Ansicht 'Brokeranwendungsentwicklung'.
- Wählen Sie die ESQL-Datei aus, in der Sie das Modul erstellen möchten. Um die Datei in der Editoransicht zu öffnen, doppelklicken Sie entweder darauf, oder klicken Sie mit der rechten Maustaste und dann auf Öffnen.
- Positionieren Sie in der Editoransicht den Zeiger auf einer neuen Zeile, und wählen Sie mithilfe des Inhaltsassistenten den passenden Modulentwurf für diesen Knotentyp aus (z. B. CREATE COMPUTE MODULE END MODULE;). Sie können ihn, falls gewünscht, selbst eingeben, aber Sie müssen dann sicherstellen, dass Ihre Eingabe mit dem oben gezeigten erforderlichen Entwurf übereinstimmt. Verwenden Sie den Inhaltsassistenten, da Sie dadurch zusätzliche Unterstützung erhalten: Es werden nur gültiges ESQL und passende Endanweisungen (z. B. END MODULE;) - sofern erforderlich - eingefügt.
- Vervollständigen Sie den Code des Moduls mit den erforderlichen Angaben.
Egal mit
welcher Methode Sie die ESQL-Datei öffnen, sollten Sie bedenken, dass der Editor Funktionen
bereitstellt, die Ihnen beim Schreiben des ESQL-Codes helfen. Dieser Abschnitt bezieht sich auf den
Inhaltsassistenten; weitere Funktionen sind verfügbar. Informationen zu diesen Funktionen finden
Sie unter ESQL-Editor.