Sobre a Amostra WBI JDBC Adapter Migration

É possível usar o nó DatabaseInput para migrar fluxos de mensagens fora do uso de Adaptadores WBI JDBC para reagir a atualizações de banco de dados. Isso permite conter toda a complexidade dentro do WebSphere Message Broker. Um fluxo de mensagens que utiliza um Adaptador JDBC WBI normalmente é chamado por um nó MQInput, configurado para aceitar dados de uma fila preenchida por um conector JDBC com um objeto de negócios interpretado por um conjunto de mensagens:

Estrutura de uma Implementação de Adaptador WBI JDBC

Quando uma mudança é feita no banco de dados (INSERT, UPDATE ou DELETE), um acionador é disparado e uma linha que descreve a mudança é inserida na tabela de eventos. Este exemplo insere linhas em uma tabela do cliente.

A figura a seguir mostra a sequência de eventos em um cenário com uma implementação do WBI JDBC Adapter. Quando uma mudança é introduzida na tabela de dados do aplicativo, um acionador é disparado e a tabela de eventos é preenchida com informações suficientes para determinar quais linhas foram alteradas.

Tabela de Aplicativos

PKEY FIRSTNAME LASTNAME CCODE
cust1 Joe Bloggs sales

Tabela de Eventos

EVENT_ID CONNECTOR_ID OBJECT_KEY OBJECT_NAME OBJECT_VERB EVENT_PRIORITY EVENT_TIME EVENT_STATUS EVENT_COMMENT
1 JDBCCustomerConnector cust1 cliente Criar 1 2010-08-02 13:54:16843 0 NULL

Um novo cliente é criado com a chave primária cust1 e o JDBCCustomerConnector é designado para manipular o evento. O manipulador de dados para o conector lê essa linha do evento e cria um objeto de negócios a partir da linha correspondente na tabela de aplicativos. Esse objeto de negócios é colocado em uma fila do WebSphere MQ, pronto para recuperação pelo nó MQInput.

Os detalhes dos fluxos de mensagens e o processamento que eles executam são mostrados nas seções a seguir.

Fluxo de Mensagens Adapter

O fluxo de mensagens Adapter desempenha o seguinte processamento:

  1. Lê uma mensagem do WebSphere MQ que contém uma carga útil XML gerada por um WBI JDBC Adapter. A carga útil contém o objeto de negócios a ser processado.
  2. Decide como processar a mensagem, dependendo de um segmento no cabeçalho RFH2.
  3. Roteia a mensagem para a parte correta do fluxo.
  4. Envia uma Mensagem do WebSphere MQ para uma fila de saída para processamento adicional.
  5. Processa quaisquer erros registrando a mensagem e exceções em uma fila de falhas.

O fluxo de mensagens do Adaptador consiste nos seguintes nós:

Uma captura de tela do fluxo de mensagens do Adaptador.

O nó MQInput lê o Objeto de Negócios recebido no domínio MRM. Esse objeto é mapeado para uma mensagem de saída e colocado em outra fila. Uma mensagem de teste pode ser usada para simular um Adaptador JDBC colocando uma mensagem.

Os formatos da mensagem de entrada estão no projeto Mensagens de Entrada de AdapterMigration. Esses formatos foram criados a partir dos arquivos XSD criados pelo WBI Adapter Business Object Designer.

O fluxo é então modificado, parando o Adaptador, removendo o nó MQInput e incluindo um nó DatabaseInput; projetando a ESQL com cuidado, a mensagem de saída é idêntica ao nó MQInput anterior direcionado pelo Adaptador. Essa alteração torna toda a interação mais simples:

Estrutura de uma Implementação DatabaseInput Node

As tabelas de aplicativos, acionadores e tabelas de eventos existentes permanecem inalterados.

Fluxo de Mensagens MigratedAdapter

O fluxo de mensagens MigratedAdapter é idêntico ao fluxo precedente, mas o nó MQInput é substituído por um nó DatabaseInput equivalente:

Uma captura de tela do fluxo de mensagens MigratedAdapter.

Mensagens e Scripts de Teste

