Nodo Compute

Questo argomento contiene le seguenti sezioni:

Scopo

Utilizzare il nodo Compute per creare uno o più nuovi messaggi di output. Questi messaggi di output potrebbero essere creati modificando le informazioni fornite nel messaggio di input o i messaggi di output potrebbero essere creati utilizzando solo nuove informazioni che potrebbero (o meno) essere estratte da un database. Per creare il nuovo messaggio di output si possono utilizzare gli elementi del messaggio di input (ad esempio, intestazioni, campi intestazione e dati relativi al contenuto) l'ambiente associato ed il relativo elenco eccezioni.

Si specifica come sono creati i nuovi messaggi tramite la codifica ESQL nel file di risorse ESQL del flusso di messaggi. E' possibile sia creare che modificare i componenti del messaggio utilizzando le espressioni ESQL e fare riferimento sia agli elementi del messaggio di input che ai dati provenienti da un database esterno. Un'espressione può utilizzare operatori aritmetici, operatori di testo (ad esempio, la concatenazione), operatori logici e altre funzioni integrate.

Utilizzare il nodo Compute per:

  • Creare un nuovo messaggio utilizzando una serie di istruzioni di assegnazione
  • Copiare i messaggi tra i programmi di analisi
  • Convertire i messaggi da una serie di codici ad un'altra
  • Trasformare i messaggi da un formato ad un altro

Si definiscono le istruzioni ESQL in un modulo associato a questo nodo nel file ESQL (.esql) associato a questo flusso di messaggi. E' necessario creare questo file per completare la definizione del flusso di messaggi.

Il nodo Compute è rappresentato nel workbench dalla seguente icona:

Icona del nodo Compute

Utilizzo di questo nodo in un flusso di messaggi

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

Prendere in considerazione un flusso di messaggi in cui si desideri assegnare ad ogni ordine che si riceve un identificativo univoco per motivi di revisione contabile. Il nodo Compute non modifica il messaggio di input; crea una nuova copia modificata del messaggio come messaggio di output. E' possibile utilizzare il nodo Compute per inserire un identificativo univoco per l'ordine nel messaggio di output, che può essere utilizzato dai nodi successivi nel flusso di messaggi.

Configurazione del nodo Compute

Una volta inserita un'istanza del nodo Compute 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 Compute effettuando le seguenti operazioni:

  1. Definizione dell'interazione con il database
  2. Specifica ESQL
  3. Impostazione della modalità
  4. Convalida dei messaggi

Una volta completata la configurazione, fare clic su Applica. In questo modo si apportano modifiche al nodo Compute 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à.

Definizione dell'interazione con il database

Se si desidera accedere ad un database da questo nodo:

  • 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.

  • 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 Compute, è sottoposto a commit se ha esito positivo. Cioè, le azioni definite nel modulo ESQL vengono eseguite sul messaggio e questo 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 Compute sul database dipende dall'esito positivo o negativo dell'intero flusso di messaggi.
    • Commit. Se si desidera eseguire il commit dell'azione del nodo Compute sul database, indipendentemente dall'esito positivo o negativo dell'intero flusso di messaggi, selezionare Commit. L'aggiornamento del database è sottoposto a commit anche se il flusso di messaggi stesso ha esito negativo.

    Il valore scelto è implementato per una o più tabelle di database che sono state aggiunte: non è possibile selezionare un valore diverso per ogni tabella.

  • Selezionare Base nel Navigator della finestra di dialogo delle proprietà e selezionare 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, è necessario 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 nel flusso di messaggi.

Specifica ESQL

Codificare le istruzioni ESQL per personalizzare il funzionamento del nodo Compute. Ad esempio, è possibile personalizzarlo per creare nuovi messaggi di output, utilizzando il messaggio di input o il contenuto del database (immutato o modificato) o nuovi dati. Ad esempio, si potrebbe voler modificare un valore nel messaggio di input aggiungendo un valore estratto da un database e memorizzare il risultato in un campo nel messaggio di output.

Codificare le istruzioni ESQL che si desiderano nel file ESQL associato al flusso di messaggi in cui è stata inclusa questa istanza del nodo Compute. Il file ESQL, che per impostazione predefinita ha il nome <message_flow_name>.esql, contiene ESQL per tutti i nodi nel flusso di messaggi che ne fanno richiesta. 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 Compute e fare clic su Apri ESQL. In questo modo si crea e si apre un nuovo file ESQL nella vista Editor ESQL.

Se il file già esiste, fare clic sul pulsante Sfoglia accanto alla proprietà Modulo ESQL. In questo modo viene visualizzata la finestra di dialogo Selezione modulo, che elenca i moduli disponibili del nodo Compute 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 COMPUTE MODULE <flow_name>_Compute
       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;
