Sobre a Amostra Data Warehouse

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:

Fluxo de Mensagens WarehouseData

O fluxo de mensagens WarehouseData desempenha o seguinte processamento:

  1. Lê uma mensagem do WebSphere MQ que contém uma carga útil XML. A carga útil contém os dados a arquivar.
  2. Converte uma parte da árvore de mensagens em um BLOB pronto para inserção no banco de dados.
  3. Insere a mensagem BLOB e a data e hora em que a mensagem do WebSphere MQ foi gravada em um banco de dados.
  4. Envia uma mensagem de confirmação do WebSphere MQ para sinalizar a inserção bem-sucedida da mensagem no banco de dados.

O fluxo de mensagens WarehouseData consiste dos seguintes nós:

Captura de Tela do Fluxo de Mensagens WarehouseData.

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.

Fluxo de Mensagens VerifyDatabaseContents

O fluxo de mensagens VerifyDatabaseContents desempenha o seguinte processamento:

  1. Lê uma mensagem do WebSphere MQ que contém uma carga útil XML que especifica o intervalo (hora de início e de encerramento) para o qual a contagem dos registros deve ser obtida
  2. Consulta o banco de dados para determinar quantos registros estão presentes para as horas especificadas
  3. Formata a mensagem de resposta
  4. Grava uma mensagem do WebSphere MQ

O fluxo de mensagens VerifyDatabaseContents consiste em um dos seguintes nós:

Captura de Tela do Fluxo de Mensagens VerifyDatabaseContents.

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:

  1. Extrai a data e hora de início e de encerramento a ser usada na consulta do banco de dados a partir da mensagem recebida.
  2. Emite uma instrução SQL SELECT com relação à tabela de banco de dados de archive para determinar quantos registros estão presentes no intervalo de tempo fornecido
  3. Formata uma mensagem de resposta

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.

Mensagens de Teste

Duas mensagens são usadas nesta amostra:

Os exemplos a seguir mostram ambos os tipos de mensagem.

Mensagem a Ser Arquivada

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

Mensagem para Especificar Data e Hora da Procura

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

Voltar para Home da Amostra