コネクターの動作方法

このセクションでは、メタデータによってコネクターの柔軟性がどのように拡張されるかについて説明し、ビジネス・オブジェクトの処理およびイベント通知について概説します。

コネクターおよびメタデータ

コネクターは、メタデータ主導型です。IBM WebSphere Business Integration Server Express and Express Plus 環境では、メタデータとは、コネクターとアプリケーションの相互作用を支援する、ビジネス・オブジェクトに格納されたアプリケーション固有のデータです。メタデータ主導型コネクターは、サポートする各ビジネス・オブジェクトを処理する際に、コネクター内にハードコーディングされた命令ではなく、ビジネス・オブジェクト定義にエンコードされたメタデータに基づいて処理を行います。

ビジネス・オブジェクトのメタデータには、そのビジネス・オブジェクトの構造の他、そのビジネス・オブジェクトにおける属性プロパティーの設定やアプリケーション固有情報の内容が組み込まれています。コネクターはメタデータ主導型であるため、新規の、または変更されたビジネス・オブジェクトを、コネクター・コードの変更を必要とせずに処理することができます。

コネクターは、SQL ステートメントまたはストアード・プロシージャーを実行して、データベースやアプリケーションに含まれるデータを検索または変更します。コネクターでは、動的 SQL ステートメントまたはストアード・プロシージャーの作成のために、アプリケーション固有のメタデータが使用されます。作成された SQL ステートメントおよびストアード・プロシージャーは、コネクターが処理するビジネス・オブジェクトおよび動詞に必要な、データベースやアプリケーションの検索または変更を実行します。アプリケーション固有の情報の使用については、コネクターのビジネス・オブジェクトについてを参照してください。

ビジネス・オブジェクトの処理

このセクションでは、コネクターが、ビジネス・オブジェクトからの要求やアプリケーション・イベントをどのように処理するかについて概説します。詳細については、ビジネス・オブジェクト動詞の処理を参照してください。

ビジネス・オブジェクト要求の処理

コネクターは、アプリケーション操作実行の要求を受けると、階層ビジネス・オブジェクトを再帰的に処理します。つまり、すべての個別ビジネス・オブジェクトを処理するまで、子ビジネス・オブジェクトのそれぞれに対し、同じステップを実行します。コネクターが子ビジネス・オブジェクトおよび最上位ビジネス・オブジェクトを処理する順序は、それらの子ビジネス・オブジェクトが所有関係にあるかどうか、および単一カーディナリティーの関係と複数カーディナリティーの関係のどちらにあるかによって異なります。

注:
階層ビジネス・オブジェクトという用語は、あらゆるレベルの子ビジネス・オブジェクトをすべて含む、完全なビジネス・オブジェクトを指します。個別ビジネス・オブジェクトという用語は、単一のビジネス・オブジェクトを指します。そのビジネス・オブジェクトの子オブジェクトや、そのビジネス・オブジェクトが属する子ビジネス・オブジェクトは含みません。最上位ビジネス・オブジェクトという用語は、階層の頂点にある、親ビジネス・オブジェクトを持たない個別ビジネス・オブジェクトを指します。

ビジネス・オブジェクトの検索

コネクターは、統合ブローカーからデータベース内のある階層ビジネス・オブジェクトを検索するよう要求されると、そのビジネス・オブジェクトの現在のデータベース表現に厳密に一致するビジネス・オブジェクトを戻そうとします。つまり、統合ブローカーに戻された各個別ビジネス・オブジェクトの単純属性はすべて、データベース内の対応するフィールドの値に一致します。また、戻されたビジネス・オブジェクトに含まれる各配列での個別ビジネス・オブジェクトの数は、その配列のデータベース内の子の数に一致します。

コネクターは、このような検索を実行する場合には、最上位ビジネス・オブジェクトの基本キー値を使用して、データベース内の対応データを再帰的に順次検索します。

ビジネス・オブジェクトの内容による検索

コネクターは、統合ブローカーから、最上位ビジネス・オブジェクトの非キー属性に基づいて階層ビジネス・オブジェクトを検索するように要求されると、すべての非ヌル属性の値をデータ検索基準として使用します。

ビジネス・オブジェクトの作成

