ESQL für einen Knoten erstellen

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

Vorbereitungen

Zur vollständigen Ausführung dieser Task muss die folgende Task abgeschlossen worden sein:

Erstellen Sie in der ESQL-Datei ein Modul, das mit einem Knoten in Ihrem Nachrichtenfluss verknüpft ist. Ein Modul kann nur mit einem Knoten eines bestimmten Typs (Rechen-, Datenbank- oder Filterknoten) verknüpft 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:

  1. Wechseln Sie zur Ansicht 'Brokeranwendungsentwicklung'.
  2. Doppelklicken Sie in der Navigatoransicht auf den Nachrichtenfluss, der den Knoten enthält, für den Sie ESQL erstellen möchten. Der Nachrichtenfluss wird in der Editoransicht geöffnet.
  3. 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>
  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 Cursor. 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 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.

  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 Hlfe 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.
  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 modifizieren
ESQL-Editoreinstellungen ä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: 23. Aug. 2006
ak09033_