Informazioni sull'esempio di Data Warehouse

L'esempio di Data Warehouse è un'applicazione di esempio flusso di messaggi che mostra uno scenario in cui un flusso di messaggi viene utilizzato per eseguire l'archiviazione di dati, quali ad esempio dati sulle vendite, in un database.  I dati vengono memorizzati per una successiva analisi da parte di un altro flusso di messaggi o di un'altra applicazione.

Poiché i dati sulle vendite verranno analizzati in una data successiva, la memorizzazione dei messaggi è stata organizzata in modo che sia semplice selezionare record per periodi specificati.  La data e l'ora in cui è stato scritto il messaggio WebSphere MQ contenente il record sulle vendite vengono memorizzate come valori di colonna separati quando il messaggio viene inserito nel database.  La tabella database contiene quattro colonne:

Memorizzando i dati in questo modo è possibile richiamare record compresi entro specifici periodi di tempo, diciamo tra le 9:00 e le 12:00  oppure tra le 12:01 e le 17:00, il che consentirebbe un confronto tra le vendite della mattina e quelle del pomeriggio.

Senza l'utilizzo delle colonne supplementari relative a data e ora, un'applicazione dovrebbe leggere tutti i record dal database, esaminarli tutti, elaborare quelli che rivestono particolare interesse ed eliminare gli altri. La capacità di recuperare record in maniera controllata e precisa evita potenziali sprechi di una grande quantità di elaborazione che sarebbe necessaria in caso di lettura di tutti i record.

L'esempio illustra una tecnica di archiviazione di un messaggio o di parte di esso, in un database. Si tratta del tipo di elaborazione che di solito sarebbe inclusa come parte di un flusso di messaggi più complesso in caso di necessità di archiviare dati.

L'elaborazione nell'esempio consiste di due flussi di messaggi.  I flussi di messaggi sono:

I dettagli dei flussi di messaggi e l'elaborazione da essi eseguita sono descritti nella sezione sottostante.

Flusso di messaggi WarehouseData

Il flusso di messaggi WarehouseData attua la seguente elaborazione.

  1. Legge un messaggio WebSphere MQ contenente un payload XML.  Il payload contiene i dati da archiviare.
  2. Converte una parte dell'albero del messaggio in un BLOB pronto per l'inserimento nel database.
  3. Inserisce il BLOB del messaggio, insieme alla data e all'ora in cui il messaggio WebSphere MQ è stato scritto, in un database.
  4. Invia un messaggio di conferma WebSphere MQ per segnalare l'avvenuto inserimento del messaggio nel database.

Il flusso di messaggi WarehouseData è composto dai seguenti nodi:

Una screen capture del flusso di messaggi WarehouseData.

Il nodo MQInput denominato DATAWAREHOUSE_IN_Q legge il messaggio XML. Poiché il messaggio in entrata è in formato XML a definizione automatica, non è necessario specificare una serie di messaggi o un formato per poter analizzare correttamente questo messaggio.

Il nodo Compute denominato Warehouse_Input_Message converte l'intero payload del messaggio (ROOT.XML) in un BLOB utilizzando la funzione ASBITSTREAM, inserisce il messaggio in un database ed infine formatta il messaggio di conferma.

Il nodo MQOutput denominato DATAWAREHOUSE_OUT_Q scrive il messaggio di output come messaggio WebSphere MQ.

Se si dovesse presentare un errore durante l'elaborazione del database, verrà formattato un messaggio nel nodo Compute denominato Create_Error_Message e verrà scritto nel nodo MQOutput denominato DATAWAREHOUSE_FAILURE_Q come messaggio WebSphere MQ.

Flusso di messaggi VerifyDatabaseContents

