コネクターの動作方法

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

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

コネクターはメタデータ主導型です。WebSphere Business Integration Server Express 環境では、メタデータはアプリケーション固有のデータです。WebSphere Business Integration Server Express ビジネス・オブジェクトに格納され、アプリケーションとの対話の中でコネクターを補助する役割を持ちます。メタデータ主導型のコネクターは、コネクター内にハードコーディングされている命令ではなく、ビジネス・オブジェクト定義内にエンコードされているメタデータに基づいて、コネクター自身がサポートしている各ビジネス・オブジェクトを処理します。

ビジネス・オブジェクトのメタデータには、ビジネス・オブジェクトの構造、属性プロパティーの設定、およびアプリケーション固有情報の内容が含まれています。コネクター・モジュールはメタデータ主導型なので、コネクター・モジュールのコードを変更する必要なしに、新しい、あるいは変更されたビジネス・オブジェクトを処理できます。

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

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

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

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

コネクターは、アプリケーション操作実行の要求を受け取ると、階層ビジネス・オブジェクトを再帰的に処理します。すなわち、コネクターは、すべての個々のビジネス・オブジェクトの処理を完了するまで、それぞれの子ビジネス・オブジェクトごとに同じステップを実行します。コネクターが子ビジネス・オブジェクトとトップレベルのビジネス・オブジェクトを処理する順序は、含まれている子ビジネス・オブジェクトが所有権を持っているかどうか、および単一カーディナリティーであるか複数カーディナリティーであるかによって決まります。

コネクターは、以下の 4 種類の要求ビジネス・オブジェクト処理方法をサポートしています。

詳細については、コネクターのビジネス・オブジェクトについてを参照してください。ビジネス・オブジェクト処理のためにインターフェース・テーブルをストアード・プロシージャーとともに使用する方法の例については、付録 C, ビジネス・オブジェクトおよびストアード・プロシージャーのサンプルの説明を参照してください。

注:
階層ビジネス・オブジェクトという用語は、その任意のレベルに格納されているすべての子ビジネス・オブジェクトを含めた、ビジネス・オブジェクトの全体のことを表します。個別ビジネス・オブジェクトという用語は、それが格納している、あるいはそれが格納されている子ビジネス・オブジェクトにはかかわりなく、単一のビジネス・オブジェクトのことを表します。トップレベルのビジネス・オブジェクトという用語は、階層のトップレベルにあって、それ自身は親ビジネス・オブジェクトを持たない個別ビジネス・オブジェクトのことを表します。

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

統合ブローカーが、Oracle アプリケーションから階層ビジネス・オブジェクトを検索するようにコネクターに要求すると、コネクターは、アプリケーション・データベース内のそのビジネス・オブジェクトの現在の表記と正確に一致するビジネス・オブジェクトを戻すことを試みます。言い換えると、統合ブローカーに戻される個々のビジネス・オブジェクトのすべての基本属性が、データベース内の対応するフィールドの値と一致しているということです。また、戻されたビジネス・オブジェクトに含まれる各配列内の個々のビジネス・オブジェクトの数が、その配列のデータベース内の子の数と一致します。

このような検索を実行するため、コネクターは、ビジネス・プロセスから受け取ったトップレベルのビジネス・オブジェクト内の基本キー値を使用して、再帰的に下降してデータベース内の対応するデータを検索します。

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

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

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

統合ブローカーが、Oracle アプリケーション内で階層ビジネス・オブジェクトを作成するようにコネクターに要求すると、コネクターは以下のステップを実行します。

  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 イベントをイベント表に挿入します。

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

Retrieve は、2 種類の方法でイベント処理用のビジネス・オブジェクトに対して実行できます。1 つは、ビジネス・オブジェクト内のキー属性に基づく Retrieve です。もう 1 つは、キー属性と非キー属性の両方に基づく Retrieve です。この場合、ビジネス・オブジェクトは RetrieveByContent 動詞をサポートしている必要があり、オブジェクト・キーの name_value ペアを使用しなければなりません。

注:
オブジェクト・キーが name_value ペアを使用しない場合、オブジェクト・キー・フィールド内のキーは、ビジネス・オブジェクト内のキーと同じ順序にする必要があります。

イベント通知

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

関心のあるイベントがデータベース内で発生したときに、データベース・トリガーはイベント表にイベントを取り込みます。コネクターは、構成可能な規則的な間隔でこのテーブルをポーリングし、イベントを検索してから、イベントをまず優先順位に従って処理し、その後は順次に処理します。コネクターのイベント処理が完了すると、イベントの状況は更新されます。

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

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

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

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

処理が失敗 「エラー」の状況でアーカイブされる

ビジネス・オブジェクトでサブスクリプションがない 「Unsubscribed」の状況でアーカイブされる (統合ブローカーに固有なサブスクリプション情報については、そのブローカーの「インプリメンテーション・ガイド」を参照してください)
false 処理が正常に終了 アーカイブされず、イベント表から削除される

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

ビジネス・オブジェクトでサブスクリプションがない 「Unsubscribed」の状況でイベント表に残る (統合ブローカーに固有なサブスクリプション情報については、そのブローカーの「インプリメンテーション・ガイド」を参照してください)

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

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

データベースへ接続不能になるのには、数多くの理由があります。この障害が発生すると、コネクターは終了します。JDBC 規格では、失われた接続を検出する機構がありません。しかし、この検出処理を扱うため、PingQuery プロパティーが用意されています。サービス呼び出し要求時に障害が発生した場合、コネクターはこの PingQuery を実行して、障害の原因がデータベースへの接続が切れたためではないことを確認します。PingQuery が失敗した場合に AutoCommit プロパティーが false に設定されていると、コネクターはデータベースへの新規の接続を作成しようとします。データベースへの新規接続の作成に成功した場合、コネクターは処理を続行します。失敗した場合は APPRESPONSETIMEOUT を戻します。この結果、コネクターは終了します。

任意のタイプのトランザクションのためデータベースへのアクセス時に障害が発生した場合、PingQuery が実行されます。例えば、次のようになります。

ビジネス・オブジェクトに関連するレコードを作成または更新するとき

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

アダプターは国際化され、2 バイト文字セットをサポートし、特定の言語でメッセージ・テキストを配信できるようになっています。アダプターは、ある文字コード・セットを使用する場所から別のコード・セットを使用する場所にデータを転送するとき、データの意味を保存するように文字変換を実行します。

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

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

Copyright IBM Corp. 2004