A amostra Data Warehouse é um aplicativo de amostra do fluxo de mensagens que demonstra um cenário no qual um fluxo de mensagens é utilizado para executar o arquivamento de dados, como dados de vendas, em um banco de dados. Os dados são armazenados para análise posterior por outro fluxo de mensagens ou aplicativo.
Devido aos dados de vendas serem analisados em uma data posterior, o armazenamento das mensagens é organizado de um modo que facilite selecionar registros para tempos específicos. Quando a mensagem é inserida no banco de dados, a data e hora na qual a mensagem do WebSphere MQ que contém o registro de vendas foi gravada são armazenadas como valores separados por vírgulas. A tabela de banco de dados contém quatro colunas:
Armazenando os dados dessa forma, é possível recuperar registros entre períodos de tempo específicos, por exemplo, entre os horários de 9h a 12h ou 12h01 e 17h, o que permite uma comparação entre vendas a serem feitas no período da manhã e da tarde.
Sem o uso da coluna de data e hora adicional, um aplicativo deve ler todos os registros do banco de dados, examiná-los, processar os registros desejados e descartar o restante. A capacidade de recuperar registros de maneira controlada e precisa evita, potencialmente, desperdiçar uma grande quantidade de processamento, o que é o resultado se todos os registros precisarem ser lidos.
A amostra ilustra uma técnica para arquivar uma mensagem, ou parte dela, em um banco de dados. Esse tipo de processamento é normalmente incluído como parte de um fluxo de mensagens mais complexo quando for necessário arquivar os dados.
O processamento na amostra consiste de dois fluxos de mensagens:
Os detalhes dos fluxos de mensagens e o processamento que eles desempenham são mostrados nas seções a seguir:
O fluxo de mensagens WarehouseData desempenha o seguinte processamento:
O fluxo de mensagens WarehouseData consiste dos seguintes nós:
O nó MQInput Data_Warehouse_In_Q lê a mensagem XML. Como a mensagem que chega está em um formato XML autodefinido, não há necessidade de especificar um conjunto de mensagens ou um formato para que ela seja analisada com êxito.
O nó Compute Warehouse_Input_Message converte a totalidade da carga útil da mensagem (ROOT.XMLNSC) em um BLOB usando a função ASBITSTREAM, insere a mensagem em um banco de dados e finalmente formata a mensagem de confirmação.
O nó MQOutput Data_Warehouse_Out_Q grava a mensagem de saída como uma mensagem do WebSphere MQ.
Se ocorrer um erro durante o processamento do banco de dados, uma mensagem será formatada no nó Compute Create_Error_Message e gravada no nó Data_Warehouse_Failure_Q MQOutput como uma mensagem do WebSphere MQ.
O fluxo de mensagens VerifyDatabaseContents desempenha o seguinte processamento:
O fluxo de mensagens VerifyDatabaseContents consiste em um dos seguintes nós:
O nó MQInput Data_Warehouse_Verify_Contents_In_Q lê a mensagem XML. Como a mensagem que chega está em um formato XML autodefinido, não há necessidade de especificar um conjunto de mensagens ou um formato para que ela seja analisada com êxito.
O nó Compute Verify_Contents desempenha as seguintes ações:
O nó MQOutput Data_Warehouse_Verify_Contents_Out_Q grava a mensagem de saída do WebSphere MQ.
Se ocorrer um erro durante o processamento do banco de dados, uma mensagem será formatada no nó Compute Create_Error_Message e gravada no nó Data_Warehouse_Failure_Q MQOutput como uma mensagem do WebSphere MQ.
Duas mensagens são usadas nesta amostra:
Os exemplos a seguir mostram ambos os tipos de mensagem.
<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>Games</Category>
<Price>00.30</Price>
<Quantity>01</Quantity>
</Item>
<Item>
<Code>02</Code>
<Code>03</Code>
<Code>01</Code>
<Description>The Times Newspaper</Description>
<Category>Books and Media</Category>
<Price>00.20</Price>
<Quantity>01</Quantity>
</Item>
<Balance>00.50</Balance>
<Currency>Sterling</Currency>
</Invoice>
<Invoice>
<Initial>T</Initial>
<Initial>J</Initial>
<Surname>Dunnwin</Surname>
<Item>
<Code>04</Code>
<Code>05</Code>
<Code>01</Code>
<Description>The Origin of Species</Description>
<Category>Books and Media</Category>
<Price>22.34</Price>
<Quantity>02</Quantity>
</Item>
<Item>
<Code>06</Code>
<Code>07</Code>
<Code>01</Code>
<Description>Microscope</Description>
<Category>Miscellaneous</Category>
<Price>36.20</Price>
<Quantity>01</Quantity>
</Item>
<Balance>81.84</Balance>
<Currency>Euros</Currency>
</Invoice>
</SaleList>
<Trailer>
<CompletionTime>12.00.00</CompletionTime>
</Trailer>
</SaleEnvelope>
<Archive_Query>
<Start_Time>
<Day>mm/dd/yyyy</Day>
<Time>hh:mm:ss</Time>
</Start_Time>
<End_Time>
<Day>mm/dd/yyyy</Day>
<Time>hh:mm:ss</Time>
</End_Time>
</Archive_Query>