Il flusso di messaggi VerifyDatabaseContents attua la seguente elaborazione:

  1. Legge un messaggio WebSphere MQ che contiene un payload XML che specifica l'intervallo (ora di inizio e di fine) per cui deve essere ottenuto un conteggio dei record.
  2. Esegue una query del database per stabilire quanti record sono presenti per i periodi specificati.
  3. Formatta il messaggio di risposta.
  4. Scrive un messaggio WebSphere MQ.

Il flusso di messaggi VerifyDatabaseContents è composto dai seguenti nodi:

Una screen capture del flusso di messaggi VerifyDatabaseContents.

Il nodo MQInput denominato DATAWAREHOUSE_VERIFY_CONTENTS_IN_Q legge il messaggio XML. Poiché il messaggio in entrata è in formato XML a definizione automatica, non è necessario specificare una serie di messaggi o un formato per poter analizzare correttamente questo messaggio.

Il nodo Compute denominato Verify_Contents esegue queste azioni:

  1. Estrae, dal messaggio in entrata, la data e l'ora di inizio e di fine da utilizzare nella query del database.
  2. Emette un'istruzione SQL SELECT rispetto alla tabella database di archivio per stabilire quanti record sono presenti nell'intervallo di tempo specificato.
  3. Formatta un messaggio di risposta

Il nodo MQOutput denominato DATAWAREHOUSE_VERIFY_CONTENTS_OUT_Q scrive il messaggio di output WebSphere MQ.

Se si dovesse presentare un errore durante l'elaborazione del database, verrà formattato un messaggio nel nodo Compute denominato Create_Error_Message e verrà scritto nel nodo MQOutput denominato DATAWAREHOUSE_FAILURE_Q come messaggio WebSphere MQ.

Messaggi di prova

In questo esempio vengono utilizzati due messaggi.  Il primo è un messaggio che verrà archiviato ed il secondo è un messaggio per specificare la data e gli orari che il flusso di messaggi Verify Database Content dovrà utilizzare. Esempi di entrambi i messaggi vengono riportati di seguito.

Messaggio da archiviare

<SaleEnvelope>
<Header>
<SaleListCount>1</SaleListCount>
</Header>
<SaleList>
<Invoice>
<Initial>K</Initial>
<Initial>A</Initial>
<Surname>Braithwaite</Surname>
<Item>
<Code>00</Code>
<Code>01</Code>
<Code>02</Code>
<Description>Twister</Description>
<Category>Giochi</Category>
<Price>00,30</Price>
<Quantity>01</Quantity>
</Item>
<Item>
<Code>02</Code>
<Code>03</Code>
<Code>01</Code>
<Description>Il quotidiano The Times</Description>
<Category>Libri e Media</Category>
<Price>00,20</Price>
<Quantity>01</Quantity>
</Item>
<Balance>00,50</Balance>
<Currency>Sterlina</Currency>
</Invoice>
<Invoice>
<Initial>T</Initial>
<Initial>J</Initial>
<Surname>Dunnwin</Surname>
<Item>
<Code>04</Code>
<Code>05</Code>
<Code>01</Code>
<Description>L'origine delle specie</Description>
<Category>Libri e Media</Category>
<Price>22,34</Price>
<Quantity>02</Quantity>
</Item>
<Item>
<Code>06</Code>
<Code>07</Code>
<Code>01</Code>
<Description>Microscopio</Description>
<Category>Varie</Category>
<Price>36,20</Price>
<Quantity>01</Quantity>
</Item>
<Balance>81,84</Balance>
<Currency>Euro</Currency>
</Invoice>
</SaleList>
<Trailer>
<CompletionTime>12.00.00</CompletionTime>
</Trailer>
</SaleEnvelope>

Messaggio per specificare data e ora della ricerca

<Archive_Query>
<Start_Time>
<Day>gg/mm/aaaa</Day>
<Time>hh:mm:ss</Time>
</Start_Time>
<End_Time>
<Day>gg/mm/aaaa</Day>
<Time>hh:mm:ss</Time>
</End_Time>
</Archive_Query>

icona Pagina principale   Torna alla pagina home dell'esempio