DatabaseInput ノードを使用すると、WBI JDBC Adapter を使用するメッセージ・フローをマイグレーションでき、データベースの更新に対応できるようになります。これにより、複雑さをすべて WebSphere Message Broker 内に含めることができます。 WBI JDBC Adapter を使用するメッセージ・フローは通常、MQInput ノードによって呼び出されます。このノードは、メッセージ・セットにより解釈されたビジネス・オブジェクトが JDBC コネクターによって取り込まれたキューからデータを受け入れるように構成されています。
データベースに変更が加えられると (INSERT、UPDATE、または DELETE)、トリガーが起動され、変更を記述する行がイベント表に挿入されます。この例では、行がカスタマー表に挿入されます。
次の図は、WBI JDBC Adapter のデプロイメントで使用するシナリオのイベントのシーケンスを示しています。アプリケーション・データ表に変更が導入されると、トリガーが起動され、変更された行を判別するのに必要な情報がイベント表に取り込まれます。
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 |
主キー「cust1」を持つ新しい顧客が作成され、JDBCCustomerConnector がイベントを処理するよう指定されます。コネクターのデータ・ハンドラーはこの行をイベントから読み取り、アプリケーション表の対応行からビジネス・オブジェクトを作成します。このビジネス・オブジェクトは WebSphere MQ キューに入れられ、MQInput ノードが取り出せる状態になります。
以下のセクションでは、メッセージ・フローの詳細と、メッセージ・フローが実行する処理を示します。
Adapter メッセージ・フローでは、以下の処理を実行します。
Adapter メッセージ・フローは、以下のノードから構成されています。
MQInput ノードは MRM ドメインの着信ビジネス・オブジェクトを読み取ります。このオブジェクトは、出力メッセージにマップされ、別のキューに配置されます。テスト・メッセージを使用して、メッセージを配置する JDBC Adapter を模倣できます。
入力メッセージのフォーマットは、AdapterMigration Input Messages プロジェクト内にあります。 これらのフォーマットは、WBI Adapter ビジネス・オブジェクト・デザイナーによって作成された XSD ファイルから作成されています。
次にこのフローは、Adapter を停止し、MQInput ノードを除去し、DatabaseInput ノードを追加することによって変更されます。ESQL を注意深く設計することにより、出力メッセージは Adapter 主導のこれまでの MQInput ノードとまったく同じになります。この変更により、相互作用全体が単純になります。
既存のアプリケーション表、トリガー、およびイベント表は、変更されないままです。
MigratedAdapter メッセージ・フローは、前述のフローと同じですが、MQInput ノードがそれと等価な DatabaseInput ノードに置き換わっています。
このサンプルでは、12 個のメッセージとスクリプトが利用可能です。
挿入 SQL スクリプトは更新スクリプトまたは削除スクリプトの前に実行し、住所行および顧客行は送り状の前に追加して、キーの障害が起きないようにする必要があることに注意してください。
これは、更新された「Invoice」の WBI JDBC メッセージからの XML およびヘッダーを含むメッセージ・ブローカーのテスト・クライアント・メッセージです。これには、リンクされたアプリケーション表「Customer」および「Address」からのサブエレメントが含まれます。 RFH2 ヘッダーは、メッセージが ADAPTERINVOICE タイプであることを示します。
これは、更新された「Customer」の WBI JDBC メッセージから取得される XML およびヘッダーが含まれるメッセージ・ブローカーのテスト・クライアント・メッセージです。これには、リンクされたアプリケーション表「Address」からのサブエレメントが含まれます。 RFH2 ヘッダーは、メッセージが ADAPTERCUSTOMER タイプであることを示します。
これは、更新された「Address」の WBI JDBC メッセージからの XML およびヘッダーを含むメッセージ・ブローカーのテスト・クライアント・メッセージです。RFH2 ヘッダーは、メッセージが ADAPTERADDRESS タイプであることを示します。
これは、削除された「Invoice」の WBI JDBC メッセージからの XML およびヘッダーを含むメッセージ・ブローカーのテスト・クライアント・メッセージです。RFH2 ヘッダーは、メッセージが 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';