Creazione di ESQL per un nodo

Creare il codice ESQL per personalizzare il funzionamento di un nodo Compute, Database o Filter all'interno di un file ESQL.

Prima di iniziare

Per completare questa attività, è necessario completare prima quella che segue:

All'interno del file ESQL, creare un modulo associato con un nodo del flusso di messaggi. Un modulo può essere associato con un solo nodo di un particolare tipo (Compute, Database o Filter). All'interno del modulo è possibile creare ed utilizzare funzioni e procedure ed utilizzare le istruzioni e le funzioni fornite. E' anche possibile creare variabili e costanti locali.

Se sono state create costanti, funzioni o procedure al livello dello schema broker, è anche possibile fare riferimento a tali elementi all'interno del modulo. E' possibile definire routine ad un livello in cui possono essere utilizzate da molti moduli diversi; in questo modo, è possibile risparmiare tempo durante lo sviluppo e ridurre le attività di manutenzione.

Per creare il codice ESQL per un nodo:

  1. Passare alla Prospettiva Sviluppo dell'applicazione broker.
  2. Nella vista Navigator, fare doppio clic sul flusso di messaggi che contiene il nodo per cui si desidera creare il codice ESQL. Il flusso di messaggi viene aperto nella vista dell'editor.
  3. Fare clic con il tasto destro del mouse sul nodo (che deve essere Compute, Database o Filter) e fare clic su Apri ESQL. Il file ESQL predefinito per questo flusso di messaggi, <message_flow_name>.esql, viene aperto nella vista dell'editor (il file viene creato solo se non esiste già).

    Se il file predefinito è già stato creato e si fa clic su Apri ESQL, il file viene aperto nella vista nell'editor e viene creato ed evidenziato un nuovo modulo.

    Alla fine del file ESQL viene creato un modulo skeleton per questo nodo. L'esatto contenuto dipende dal tipo di nodo.

    Per un nodo Compute, viene creato il seguente modulo:

    CREATE COMPUTE MODULE <module_name>
           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;
    Per rendere il codice ESQL precedente distribuibile su un broker Versione 2.1, è necessario passare le variabili a livello del modulo InputRoot e OutputRoot alla procedura o alla funzione come illustrato dal testo in grassetto nell'esempio riportato di seguito:
    CREATE COMPUTE MODULE <module_name>
           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;

    Il nome del modulo è determinato dal valore impostato per la proprietà del nodo corrispondente. L'impostazione predefinita è <message_flow_name>_<node_type>. La funzione Main contiene chiamate a due procedure, descritte di seguito, dichiarate all'interno del modulo del nodo Compute dopo la funzione Main. Tali chiamate sono commentate. Per includere la funzione che esse forniscono, annullare il commento di tali righe e posizionarle nel punto appropriato del codice ESQL creato per Main.

    CopyMessageHeaders
    Questa procedura esegue un loop attraverso le intestazioni contenute nel messaggio di input e copia ciascuna intestazione nel messaggio di output.

    Se si sta eseguendo la migrazione dalla Versione 2.1, questa procedura è equivalente al codice generato quando si seleziona il pulsante Copia intestazioni messaggio nella finestra delle proprietà del nodo Compute.

    CopyEntireMessage
    Questa procedura copia tutto il contenuto del messaggio di input, incluse le intestazioni, nel messaggio di output.

    Se si sta eseguendo la migrazione dalla Versione 2.1, questa procedura è equivalente al codice generato quando si seleziona il pulsante Copia messaggio intero nella finestra delle proprietà del nodo Compute.

    Se si crea un modulo ESQL per un nodo Database, viene creato il seguente modulo:

    CREATE DATABASE MODULE <module_name>
           CREATE FUNCTION Main() RETURNS BOOLEAN
           BEGIN
                   RETURN TRUE; 
           END;
    END MODULE;

    Per un nodo Filter, il modulo è identico a quello creato per il nodo Database, ad eccezione della prima riga, riportata di seguito:

    CREATE FILTER MODULE <module_name>
  4. Aggiungere il codice ESQL a questo file per personalizzare il funzionamento del nodo.

    Aggiungere le istruzioni ESQL all'interno della funzione Main, dopo l'istruzione BEGIN e prima di RETURN TRUE. E' possibile aggiungere istruzioni DECLARE all'interno del modulo che non sono all'interno della funzione Main. Per aggiungere una nuova riga al file, premere Invio.

    Per consentire la scrittura di un codice ESQL valido, l'editor visualizza un elenco di funzioni ed istruzioni valide nel punto indicato dal cursore. Per richiamare questa funzione, fare clic su Modifica > Content Assist. Su alcuni sistemi, è possibile anche utilizzare la combinazione di tasti Ctrl+Spazio. Scorrere l'elenco visualizzato per individuare ed evidenziare la funzione desiderata e premere Invio. Il codice appropriato viene inserito nel modulo e l'elenco non viene più visualizzato.

    La funzione Content Assist viene fornita nelle seguenti aree:

    • Parole chiavi applicabili, in base alla sintassi del linguaggio.
    • Blocchi di codice, come ad esempio BEGIN END;.
    • Costanti definite, identificativi, etichette, funzioni e procedure che possono essere utilizzati, mentre le routine possono essere in qualsiasi progetto, anche se non indicati dal progetto corrente.
    • Schema di database e nomi di tabella dopo il nome della correlazione del database, nomi di colonna della tabella nelle istruzioni INSERT, UPDATE, DELETE e SELECT e, nella maggior parte dei casi, le clausole WHERE di tali istruzioni.
    • Elementi dei riferimenti di campo del messaggio: nome del dominio runtime (programma di analisi), formato delle espressioni di tipo, identificativi dello spazio dei nomi, nomi di attributi ed elementi con spazio dei nomi e formato dell'espressione di indice.
    • Contenuto nella cartella Proprietà nella root del messaggio di output.
    • Per l'istruzione DECLARE NAMESPACE, gli spazi dei nomi di destinazione delle serie di messaggi e dei nomi dello schema.

    Content Assist funziona solo se il codice ESQL può essere analizzato correttamente. Alcuni errori, come l'istruzione END mancante dopo BEGIN ed altre istruzioni di blocco non terminate, determinano errori del programma di analisi e la funzione Content Assist non viene fornita. Provare ad utilizzare Content Assist in altre aree intorno all'istruzione in cui non funziona per restringere il punto di errore. In alternativa, salvare il file ESQL; il salvataggio del file causa la convalida e tutti gli errori di sintassi vengono scritti nella vista Attività. Fare riferimento agli errori indicati per comprendere e correggere la sintassi ESQL. Se si utilizza Content Assist per generare la maggior parte delle istruzioni (come ad esempio le istruzioni di blocco), le istruzioni vengono immesse correttamente e si riducono le possibilità di errore.

  5. Una volta terminate le operazioni relative a questo modulo, è possibile chiudere il file ESQL. Salvare il file prima di chiuderlo per conservare tutte le modifiche e convalidare il codice ESQL.

