WBI JDBC Adapter Migration サンプルについて

DatabaseInput ノードを使用すると、WBI JDBC Adapter を使用するメッセージ・フローをマイグレーションでき、データベースの更新に対応できるようになります。これにより、複雑さをすべて WebSphere Message Broker 内に含めることができます。 WBI JDBC Adapter を使用するメッセージ・フローは通常、MQInput ノードによって呼び出されます。このノードは、メッセージ・セットにより解釈されたビジネス・オブジェクトが JDBC コネクターによって取り込まれたキューからデータを受け入れるように構成されています。

WBI JDBC Adapter デプロイメントの構造

データベースに変更が加えられると (INSERTUPDATE、または 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 メッセージ・フローでは、以下の処理を実行します。

  1. WBI JDBC Adapter によって生成された XML ペイロードが含まれる WebSphere MQ メッセージを読み取ります。ペイロードには、処理するビジネス・オブジェクトが含まれています。
  2. RFH2 ヘッダーのセグメントに応じて、どのようにメッセージを処理するかを決定します。
  3. メッセージをフローの適切な部分に経路指定します。
  4. さらに処理するために、WebSphere MQ メッセージを出力キューに送信します。
  5. メッセージおよび例外を障害キューに記録することによって、エラーを処理します。

Adapter メッセージ・フローは、以下のノードから構成されています。

Adapter メッセージ・フローの画面取り

MQInput ノードは MRM ドメインの着信ビジネス・オブジェクトを読み取ります。このオブジェクトは、出力メッセージにマップされ、別のキューに配置されます。テスト・メッセージを使用して、メッセージを配置する JDBC Adapter を模倣できます。

入力メッセージのフォーマットは、AdapterMigration Input Messages プロジェクト内にあります。 これらのフォーマットは、WBI Adapter ビジネス・オブジェクト・デザイナーによって作成された XSD ファイルから作成されています。

次にこのフローは、Adapter を停止し、MQInput ノードを除去し、DatabaseInput ノードを追加することによって変更されます。ESQL を注意深く設計することにより、出力メッセージは Adapter 主導のこれまでの MQInput ノードとまったく同じになります。この変更により、相互作用全体が単純になります。

DatabaseInput ノード・デプロイメントの構造

既存のアプリケーション表、トリガー、およびイベント表は、変更されないままです。

MigratedAdapter メッセージ・フロー

MigratedAdapter メッセージ・フローは、前述のフローと同じですが、MQInput ノードがそれと等価な DatabaseInput ノードに置き換わっています。

MigratedAdapter メッセージ・フローの画面取り

テスト・メッセージおよびスクリプト

このサンプルでは、12 個のメッセージとスクリプトが利用可能です。
挿入 SQL スクリプトは更新スクリプトまたは削除スクリプトの前に実行し、住所行および顧客行は送り状の前に追加して、キーの障害が起きないようにする必要があることに注意してください。

  1. 更新された送り状についてキューにメッセージを入れるアダプター・データ・ハンドラーをエミュレートするメッセージ
  2. 更新された顧客についてキューにメッセージを入れるアダプター・データ・ハンドラーをエミュレートするメッセージ
  3. 更新された住所についてキューにメッセージを入れるアダプター・データ・ハンドラーをエミュレートするメッセージ
  4. 削除された送り状についてキューにメッセージを入れるアダプター・データ・ハンドラーをエミュレートするメッセージ
  5. 住所、顧客、および送り状のアプリケーション表に行を挿入するための SQL スクリプト
  6. 住所のアプリケーション表に行を挿入するための SQL スクリプト
  7. 顧客のアプリケーション表に行を挿入するための SQL スクリプト
  8. 送り状のアプリケーション表に行を挿入するための SQL スクリプト
  9. 顧客のアプリケーション表の行を更新するための SQL スクリプト
  10. 送り状のアプリケーション表の行を削除するための SQL スクリプト
  11. 顧客のアプリケーション表の行を削除するための SQL スクリプト
  12. 住所のアプリケーション表の行を削除するための SQL スクリプト

Adapter の送り状メッセージ

これは、更新された「Invoice」の WBI JDBC メッセージからの XML およびヘッダーを含むメッセージ・ブローカーのテスト・クライアント・メッセージです。これには、リンクされたアプリケーション表「Customer」および「Address」からのサブエレメントが含まれます。 RFH2 ヘッダーは、メッセージが ADAPTERINVOICE タイプであることを示します。

Adapter の顧客メッセージ

これは、更新された「Customer」の WBI JDBC メッセージから取得される XML およびヘッダーが含まれるメッセージ・ブローカーのテスト・クライアント・メッセージです。これには、リンクされたアプリケーション表「Address」からのサブエレメントが含まれます。 RFH2 ヘッダーは、メッセージが ADAPTERCUSTOMER タイプであることを示します。

Adapter の住所メッセージ

これは、更新された「Address」の WBI JDBC メッセージからの XML およびヘッダーを含むメッセージ・ブローカーのテスト・クライアント・メッセージです。RFH2 ヘッダーは、メッセージが ADAPTERADDRESS タイプであることを示します。

Adapter の送り状の削除

これは、削除された「Invoice」の WBI JDBC メッセージからの XML およびヘッダーを含むメッセージ・ブローカーのテスト・クライアント・メッセージです。RFH2 ヘッダーは、メッセージが ADAPTERINVOICE タイプであることを示します。

Adapter のすべてを挿入する SQL スクリプト

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');

Adapter の住所を挿入する SQL スクリプト

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

Adapter の顧客を挿入する SQL スクリプト

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

Adapter の送り状を挿入する SQL スクリプト

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

Adapter の顧客を更新する SQL スクリプト

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

Adapter の住所を削除する SQL スクリプト

DELETE FROM ADAPTER_ADDRESS WHERE PKEY='add01';

Adapter の顧客を削除する SQL スクリプト

DELETE FROM ADAPTER_CUSTOMER WHERE PKEY='cust01';

Adapter の送り状を削除する SQL スクリプト

DELETE FROM ADAPTER_INVOICE WHERE PKEY='inv1';

サンプルのホームに戻る