ESQL für einen Knoten erstellen

Erstellen Sie ESQL, um das Verhalten eines Rechen-, Datenbank oder Filterknotens in einer ESQL-Datei anzupassen.

Vorbereitungen

Die folgende Task muss zur Fertigstellung dieser Task beendet sein:

Erstellen Sie in der ESQL-Datei ein Modul, das einem Knoten in Ihrem Nachrichtenfluss zugeordnet ist. Ein Modul kann nur einem Knoten eines bestimmten Typs (Rechen-, Datenbank- oder Filterknoten) zugeordnet sein. In dem Modul können Sie Funktionen und Prozeduren sowie die verfügbaren Anweisungen und Funktionen erstellen und verwenden. Sie können auch lokale Konstanten und Variablen erstellen.

Wenn Sie auf der Ebene des Brokerschemas Konstanten, Funktionen oder Prozeduren erstellt haben, können Sie innerhalb des Moduls auch auf diese verweisen. Routinen können auf einer Ebene definiert werden, auf der sie von verschiedenen Modulen verwendet werden. Damit sparen Sie Entwicklungszeit und Wartungsaufwand.

Gehen Sie folgendermaßen vor, um ESQL für einen Knoten zu erstellen:

  1. Wechseln Sie zur Ansicht 'Brokeranwendungsentwicklung'.
  2. Klicken Sie in der Navigatoransicht doppelt auf den Nachrichtenfluss, in dem der Knoten für die Erstellung von ESQL enthalten ist. Der Nachrichtenfluss wird in der Editoransicht geöffnet.
  3. Klicken Sie mit der rechten Maustaste auf den Knoten (dabei muss es sich um einen Rechen-, Datenbank- oder Filterknoten handeln), und klicken Sie 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.

    (Wenn Sie bereits die Standarddatei erstellt haben, wird die Datei beim Klicken auf ESQL öffnen in der Editoransicht geöffnet, und ein neues Modul wird erstellt und hervorgehoben.)

    Für diesen Knoten wird am Ende der ESQL-Datei ein Entwurfsmodul 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]; /*create the parser for OutputRoot*/
    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>
  4. 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 Cursors. Klicken Sie auf Bearbeiten > Inhaltsassistent, 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 implementiert 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 des Nachrichtenfeldverweises: Namen von Runtime-Domänen (Parser), Format 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 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. Alternativ hierzu können Sie die ESQL-Datei speichern; dabei wird eine Überprüfung 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) mit Hilfe des Inhaltsassistenten generieren, werden diese korrekt eingegeben, und es besteht ein geringeres Fehlerrisiko.

  5. 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 mit Hilfe des Editors in dieser Datei erstellen. Gehen Sie hierfür folgendermaßen vor:

  1. Wechseln Sie zur Ansicht 'Brokeranwendungsentwicklung'.
  2. 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.
  3. Positionieren Sie in der Editoransicht den Zeiger auf einer neuen Zeile, und wählen Sie mit Hilfe 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. Es wird empfohlen, den Inhaltsassistenten zu verwenden, 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.
  4. 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 helfen. Dieser Abschnitt betrifft den Inhaltsassistenten, aber es sind weitere Funktionen im Editor verfügbar. Informationen zu diesen Funktionen finden Sie unter ESQL-Editor.

Zugehörige Konzepte
Nachrichtenflüsse - Übersicht
Brokerschemas
ESQL-Module
Zugehörige Tasks
Nachrichtenflüsse entwickeln
ESQL für einen Knoten ändern
Einstellungen für ESQL-Editor ändern
Zugehörige Verweise
Integrierte Knoten
ESQL-Referenz
ESQL-Editor
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Rückmeldung
Copyright IBM Corporation 1999, 2006 Letzte Aktualisierung: 18.05.2006
ak09033_