Erstellen Sie ESQL-Code, um das Verhalten eines
Compute-,
Datenbank-,
DatabaseInput- oder
Filter-Knotens in einer ESQL-Datei anzupassen.
Bevor Sie beginnen:In diesem Abschnitt wird vorausgesetzt, dass
Sie bereits eine ESQL-Datei erstellt haben. Der Abschnitt ESQL-Datei erstellen enthält weitere Informationen hierzu.
Erstellen Sie in der ESQL-Datei ein Modul, das mit
einem Knoten in Ihrem Nachrichtenfluss verknüpft ist. Ein Modul kann nur einem einzigen
eines bestimmten Typs (Compute-,
Datenbank-,
DatabaseInput-oder
Filter-Knoten) zugeordnet werden. Im Modul können Sie
Funktionen und Prozeduren zusätzlich zu den übergebenen Anweisungen und Funktionen erstellen und
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 im Modul darauf
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.
Gehen Sie wie folgt vor, um ESQL-Code für einen Knoten zu erstellen:
- Öffnen Sie den Nachrichtenfluss, der den Knoten enthält, für den ESQL-Code erstellt werden
soll. Erweitern Sie in der Ansicht Brokerentwicklung die entsprechende Anwendung oder Bibliothek bzw. das entsprechende Nachrichtenbrokerprojekt, erweitern Sie den Nachrichtenordner 'Flüsse' und klicken Sie doppelt auf den Nachrichtenfluss.
Der Nachrichtenfluss wird im Nachrichtenflusseditor geöffnet.
- Klicken Sie mit der rechten Maustaste auf einen
Compute-,
Datenbank-,
DatabaseInput- oder
Filter-Knoten 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 und enthält am Ende ein
Entwurfsmodul für diesen Knoten. Der genaue Inhalt ist vom Knotentyp abhängig.
Wenn Sie die Datei bereits erstellt haben, wird sie in der Editoransicht geöffnet, und es wird
ein neues Modul erstellt und hervorgehoben.
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;
Der Name des Moduls wird durch den Wert bestimmt, den Sie für die entsprechende
Knoteneigenschaft angegeben haben. Der Standardname lautet
Nachrichtenflussname_Knotentyp.
Die Hauptfunktion enthält Aufrufe für zwei in der folgenden Liste beschriebene Prozeduren, die im
Modul des Compute-Knotens, der auf die Hauptfunktion
folgt, deklariert werden. 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.
- CopyEntireMessage
- Diese Prozedur kopiert den gesamten Inhalt (einschl. Header) der Eingabenachricht in die
Ausgabenachricht.
Wenn Sie ein ESQL-Modul für einen Datenbank-Knoten
erstellen, wird folgendes Modul erzeugt:
CREATE DATABASE MODULE Modulname
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
RETURN TRUE;
END;
END MODULE;
Für einen DatabaseInput-Knoten enthält das Modul, das
erstellt wird, drei Prozeduren: 'ReadEvents', 'BuildMessage' und 'EndEvent'. Jede dieser Prozeduren
enthält Standardtext, der beschreibt, wie die Prozedur funktioniert. Weitere Informationen zum
Konfigurieren von DatabaseInput-Knoten erhalten Sie im
Abschnitt DatabaseInput-Knoten konfigurieren. Bei einem
DatabaseInput-Knoten wird folgende erste Zeile des
Moduls erstellt:
CREATE DATABASEEVENT MODULE Modulname
Bei einem Filter-Knoten ist das Modul mit dem Modul
identisch, das für den Datenbank-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 bei Compute-,
Datenbank- oder
Filter-Knoten damit, dass Sie in der Hauptfunktion
(Main) ESQL-Anweisungen hinzufügen (nach der BEGIN-Anweisung und vor RETURN TRUE). Fügen Sie bei
DatabaseInput-Knoten ESQL-Anweisungen in den Prozeduren
'ReadEvents', 'BuildMessage' und 'EndEvent' hinzu.
Sie können im Modul DECLARE-Anweisungen
hinzufügen, die nicht in der Hauptfunktion enthalten 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 zu starten. Bei einigen Systemen ist auch die Tastenkombination
Strg+Leertaste verwendbar.
Blättern Sie durch die Liste, um die gewünschte Anweisung zu finden und zu markieren. Drücken Sie
dann die Eingabetaste. Der entsprechende Code wird in Ihr Modul eingefügt.
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, 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 des Ordners 'Eigenschaften' unter der Ausgabenachricht.
- Für die Anweisung DECLARE NAMESPACE Ziel-Namespaces 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. Sie können auch die ESQL-Datei speichern. Die Datei wird dadurch ausgewertet, und alle Syntaxfehler werden in die Ansicht 'Probleme' 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 Anweisungen korrekt eingegeben, und es besteht ein geringeres Fehlerrisiko.
- Wenn Sie mit der Arbeit an diesem Modul fertig sind, speichern und schließen Sie die
ESQL-Datei.
Sie können die ESQL-Datei auch direkt öffnen und das Modul in der
Datei mit dem Editor erstellen:
- Öffnen Sie die ESQL-Datei, in der Sie das Modul erstellen möchten.
- 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 den Text auch eingeben, müssen dabei aber 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.