Nota: se si desidera distribuire il flusso di messaggi che contiene questo nodo Compute ad un broker la cui versione è precedente alla versione 5.0, è necessario effettuare le seguenti modifiche all'ESQL nello skeleton del modulo descritto in precedenza:
  • Sostituire
    DECLARE I INTEGER 1;
    con
    DECLARE I INTEGER; SET I=1;
  • Sostituire
    DECLARE J INTEGER CARDINALITY(InputRoot.*[]);
    con
    DECLARE J INTEGER; SET J=CARDINALITY(InputRoot.*[]);

Se si crea il proprio modulo ESQL, è necessario creare questo skeleton esattamente come mostrato tranne per le chiamate e le definizioni della procedura (descritte sotto). E' possibile modificare il nome predefinito, ma assicurarsi che il nome specificato corrisponda al nome della proprietà Modulo ESQL del nodo corrispondente. Se si desidera che il nome del modulo includa uno o più spazi, racchiudere il nome tra doppi apici nella proprietà Modulo ESQL.

Aggiungere il proprio ESQL per personalizzare questo nodo dopo l'istruzione BEGIN che segue CREATE FUNCTION e prima di RETURN TRUE. E' possibile utilizzare le due chiamate incluse nello skeleton, per le procedure CopyEntireMessage e CopyMessageHeaders.

Tali procedure, definite seguendo la funzione Main, forniscono funzioni comuni che potrebbero essere utili quando si manipolano i messaggi. Le chiamate nello skeleton sono commentate; rimuovere gli indicatori del commento se si desidera utilizzare la procedura. Se non si desidera utilizzare una procedura, rimuovere sia la chiamata che la definizione della procedura dal modulo.

In rilasci precedenti, le funzioni svolte da queste procedure erano fornite dai due pallini del nodo Compute equivalenti nella finestra di dialogo delle proprietà.

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

Impostazione della modalità

Quando si seleziona la Modalità di calcolo, si specifica se i componenti Message, LocalEnvironment (precedentemente specificato come DestinationList) ed Exception List, generati all'interno del nodo o contenuti all'interno del messaggio in entrata, sono utilizzati per impostazione predefinita nel messaggio di output.

Questa impostazione predefinita viene utilizzata quando il messaggio trasformato viene instradato al terminale Out al completamento dell'elaborazione nel nodo. L'impostazione predefinita è utilizzata anche tutte le volte che un'istruzione PROPAGATE non specifica la composizione del proprio messaggio di output.

Quei componenti che non sono inclusi nella selezione sono trasmessi senza modifiche; anche se si modificano tali componenti, gli aggiornamenti sono locali per questo nodo.

Il componente Environment della struttura ad albero del messaggio non è influenzato dall'impostazione della modalità. Il relativo contenuto, se presente, è trasmesso da questo nodo nel messaggio di output.

E' necessario impostare questa proprietà per riflettere correttamente il formato del messaggio di output richiesto. Se si seleziona un'opzione (o si accetta il valore predefinito) che non include una sezione particolare del messaggio, tale sezione del messaggio non è inclusa in alcun messaggio di output che viene creato.

Le opzioni sono illustrate nella seguente tabella.

Modalità Descrizione
Message (il valore predefinito) Il messaggio viene creato o trasmesso dal nodo Compute come è stato modificato all'interno del nodo.
LocalEnvironment La struttura ad albero LocalEnvironment viene creata o trasmessa attraverso il nodo Compute come è stata modificata all'interno del nodo.
LocalEnvironment e Message La struttura ad albero LocalEnvironment e il messaggio vengono creati o trasmessi dal nodo Compute come sono stati modificati dal nodo.
Exception L'Elenco di eccezioni viene creato o trasmesso dal nodo Compute come è stato modificato dal nodo.
Exception e Message L'Elenco di eccezioni e il messaggio vengono creati o trasmessi dal nodo Compute come sono stati modificati dal nodo.
Exception e LocalEnvironment L'Elenco di eccezioni e la struttura ad albero LocalEnvironment vengono creati o trasmessi dal nodo Compute come sono stati modificati dal nodo.
Tutto Il messaggio, l'Elenco di eccezioni e LocalEnvironment vengono creati o trasmessi dal nodo Compute come sono stati modificati dal nodo.

Poiché il nodo Compute ha un messaggio sia di input che di output, è possibile utilizzare ESQL per fare riferimento ai campi in entrambi. E' possibile gestire anche con InputLocalEnvironment e OutputLocalEnvironment, InputExceptionList e OutputExceptionList, così come con il contenuto del messaggio di input e di output.

Convalida dei messaggi

Impostare le proprietà di convalida per definire la modalità in cui il messaggio prodotto dal nodo Compute debba essere convalidato. Si noti che queste proprietà non hanno come risultato la convalida del messaggio di input. Si prevede che, se tale convalida è richiesta, essa sia stata già eseguita dal nodo di input o da un nodo di convalida precedente.

Per ulteriori dettagli fare riferimento a Convalida dei messaggi e Proprietà della convalida per i messaggi nel dominio MRM.

Terminali e proprietà

I terminali del nodo Compute sono descritti nella seguente tabella.