統合ブローカーから、データベース内に階層ビジネス・オブジェクトを作成するように要求されると、コネクターは以下のステップを実行します。

  1. 所有関係を伴う単一カーディナリティーの子ビジネス・オブジェクトをそれぞれ、データベース内に再帰的に作成します。
  2. 所有関係を伴わない単一カーディナリティーの子ビジネス・オブジェクトをそれぞれ処理します。
  3. 最上位ビジネス・オブジェクトを、データベース内に作成します。
  4. 単一カーディナリティーの子ビジネス・オブジェクトのうち、親/子関係を子に保管するものをそれぞれ作成します。
  5. 複数カーディナリティーの子ビジネス・オブジェクトをそれぞれ作成します。

ビジネス・オブジェクトの変更

統合ブローカーから、データベース内の階層ビジネス・オブジェクトを更新するように要求されると、コネクターは以下のステップを実行します。

  1. ソース・ビジネス・オブジェクトの基本キー値を使用して、データベース内の対応するエンティティーを検索します。
  2. 最上位ビジネス・オブジェクトの子のうち、単一カーディナリティーのものすべてを再帰的に更新します。
  3. 関係を親に保管する単一カーディナリティーの子ビジネス・オブジェクトに関しては、親に存在する外部キー値のそれぞれを、対応する単一カーディナリティーの子ビジネス・オブジェクトの基本キー値に設定します。
  4. 検索されたビジネス・オブジェクトの単純属性のすべてを更新します。ただし、ソース・ビジネス・オブジェクト内の対応する属性に値 CxIgnore が含まれるものを除きます。
  5. 親/子関係を子に保管する子ビジネス・オブジェクト (複数カーディナリティーであるか、単一カーディナリティーであるかを問いません) のそれぞれにおいて、外部キー値のすべてを、対応する親ビジネス・オブジェクトの基本キー値に設定します。
  6. 検索されたビジネス・オブジェクトの配列のすべてを処理します。

ビジネス・オブジェクトの削除

統合ブローカーから、データベースから階層ビジネス・オブジェクトを削除するように要求されると、コネクターは以下のステップを実行します。

  1. 単一カーディナリティーの子を削除します。
  2. 複数カーディナリティーの子を削除します。
  3. 最上位ビジネス・オブジェクトを削除します。

アプリケーション・イベントの処理

コネクターは、アプリケーションによって生成された Create、Update、および Delete の各イベントを、下記の方法で処理します。

Create 通知

コネクターは、イベント表内に Create イベントを見つけると、そのイベントによって指定されたタイプのビジネス・オブジェクトを作成し、そのビジネス・オブジェクトのキー値を設定して (このとき、イベント表に指定されているキーが使用されます)、データベース内でそのビジネス・オブジェクトを検索します。目的のビジネス・オブジェクトが検索されると、コネクターは Create 動詞とともに、統合ブローカーに送信します。

Update 通知

コネクターは、イベント表内に Update イベントを見つけると、そのイベントによって指定されたタイプのビジネス・オブジェクトを作成し、そのビジネス・オブジェクトのキー値を設定して (このとき、イベント表に指定されているキーが使用されます)、データベース内でそのビジネス・オブジェクトを検索します。目的のビジネス・オブジェクトが検索されると、Update 動詞とともに、統合ブローカーに送信します。

Delete 通知

コネクターは、イベント表内に Delete イベントを見つけると、そのイベントによって指定されたタイプのビジネス・オブジェクトを作成し、そのビジネス・オブジェクトのキー値を設定して (イベント表に指定されているキーが使用されます)、Delete 動詞とともに統合ブローカーに送信します。キー値以外の値は、すべて CxIgnore に設定されます。非キー・フィールドのいずれかが使用サイトで有意である場合には、必要に応じてそのフィールドの値を変更してください。

コネクターは、アプリケーションによって起動される論理 Delete 操作および物理 Delete 操作を処理します。物理削除の場合、SmartFiltering 機構により、ビジネス・オブジェクトの未処理イベント (Create や Update など) がすべて除去されてから、Delete イベントがイベント表に挿入されます。論理削除の場合、コネクターによって Delete イベントがイベント表に挿入されます。ビジネス・オブジェクトのその他のイベントが除去されることはありません。

イベント処理用ビジネス・オブジェクトの検索

イベント処理のためのビジネス・オブジェクト検索は、2 とおりの方法で実行することができます。第 1 の方法は、ビジネス・オブジェクトのキー属性に基づく検索です。第 2 の方法は、キー属性および非キー属性の両方に基づく検索です。この場合、ビジネス・オブジェクトで RetrieveByContent 動詞がサポートされ、オブジェクト・キーに name_value ペアが使用されていなければなりません。

