Questo argomento contiene le seguenti sezioni:
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:
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:
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.
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:
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à.
Se si desidera accedere ad un database da questo nodo:
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.
Il valore scelto è implementato per una o più tabelle di database che sono state aggiunte: non è possibile selezionare un valore diverso per ogni tabella.
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 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.
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;
DECLARE I INTEGER 1;con
DECLARE I INTEGER; SET I=1;
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
.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.
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.
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. |
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 | Sì | 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 | Sì | 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 | Sì | 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 | Sì | No | Messaggio | Scegliere tra:
|
Valuta le avvertenze come errori | Sì | 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 | Sì | 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 | Sì | Sì | Nessuno | Indica se viene effettuata la convalida. I valori validi sono Nessuno, Contenuto e valore, Contenuto ed Eredità. |
Azione in caso di errore | Sì | 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 | Sì | 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 | Sì | 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 | Sì | 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 | Sì | Deselezionata | No | ![]() ![]() |
Modalità di mantenimento contenuto misto | Sì | 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 | Sì | 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 | Sì | 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. |