É 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:
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.
PKEY | FIRSTNAME | LASTNAME | CCODE |
---|---|---|---|
cust1 | Joe | Bloggs | sales |
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.
O fluxo de mensagens Adapter desempenha o seguinte processamento:
O fluxo de mensagens do Adaptador consiste nos seguintes nós:
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:
As tabelas de aplicativos, acionadores e tabelas de eventos existentes permanecem inalterados.
O fluxo de mensagens MigratedAdapter é idêntico ao fluxo precedente, mas o nó MQInput é substituído por um nó DatabaseInput equivalente:
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.
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.
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.
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.
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.
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');
INSERT INTO ADAPTER_ADDRESS VALUES ('add1', 'MP211', 'IBM Hursley Park', 'SO21 2JN', 'Winchester', 'GB')
INSERT INTO ADAPTER_CUSTOMER VALUES ('cust1', 'Beloved', 'Customer', 'add1', 'GB')
INSERT INTO ADAPTER_INVOICE VALUES ('inv1', 'hats', 10, 'cust1')
UPDATE ADAPTER_CUSTOMER SET FIRSTNAME = 'Barney', LASTNAME = 'Rubble' WHERE PKEY='cust1';
DELETE FROM ADAPTER_ADDRESS WHERE PKEY='add01';
DELETE FROM ADAPTER_CUSTOMER WHERE PKEY='cust01';
DELETE FROM ADAPTER_INVOICE WHERE PKEY='inv1';