Terminale Descrizione
In Il terminale di input che accetta un messaggio affinché venga elaborato dal nodo.
Failure Il terminale di output a cui è instradato il messaggio di input se si verifica un'eccezione che non è possibile gestire durante il calcolo.
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 Compute sono descritte nella seguente tabella.

Proprietà O C Valore predefinito Descrizione
Origine dati No   Il nome dell'origine dati ODBC per il database in cui risiedono le tabelle a cui si fa riferimento nel file ESQL associato a questo flusso di messaggi (identificato nella proprietà Modulo ESQL). E' possibile specificare solo un'origine dati per il nodo.
Transazione No Automatico La modalità transazione per il nodo. Questa può avere il valore di Automatico o Commit. E' valida solo se è stata selezionata una tabella di database per l'input.
Modulo ESQL No Compute Il nome del modulo nel file ESQL che contiene le istruzioni da eseguire sul database e i messaggi di input e di output.
Modalità di calcolo No Messaggio Scegliere tra:
  • Messaggio
  • LocalEnvironment
  • LocalEnvironment e Messaggio
  • Eccezione
  • Eccezione e Messaggio
  • Eccezione e LocalEnvironment
  • Tutto
Queste modalità sono spiegate in Impostazione della modalità.
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.

Le proprietà Convalida del nodo Compute sono descritte nella seguente tabella.

Proprietà O C Valore predefinito Descrizione
Convalida Nessuno Indica se viene effettuata la convalida. I valori validi sono Nessuno, Contenuto e valore, Contenuto ed Eredità.
Azione in caso di errore No Eccezione Indica cosa accade se si verifica un errore di convalida. E' possibile impostare questa proprietà solo se Convalida è impostata su Contenuto o Contenuto e valore. I valori validi sono Traccia utente, Registrazione errori locale, Eccezione ed Elenco di eccezioni.
Includi tutti i vincoli valore No Selezionata Questa proprietà non può essere modificata. L'azione predefinita, indicata dalla casella di spunta selezionata, consiste nell'inclusione di tutti i vincoli valore nella convalida.
Correzione No Nessuno Questa proprietà non può essere modificata. Viene fornito un livello di correzione minimo. I valori validi sono Nessuno e Completo.

Le proprietà delle Opzioni generali messaggio per il nodo MQGet sono descritte nella seguente tabella.

Proprietà O C Valore predefinito Descrizione
Intervallo di analisi No Su richiesta Questa proprietà consente di controllare quando viene analizzato un messaggio di input. I valori validi sono Su richiesta, Immediata e Completa.

Fare riferimento ad Analisi su richiesta per una descrizione completa di questa proprietà.

Utilizza programma di analisi compatto MQRFH2C per il dominino MQRFH2 No No False Questa proprietà consente di controllare se viene utilizzato il programma di analisi compatto MQRFH2C, invece del programma di analisi MQRFH2, per le intestazioni MQRFH2.

Le proprietà del programma di analisi XMLNSC per il nodo Compute sono descritte nella seguente tabella.

Proprietà O C Valore predefinito Descrizione
Utilizza programma di analisi compatto XMLNSC per il dominio XMLNS Deselezionata No Inizio modificaSe si imposta tale proprietà, MQRFH2 in uscita specifica il programma di analisi XMLNS anziché XMLNSC, lasciando invariata un'applicazione esterna. Se i messaggi in uscita non contengono intestazioni MQRFH2, questa proprietà non ha alcun effetto.Fine modifica
Modalità di mantenimento contenuto misto No Nessuno Questa proprietà controlla se il programma di analisi XMLNSC crea elementi nella struttura ad albero del messaggio quando rileva testo misto in un messaggio di input. I valori validi sono Nessuno e Tutti. La selezione del valore Tutti indica che gli elementi vengono creati per testo misto. La selezione del valore Nessuno indica che il testo misto viene ignorato e non viene creato alcun elemento.
Modalità di mantenimento commenti No Nessuno Questa proprietà controlla se il programma di analisi XMLNSC crea elementi nella struttura ad albero del messaggio quando rileva commenti in un messaggio di input. I valori validi sono Nessuno e Tutti. La selezione del valore Tutti indica che vengono creati elementi per i commenti. La selezione del valore Nessuno indica che i commenti vengono ignorati e non viene creato alcun elemento.
Modalità di mantenimento delle istruzioni di elaborazione No Nessuno Questa proprietà controlla se il programma di analisi XMLNSC crea elementi nella struttura ad albero del messaggio quando rileva istruzioni di elaborazione in un messaggio di input. I valori validi sono Nessuno e Tutti. La selezione del valore Tutti indica che vengono creati elementi per le istruzioni di elaborazione. La selezione del valore Nessuno indica che le istruzioni di elaborazione vengono ignorate e non viene creato alcun elemento.

Le proprietà Descrizione del nodo Compute sono descritte nella seguente tabella.

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
ac04660_