12 mensagens e scripts estão disponíveis nesta amostra:
Observe que os scripts sql de inserção devem ser executados antes dos scripts de atualização ou exclusão e as linhas de endereço e cliente devem ser incluídas antes das faturas para evitar chaves com falha.

  1. Uma mensagem que emula um Manipulador de Dados do Adaptador que coloca uma mensagem em uma fila para uma fatura atualizada
  2. Uma mensagem que emula um Manipulador de Dados do Adaptador que coloca uma mensagem em uma fila para um cliente atualizado
  3. Uma mensagem que emula um Manipulador de Dados do Adaptador que coloca uma mensagem em uma fila para um endereço atualizado
  4. Uma mensagem que emula um Manipulador de Dados do Adaptador que coloca uma mensagem em uma fila para uma fatura excluída
  5. Um script SQL para inserir uma linha na tabela de aplicativos de endereço, cliente e fatura
  6. Um script SQL para inserir uma linha na tabela de aplicativos de endereço
  7. Um script SQL para inserir uma linha na tabela de aplicativos de cliente
  8. Um script SQL para inserir uma linha na tabela de aplicativos de fatura
  9. Um script SQL para atualizar uma linha na tabela de aplicativos de cliente
  10. Um script SQL para excluir uma linha na tabela de aplicativos de fatura
  11. Um script SQL para excluir uma linha na tabela de aplicativos de cliente
  12. Um script SQL para excluir uma linha na tabela de aplicativos de endereço

Mensagem de Fatura do Adaptador

Esta é uma mensagem de cliente de teste do Message Broker que contém o XML e cabeçalhos de uma mensagem do WBI JDBC para uma Fatura atualizada. Ela contém subelementos das tabelas de aplicativos vinculadas Cliente e Endereço. Os cabeçalhos RFH2 especificam que a mensagem é do tipo ADAPTERINVOICE.

Mensagem de Cliente do Adaptador

Esta é uma mensagem de cliente de teste do Message Broker que contém o XML e cabeçalhos de uma mensagem do WBI JDBC para um Cliente atualizado. Ela contém subelementos das tabelas de aplicativos vinculadas Endereço. Os cabeçalhos RFH2 especificam que a mensagem é do tipo ADAPTERCUSTOMER.

Mensagem de Endereço do Adaptador

Esta é uma mensagem de cliente de teste do Message Broker que contém o XML e cabeçalhos de uma mensagem do WBI JDBC para um Endereço atualizado. Os cabeçalhos RFH2 especificam que a mensagem é do tipo ADAPTERADDRESS.

Fatura de Exclusão do Adaptador

Esta é uma mensagem de cliente de teste do Message Broker que contém o XML e cabeçalhos de uma mensagem do WBI JDBC para uma Fatura excluída. Os cabeçalhos RFH2 especificam que a mensagem é do tipo ADAPTERINVOICE.

Script SQL do Adaptador para Inserir todos

INSERT INTO ADAPTER_ADDRESS
  VALUES ('add0', '301', 'Cobblestone Way', '1', 'Bedrock', 'Rock');

INSERT INTO ADAPTER_CUSTOMER
  VALUES ('cust0', 'Fred', 'Flintstone', 'add0', 'Dev');
  
INSERT INTO ADAPTER_INVOICE 
  VALUES ('inv0', 'Paper', 300, 'cust0');

Script SQL do Adaptador para Inserir Endereço

INSERT INTO ADAPTER_ADDRESS
  VALUES ('add1', 'MP211', 'IBM Hursley Park', 'SO21 2JN', 'Winchester', 'GB')

Script SQL do Adaptador para Inserir Cliente

INSERT INTO ADAPTER_CUSTOMER
  VALUES ('cust1', 'Beloved', 'Customer', 'add1', 'GB')

Script SQL do Adaptador para Inserir Fatura

INSERT INTO ADAPTER_INVOICE
  VALUES ('inv1', 'hats', 10, 'cust1')

Script SQL do Adaptador para Atualizar Cliente

UPDATE ADAPTER_CUSTOMER SET FIRSTNAME = 'Barney', LASTNAME = 'Rubble' WHERE PKEY='cust1';

Script SQL do Adaptador para Excluir Endereço

DELETE FROM ADAPTER_ADDRESS WHERE PKEY='add01';

Script SQL do Adaptador para Excluir Cliente

DELETE FROM ADAPTER_CUSTOMER WHERE PKEY='cust01';

Script SQL do Adaptador para Excluir Fatura

DELETE FROM ADAPTER_INVOICE WHERE PKEY='inv1';

Voltar para Home da Amostra