Mit dem DatabaseInput-Knoten können Sie Nachrichtenflüsse migrieren, damit diese anstelle von WBI JDBC-Adaptern auf Datenbankaktualisierungen reagieren. Auf diese Weise kann die gesamte Komplexität innerhalb von Message Broker eingebunden werden. Ein Nachrichtenfluss, der einen WBI JDBC-Adapter nutzt, wird für gewöhnlich von einem MQInput-Knoten aufgerufen, der für die Annahme von Daten konfiguriert wurde, die aus einer Warteschlange stammen, welche von einem JDBC-Connector mit einem durch eine Nachrichtengruppe interpretierten Geschäftsobjekt gefüllt wird:
Sobald eine Änderung (INSERT, UPDATE oder DELETE) an der Datenbank vorgenommen wird, wird ein Auslöser gestartet und eine Zeile in die Ereignistabelle eingefügt, in der die Änderung beschrieben wird. Bei diesem Beispiel werden in eine Kundentabelle Zeilen eingefügt.
Die folgende Abbildung enthält die Ereignisfolge in einem Szenario mit einer WBI JDBC Adapter-Implementierung. Sobald eine Änderung an der Anwendungsdatentabelle stattfindet, wird ein Auslöser gestartet. Die Ereignistabelle wird dann mit so vielen Informationen gefüllt, dass die Ermittlung der geänderten Zeilen möglich ist.
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 | customer | Create | 1 | 2010-08-02 13:54:16843 | 0 | NULL |
Ein neuer Kunde wird mit dem Primärschlüssel cust1 erstellt und JDBCCustomerConnector wird für die Handhabung des Ereignisses festgelegt. Der Datenhandler für den Connector liest diese Zeile aus dem Ereignis und erstellt ein Geschäftsobjekt aus der entsprechenden Zeile in der Anwendungstabelle. Dieses Geschäftsobjekt wird in eine WebSphere MQ-Warteschlange gestellt und kann jederzeit vom MQInput-Knoten abgerufen werden.
Die Nachrichtenflüsse und die von ihnen ausgeführte Verarbeitung werden in den folgenden Abschnitten näher erläutert.
Der Adapternachrichtenfluss führt folgende Verarbeitung aus:
Der Nachrichtenfluss 'Adapter' besteht aus folgenden Knoten:
Der MQInput-Knoten liest das eingehende Geschäftsobjekt in der MRM-Domäne. Dieses Objekt wird einer Ausgabenachricht zugeordnet und in eine andere Warteschlange gestellt. Mithilfe einer Testnachricht kann ein JDBC-Adapter imitiert werden, der eine Nachricht einreiht.
Eingabenachrichtenformate befinden sich im Projekt AdapterMigration Input Messages. Diese Formate wurden über die XSD-Dateien erstellt, die wiederum vom WBI Adapter Business Object Designer erstellt wurden.
Der Fluss wird dann geändert, indem der Adapter gestoppt, der MQInput-Knoten entfernt und ein DatabaseInput-Knoten hinzugefügt wird; durch eine sorgfältige Entwicklung des Extended SQL ist die Ausgabenachricht mit dem vorherigen, vom Adapter gesteuerten, MQInput-Knoten identisch. Durch diese Änderung wird die Gesamtinteraktion einfacher:
Die vorhandenen Anwendungstabellen, Auslöser und die bestehende Ereignistabelle bleiben unverändert.
Der Nachrichtenfluss 'MigratedAdapter' ist mit dem vorherigen Fluss identisch, allerdings wurde der MQInput-Knoten durch einen funktional entsprechenden DatabaseInput-Knoten ersetzt:
In diesem Mustercode stehen zwölf Nachrichten und Scripts zur Verfügung:
Beachten Sie, dass die SQL-Scripts zum Einfügen vor den Scripts zum Aktualisieren oder Löschen ausgeführt werden sollten. Außerdem sollten die Zeilen für Adressen und Kunden vor denjenigen für Rechnungen hinzugefügt werden, um fehlschlagende Schlüssel zu vermeiden.
Dies ist eine Message Broker-Testclientnachricht, die den XML-Code und die Header einer WBI JDBC-Nachricht für eine aktualisierte Rechnung (Invoice) enthält. Sie umfasst Unterelemente aus den verknüpften Anwendungstabellen Customer (Kunde) und Address (Adresse). Die RFH2-Header geben an, dass die Nachricht den Typ ADAPTERINVOICE aufweist.
Dies ist eine Message Broker-Testclientnachricht, die den XML-Code und die Header einer WBI JDBC-Nachricht für einen aktualisierten Kunden (Customer) enthält. Sie umfasst Unterelemente aus den verknüpften Anwendungstabellen des Typs Address (Adresse). Die RFH2-Header geben an, dass die Nachricht den Typ ADAPTERCUSTOMER aufweist.
Dies ist eine Message Broker-Testclientnachricht, die den XML-Code und die Header einer WBI JDBC-Nachricht für eine aktualisierte Adresse (Address) enthält. Die RFH2-Header geben an, dass die Nachricht den Typ ADAPTERADDRESS aufweist.
Dies ist eine Message Broker-Testclientnachricht, die den XML-Code und die Header einer WBI JDBC-Nachricht für eine gelöschte Rechnung (Invoice) enthält. Die RFH2-Header geben an, dass die Nachricht den Typ ADAPTERINVOICE aufweist.
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';