E' possibile aprire il file ESQL direttamente e creare il modulo all'interno di tale file utilizzando l'editor. Procedere nel modo seguente:

  1. Passare alla Prospettiva Sviluppo dell'applicazione broker.
  2. Selezionare il file ESQL in cui si desidera creare il modulo. Fare doppio clic per aprire il file nella vista dell'editor oppure fare clic con il tasto destro del mouse e fare clic su Apri.
  3. Nella vista dell'editor, posizionare il cursore su una nuova riga ed utilizzare Content Assist per selezionare lo skeleton del modulo appropriato per questo tipo di nodo, ad esempio CREATE COMPUTE MODULE END MODULE;. E' possibile digitare il codice, ma verificare che le informazioni digitate siano congruenti con lo skeleton richiesto, sopra illustrato. Si consiglia di utilizzare Content Assist perché in questo modo viene inserito solo codice ESQL valido e vengono inserite le istruzioni finali corrispondenti (ad esempio, END MODULE;) quando richieste.
  4. Completare il codice del modulo.

Indipendentemente dal metodo utilizzato per aprire il file ESQL, tenere presente che l'editor dispone di funzioni che facilitano la scrittura del codice ESQL. Questa sezione fa riferimento a Content Assist, ma nell'editor sono disponibili anche altre funzioni. Per informazioni relative a tali funzioni, consultare Editor ESQL.

Concetti correlati
Panoramica dei flussi di messaggi
Schemi broker
Moduli ESQL
Attività correlate
Sviluppo di flussi di messaggi
Modifica del codice ESQL per un nodo
Modifica delle impostazioni dell'editor ESQL
Riferimenti correlati
Nodi integrati
Riferimento ESQL
Editor ESQL
Informazioni particolari | Marchi | Download | Libreria | Supporto | Commenti
Copyright IBM Corporation 1999, 2006 Ultimo aggiornamento: ago 17, 2006
ak09033_