Nodo Database

Scopo

Utilizzare il nodo Database per interagire con un database nell'origine dati ODBC specificata. La natura dell'interazione viene definita codificando le istruzioni ESQL che specificano i dati dal messaggio di input ed eventualmente li trasformano in qualche modo (ad esempio, per eseguire un calcolo) ed assegnano il risultato ad una tabella di database.

E' possibile impostare una proprietà per controllare se l'aggiornamento al database è sottoposto a commit immediatamente o se questa operazione è rimandata fino al completamento del flusso di messaggi, a quel punto l'aggiornamento è sottoposto a commit o rollback in base allo stato di completamento generale del flusso di messaggi.

Sebbene sia possibile utilizzare questo nodo per aggiornare il database, non è possibile effettuare alcun aggiornamento sul messaggio.

E' possibile utilizzare versioni specializzate di questo nodo per:
  • Aggiornare i valori all'interno di una tabella di database (il nodo DataUpdate)
  • Inserire righe in una tabella di database (il nodo DataInsert)
  • Eliminare righe da una tabella di database (il nodo DataDelete)
  • Memorizzare il messaggio o parti del messaggio, in un archivio (il nodo Warehouse)

Il nodo Database è rappresentato nel workbench dalla seguente icona:

Icona del nodo Database

Utilizzo di questo nodo in un flusso di messaggi

Fare riferimento ai seguenti esempi per capire come utilizzare questo nodo:

Prendere in considerazione una situazione in cui si riceva un ordine di 20 monitor. Se in magazzino si dispone di un numero sufficiente di monitor, si vorrà diminuire il livello di merce in magazzino nel database della merce in magazzino. E' possibile utilizzare il nodo Database per controllare se i monitor disponibili sono sufficienti e diminuire il valore del campo relativo alla quantità nel database.

Configurazione del nodo Database

Una volta inserita un'istanza del nodo Database in un flusso di messaggi, è possibile configurarla. Fare clic con il tasto destro del mouse sul nodo nella vista dell'editor e fare clic su Proprietà. Vengono visualizzate le proprietà base del nodo.

Tutte le proprietà obbligatorie, per le quali è necessario immettere un valore (quelle per le quali non è specificato un valore predefinito), sono contrassegnate con un asterisco nella finestra di dialogo delle proprietà.

