ESQL-Code für einen Knoten erstellen

Erstellen Sie ESQL-Code, um das Verhalten eines Compute-, Database- oder Filter-Knotens innerhalb einer ESQL-Datei anzupassen.

Vorbereitungen

Führen Sie folgende Aufgabe aus:

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:

  1. Wechseln Sie zur Ansicht 'Brokeranwendungsentwicklung'.
  2. 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.
  3. 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
  4. 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 Bearbeiten > Inhaltsassistent, 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.

  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 mithilfe 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 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.
  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-Codes helfen. Dieser Abschnitt bezieht sich auf den Inhaltsassistenten; weitere Funktionen sind 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 | Feedback

Copyright IBM Corporation 1999, 2009Copyright IBM Corporation 1999, 2009.
Letzte Aktualisierung : 2009-02-17 15:29:33

ak09033_