注:
オブジェクト・キーに name_value ペアが使用されていない場合、オブジェクト・キー・フィールド内のキーの順序は、ビジネス・オブジェクト内のキーと同じ順序でなければなりません。

イベント通知

コネクターのイベント検出機構には、イベント表、アーカイブ表、ストアード・プロシージャー、およびデータベース・トリガーが使用されています。イベント管理プロセスは、アーカイブ表へのイベントの挿入を完了するまで、イベント表からイベントを削除しません。これは、イベント処理に関連して、障害が発生する可能性がある点がいくつかあるためです。

データベース・トリガーは、データベース内で特定のイベントが発生すると、イベント表にイベントを格納します。コネクターは、一定間隔 (構成可能) でこの表に対してポーリングを実行し、イベントを検索して処理します。処理は、まず優先順位に従って実行され、次に順次実行されます。コネクターがこのイベント処理を完了すると、イベントの状況が更新されます。

注:
インストール手順の一部として、データベースにトリガーを追加する必要があります。

コネクターの ArchiveProcessed プロパティーの設定によって、コネクターが、イベントの状況を更新した後でそのイベントをアーカイブ表にアーカイブするかどうかが決定されます。ArchiveProcessed プロパティーに関する詳細については、コネクターの構成を参照してください。

表 1 に、ArchiveProcessed プロパティーの設定に応じたアーカイブの振る舞いを示します。

表 1. アーカイブ時の振る舞い
アーカイブ処理済み設定 イベント表から削除される理由 コネクターの振る舞い
true または値なし 処理成功 Sent to InterChange」状況でアーカイブ済み

処理失敗 Error」状況でアーカイブ済み

ビジネス・オブジェクトに対するサブスクリプションがない Unsubscribed」状況でアーカイブ済み
false
 
処理成功 アーカイブせずにイベント表から削除します。

処理失敗 状況を Error にしてイベント表に残します。

ビジネス・オブジェクトに対するサブスクリプションがない 状況を Unsubscribed にしてイベント表に残します。

SmartFiltering は、統合ブローカーおよびコネクターによって実行される処理の量を最小化する、データベース・トリガー内機構です。例えば、コネクターによる前回のイベント・ポーリングの後で、Contract ビジネス・オブジェクトがあるアプリケーションによって 15 回更新されている場合、SmartFiltering は、これらの変更を単一の Update イベントとして保管します。

データベース接続不能の処理

データベース接続は、さまざまな理由で失われます。データベース接続が失われると、コネクターは終了します。JDBC の仕様では、接続の喪失を検出する機構は定められていません。コネクターでは、サポートされているデータベースが多岐にわたるため、データベース接続の喪失に応じたエラー・コード定義は一切用意されていません。

PingQuery プロパティーは、この検出を処理するために提供されています。サービス呼び出し要求中に障害が発生すると、コネクターは、この PingQuery を実行して、データベース接続の喪失が原因で、その障害が発生したのではないことを確認します。PingQuery が失敗した場合に AutoCommit プロパティーが false に設定されていると、コネクターはデータベースへの新規の接続を作成しようとします。データベースへの新規接続の作成に成功した場合、コネクターは処理を続行します。失敗した場合、コネクターは APPRESPONSETIMEOUT を戻します。この結果、コネクターは終了します。

データベースへのアクセス中に障害が発生した場合は、トランザクションのタイプには関係なく PingQuery が実行されます。以下に例を示します。

ロケール依存データの処理

コネクターは、2 バイト文字セットをサポートして、指定された言語でメッセージ・テキストを送れるように国際化されています。ある文字コード・セットを使用する場所から別の文字コード・セットを使用する場所へデータを転送する場合、コネクターは、そのデータの意味が保持されるように文字変換を実行します。

Java 仮想マシン (JVM) 内での Java ランタイム環境は、Unicode 文字コード・セットでデータを表します。Unicode には、最もよく知られた文字コード・セット (単一バイトとマルチバイトの両方) の文字エンコードが含まれています。WebSphere Business Integration システムのほとんどのコンポーネントは Java で記述されています。そのため、WebSphere Business Integration システム・コンポーネント間でデータを転送するときは、ほとんどの場合文字変換は必要ありません。

エラー・メッセージや情報メッセージを個々の国や地域に合った適切な言語で記録するには、個々の環境に合わせて Locale 標準構成プロパティーを構成する必要があります。これらのプロパティーの詳細については、付録 A, コネクターの標準構成プロパティーを参照してください。

Copyright IBM Corp. 2004