Configurare il nodo Database come segue:

  1. Specificare in Origine dati il nome con il quale il database appropriato viene riconosciuto nel sistema su cui deve essere eseguito questo flusso di messaggi. Il broker si connette a questo database con le informazioni relative all'ID utente e password specificati nel comando mqsicreatebroker, mqsichangebroker o mqsisetdbparms.

    Sui sistemi z/OS, il broker utilizza l'ID dell'attività avviata dal broker o l'ID utente e la password specificati nel JCL del comando mqsisetdbparms, BIPSDBP nel data set di personalizzazione <hlq>.SBIPPROC.

  2. In Istruzione, identificare il modulo all'interno di un file ESQL che contiene le istruzioni ESQL da eseguire in questo nodo. Se si desidera che il nome del modulo includa uno o più spazi, racchiudere il nome tra doppi apici nella proprietà Istruzione.

    Quando si codificano istruzioni ESQL che interagiscono con le tabelle, si presuppone che tali tabelle esistano all'interno di questo database. Se non è così, viene generato un errore di database dal broker durante il runtime.

    Codificare le istruzioni ESQL per personalizzare il funzionamento del nodo Database in un file ESQL associato al flusso di messaggi in cui è stata inclusa questa istanza del nodo Database. Il file ESQL, che per impostazione predefinita ha il nome <message_flow_name>.esql, contiene ESQL per ogni nodo nel flusso di messaggi che lo richieda. Ogni parte del codice correlata ad un nodo specifico è nota come modulo.

    Se non esiste ancora un file ESQL per questo flusso di messaggi, fare clic con il tasto destro del mouse sul nodo Database e fare clic su Apri ESQL. In questo modo si crea e si apre un nuovo file ESQL nella vista Editor ESQL.

    Se un file ESQL già esiste, fare clic sul pulsante Sfoglia accanto alla proprietà Istruzione. In questo modo viene visualizzata la finestra di dialogo Selezione modulo, che elenca i moduli disponibili del nodo Database nei file ESQL a cui può accedere questo flusso di messaggi (i file ESQL possono essere definiti in altri progetti dipendenti). Selezionare il modulo appropriato e fare clic su OK. Se non sono disponibili moduli adatti, l'elenco è vuoto.

    Se il modulo specificato non esiste, esso viene creato e l'editor posiziona il file in modo da visualizzarlo. Se il file e il modulo già esistono, l'editor posiziona il file e visualizza ed evidenzia il modulo corretto.

    Se si preferisce, è possibile aprire il file ESQL appropriato nel Navigator risorse e selezionare questo nodo nella vista Profilo.

    Se si crea uno skeleton del modulo per questo nodo in un file ESQL nuovo o esistente, questo consiste nel seguente ESQL. In questo esempio è riportato il nome del modulo predefinito:

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

    Se si crea il proprio modulo ESQL, creare esattamente questo skeleton. E' possibile aggiornare il nome predefinito, ma assicurarsi che il nome specificato corrisponda al nome della proprietà Istruzione del nodo corrispondente.

    Aggiungere il proprio ESQL per personalizzare questo nodo dopo l'istruzione BEGIN e prima di RETURN TRUE.

    E' possibile creare un file ESQL anche facendo clic su File > Nuovo > File ESQL del flusso di messaggi.

    È possibile utilizzare tutte le istruzioni ESQL comprese SET, WHILE, DECLARE e IF in questo modulo, ma (a differenza del nodo Compute) il nodo Database trasmette il messaggio che riceve sul proprio terminale di input al terminale di output senza modifiche. Questo significa che, come per il nodo Filter, si dispone di un solo messaggio a cui fare riferimento in un nodo Database.

    Poiché non è possibile modificare sezioni di alcun messaggio, l'istruzione di assegnazione (l'istruzione SET, non la clausola SET dell'istruzione INSERT) può assegnare valori solo alle variabili temporanee. L'ambito delle azioni che si possono intraprendere con un'istruzione di assegnazione è quindi limitato.

    Se si preferisce, è possibile aprire il file ESQL appropriato nel Navigator risorse e selezionare questo nodo nella vista Profilo.

  3. Selezionare l'impostazione Transazione dal menu a discesa. I valori sono:
    • Automatico (il valore predefinito). Il flusso di messaggi, di cui fa parte il nodo Database, è sottoposto a commit se ha esito positivo. Cioè, le azioni definite nel modulo ESQL vengono eseguite e il messaggio continua attraverso il flusso di messaggi. Se il flusso di messaggi ha esito negativo, viene sottoposto a rollback. Se si sceglie Automatico, la capacità di eseguire il commit o il rollback dell'azione del nodo Database sul database dipende dall'esito positivo o negativo dell'intero flusso di messaggi.
    • Commit. Se si desidera eseguire il commit di azioni non sottoposte a commit, eseguite in questo flusso di messaggi, nel database connesso a questo nodo, indipendentemente dall'esito positivo o negativo dell'intero flusso di messaggi, selezionare Commit. Le modifiche al database sono sottoposte a commit anche se il flusso di messaggi stesso ha esito negativo.
  4. Selezionare Base nel Navigator della finestra di dialogo delle proprietà e impostare o deselezionare le due caselle di spunta:
    • Se si desidera che i messaggi di avvertenza del database vengano considerati come errori e che il nodo trasmetta il messaggio di output al terminale failure, selezionare la casella di spunta Valuta le avvertenze come errori. La casella è inizialmente deselezionata.

      Quando si seleziona tale casella, il nodo gestisce tutti i codici di ritorno positivi provenienti dal database come errori e genera eccezioni nello stesso modo in cui gestisce gli errori negativi o più gravi.

      Se non si seleziona la casella, il nodo considera le avvertenze come codici di ritorno normali e non genera alcuna eccezione. L'avvertenza più significativa è non trovato, che può essere gestita come un codice di ritorno normale senza alcun rischio, nella maggior parte dei casi.

    • Se si desidera che il broker generi un'eccezione quando si rileva un errore di database, selezionare la casella di spunta Genera eccezione in caso di errore database. La casella è inizialmente selezionata.

      Se si deseleziona tale casella, includere ESQL per verificare la presenza di eventuali errori di database che potrebbero essere restituiti dopo ogni chiamata fatta al database (per fare ciò, è possibile utilizzare SQLCODE e SQLSTATE). Se si è verifica un errore, è necessario gestire l'errore nel flusso di messaggi per garantire l'integrità del broker e del database: l'errore viene ignorato se non lo si gestisce con la propria elaborazione, poiché si è scelto di non richiamare la gestione errori predefinita da parte del broker. Ad esempio, è possibile includere l'istruzione ESQL THROW per generare un'eccezione in questo nodo o utilizzare il nodo Throw per generare la propria eccezione in un punto successivo.

  5. Selezionare Descrizione nel Navigator della finestra di dialogo delle proprietà per immettere una descrizione breve, una descrizione completa o entrambe.
  6. Fare clic su Applica per effettuare le modifiche al nodo Database senza chiudere la finestra di dialogo delle proprietà. Fare clic su OK per applicare le modifiche e chiudere la finestra di dialogo delle proprietà.

    Fare clic su Annulla per chiudere la finestra di dialogo ed eliminare tutte le modifiche apportate alle proprietà.

