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.
Como os dados de vendas são analisados em uma data posterior, o armazenamento das mensagens foi organizado de uma forma que facilita a seleção de registros para horas especificadas. A data e a hora em que a mensagem do WebSphere MQ, que contém o registro de vendas, foi gravada são armazenadas como valores de coluna separados quando a mensagem é inserida no banco de dados. A tabela de banco de dados contém quatro colunas:
Ao armazenar os dados dessa forma, é possível recuperar registros entre períodos de tempo específicos, digamos entre 9:00 a.m. e 12:00 ou 12:01 e 17:00, o que permitiria fazer a comparação de vendas no período da manhã e à tarde.
Sem o uso das colunas de data e hora adicionais, um aplicativo teria que ler todos os registros do banco de dados, examiná-los, processar os que forem de interesse e descartar o restante. A capacidade de recuperar registros de uma maneira controlada e precisa evita potencialmente o desperdício de uma grande quantidade de processamento, o que resultaria se todos os registros precisassem ser lidos.
A amostra ilustra uma técnica para arquivar uma mensagem, ou parte dela, em um banco de dados. Esse é o tipo de processamento que normalmente seria incluído como parte de um fluxo de mensagens mais complexo quando houvesse necessidade de arquivar dados.
O processamento na amostra consiste em dois fluxos de mensagens. Os fluxos de mensagens são:
Os detalhes dos fluxos de mensagens e o processamento que eles executam estão descritos abaixo.
O fluxo de mensagens Warehousedata executa o seguinte processamento.
O fluxo de mensagens WarehouseData consiste dos seguintes nós:
O nó MQInput DATAWAREHOUSE_IN_Q lê a mensagem XML. Como a mensagem que chega está em um formato XML autodefinido, não existe necessidade de especificar um conjunto de mensagens ou formato para ela ser analisada com êxito.
O nó Compute Warehouse_Input_Message converte toda a carga útil da mensagem (ROOT.XML) em um BLOB utilizando a função ASBITSTREAM, insere a mensagem em um banco de dados e, finalmente, formata a mensagem de confirmação.
O nó MQOutput DATAWAREHOUSE_OUT_Q grava a mensagem de saída como uma mensagem do WebSphere MQ.
Se surgir um erro durante o processamento do banco de dados, uma mensagem será formatada no nó Compute Create_Error_Message e gravada no nó MQOutput DATAWAREHOUSE_FAILURE_Q como uma mensagem do WebSphere MQ.
O fluxo de mensagens VerifyDatabaseContents executa o seguinte processamento:
O fluxo de mensagens VerifyDatabaseContents consiste em um dos seguintes nós:
O nó MQInput DATAWAREHOUSE_VERIFY_CONTENTS_IN_Q lê a mensagem XML. Como a mensagem que chega está em um formato XML autodefinido, não existe necessidade de especificar um conjunto de mensagens ou formato para ela ser analisada com êxito.
O nó Compute Verify_Contents executa as seguintes ações:
O nó MQOutput DATAWAREHOUSE_VERIFY_CONTENTS_OUT_Q grava a mensagem de saída do WebSphere MQ.
Se surgir um erro durante o processamento do banco de dados, uma mensagem será formatada no nó Compute Create_Error_Message e gravada no nó MQOutput DATAWAREHOUSE_FAILURE_Q como uma mensagem do WebSphere MQ.
Duas mensagens são utilizadas nesta amostra. A primeira é uma mensagem que será arquivada e a segunda é uma mensagem para especificar a data e a hora a a serem utilizadas pelo fluxo de mensagens Verificar o Conteúdo do Banco de Dados. Seguem abaixo exemplos para as duas mensagens.
<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>