Terminali e proprietà

Nella tabella riportata di seguito vengono descritti i terminali del nodo Database.

Terminale Descrizione
In Il terminale di input che accetta un messaggio affinché venga elaborato dal nodo.
Failure Il terminale di output a cui è trasmesso il messaggio di input, se si rileva un errore durante il calcolo. Se è stata selezionata l'opzione Valuta le avvertenze come errori, il nodo trasmette il messaggio a questo terminale anche se l'elaborazione termina con esito positivo.
Out Il terminale di output a cui è instradato il messaggio trasformato quando l'elaborazione nel nodo è completata. Il messaggio trasformato potrebbe essere instradato a questo terminale anche da un'istruzione PROPAGATE.
Out1 Il primo terminale di output alternativo a cui potrebbe essere instradato il messaggio trasformato da un'istruzione PROPAGATE.
Out2 Il secondo terminale di output alternativo a cui potrebbe essere instradato il messaggio trasformato da un'istruzione PROPAGATE.
Out3 Il terzo terminale di output alternativo a cui potrebbe essere instradato il messaggio trasformato da un'istruzione PROPAGATE.
Out4 Il quarto terminale di output alternativo a cui potrebbe essere instradato il messaggio trasformato da un'istruzione PROPAGATE.
Nota: consultare Istruzione PROPAGATE per la sintassi dell'istruzione PROPAGATE.

Le seguenti tabelle descrivono le proprietà del nodo; la colonna con l'intestazione O indica se la proprietà è obbligatoria (contrassegnata con un asterisco nella finestra di dialogo delle proprietà, se è necessario immettere un valore quando non è specificato un valore predefinito), la colonna con l'intestazione C indica se la proprietà è configurabile (è possibile modificare il valore quando si aggiunge un flusso di messaggi a un file bar per distribuirlo).

Le proprietà base del nodo Database sono descritte nella seguente tabella.

Proprietà O C Valore predefinito Descrizione
Origine dati No   Il nome dell'origine dati ODBC del database in cui risiedono le tabelle a cui si fa riferimento nell'ESQL associato a questo nodo (identificato dalla proprietà Istruzione).
Istruzione No Database Il nome del modulo nel file ESQL che contiene le istruzioni da eseguire sul database.
Transazione No Automatico La modalità transazione per il nodo. Questa può avere il valore di Automatico o Commit.
Valuta le avvertenze come errori No Deselezionata Indica di valutare le avvertenze SQL del database come errori. Questa azione viene eseguita se si seleziona la casella di spunta.
Genera eccezione in caso di errore database No Selezionata Gli errori di database fanno sì che il broker generi un'eccezione. Questa azione viene eseguita se si seleziona la casella di spunta.

Nella tabella riportata di seguito vengono descritte le proprietà di Descrizione del nodo Database.

Proprietà O C Valore predefinito Descrizione
Descrizione breve No No   Una breve descrizione del nodo.
Descrizione completa No No   Testo che descrive lo scopo del nodo nel flusso di messaggi.
Informazioni particolari | Marchi | Download | Libreria | Supporto | Commenti
Copyright IBM Corporation 1999, 2006 Ultimo aggiornamento: ago 17, 2006
ac04670_