このセクションでは、メタデータによってどのようにコネクターの柔軟性が高まるのか、およびビジネス・オブジェクト処理とイベント通知に関する概要を説明します。
コネクターはメタデータ主導型です。アダプター環境では、メタデータはアプリケーション固有のデータです。ビジネス・オブジェクトに格納され、アプリケーションとの対話においてコネクターを補助します。メタデータ主導型のコネクターは、コネクター内にハードコーディングされている命令ではなく、ビジネス・オブジェクト定義内にエンコードされているメタデータに基づいて、コネクター自身がサポートしている各ビジネス・オブジェクトを処理します。
ビジネス・オブジェクトのメタデータには、ビジネス・オブジェクトの構造、属性プロパティーの設定、およびアプリケーション固有情報の内容が含まれています。コネクター・モジュールはメタデータ主導型なので、コネクター・モジュールのコードを変更する必要なしに、新しい、あるいは変更されたビジネス・オブジェクトを処理できます。
コネクターは、SQL ステートメントまたはストアード・プロシージャーを実行して、データベース/アプリケーションのデータを検索または変更します。動的 SQL ステートメントまたはストアード・プロシージャーをビルドするために、コネクターはアプリケーション固有のメタデータを使用します。これらの SQL ステートメントおよびストアード・プロシージャーは、ビジネス・オブジェクトが必要とし、コネクターが処理している動詞が必要とする、データベース/アプリケーションからの検索または変更を実行します。アプリケーション固有の情報の使用方法については、コネクターのビジネス・オブジェクトについてを参照してください。
このセクションでは、コネクターがビジネス・オブジェクト要求およびアプリケーション・イベントを処理する方法の概要を説明します。詳細については、ビジネス・オブジェクト動詞の処理を参照してください。
コネクターは、アプリケーション操作実行の要求を受け取ると、階層ビジネス・オブジェクトを再帰的に 処理します。すなわち、コネクターは、すべての個々のビジネス・オブジェクトの処理を完了するまで、それぞれの子ビジネス・オブジェクトごとに同じステップを実行します。コネクターが子ビジネス・オブジェクトとトップレベルのビジネス・オブジェクトを処理する順序は、含まれている子ビジネス・オブジェクトが所有権を持っているかどうか、および単一カーディナ リティーであるか複数カーディナリティーであるかによって決まります。
コネクターは、以下の 4 種類の要求ビジネス・オブジェクト処理方法をサポートしています。
詳細については、コネクターのビジネス・オブジェクトについてを参照してください。ビジネス・オブジェクト処理のためにインターフェース・テーブルをストアード・プロシージャーとともに使用する方法の例については、付録C. ビジネス・オブジェクトおよびストアード・プロシージャーのサンプルの説明を参照してください。
統合ブローカーが、Oracle アプリケーションから階層ビジネス・オブジェクトを検索するようにコネクターに要求すると、コネクターは、アプリケーション・データベース内のそのビジネス・オブジェクトの現在の表記と正確に一致するビジネス・オブジェクトを戻すことを試みます。言い換えると、統合ブローカーに戻される個々のビジネス・オブジェクトのすべての基本属性が、データベース内の対応するフィールドの値と一致しているということです。また、戻されたビジネス・オブジェクトに含まれる各配列内の個々のビジネス・オブジェクトの数が、その配列のデータベース内の子の数と一致します。
このような検索を実行するため、コネクターは、ビジネス・プロセスから受け取ったトップレベルのビジネス・オブジェクト内の基本キー値を使用して、再帰的に下降してデータベース内の対応するデータを検索します。
統合ブローカーが、トップレベルのビジネス・オブジェクト内の非キー属性の値に基づいて階層ビジネス・オブジェクトを検索するようにコネクターに要求すると、コネクターは、すべての非ヌル属性をデータ検索の基準として使用します。
統合ブローカーが、Oracle アプリケーション内で階層ビジネス・オブジェクトを作成するようにコネクターに要求すると、コネクターは以下のステップを実行します。
統合ブローカーが、データベース内の階層ビジネス・オブジェクトを更新するようにコネクターに要求すると、コネクターは以下のステップを実行します。
統合ブローカーが、データベースから階層ビジネス・オブジェクトを削除するようにコネクターに要求すると、コネクターは以下のステップを実行します。
コネクターは、アプリケーションが生成した Create、Update、および Delete イベントを、以下に説明する方法で処理します。
コネクターは、イベント表で Create イベントを検出すると、イベントが指定した型のビジネス・オブジェクトを作成し、ビジネス・オブジェクトのキー値を設定し (イベント表で指定されたキーを使用する)、データベースからビジネス・オブジェクトを検索します。ビジネス・オブジェクトを検索した後で、コネクターはそのビジネス・オブジェクトを Create 動詞と共に統合ブローカーに送信します。
コネクターは、イベント表で Update イベントを検出すると、イベントが指定した型のビジネス・オブジェクトを作成し、ビジネス・オブジェクトのキー値を設定し (イベント表で指定されたキーを使用する)、データベースからビジネス・オブジェクトを検索します。ビジネス・オブジェクトを検索した後で、コネクターはそのビジネス・オブジェクトを Update 動詞と共に統合ブローカーに送信します。
コネクターは、イベント表で Delete イベントを検出すると、イベントが指定した型のビジネス・オブジェクトを作成し、ビジネス・オブジェクトのキー値を設定し (イベント表で指定され たキーを使用する)、そのビジネス・オブジェクトを Delete 動詞と共に統合ブローカーに送信します。キー値を除くすべての値が CxIgnore に設定されます。サイトにおいて意味を持つ非キー・フィールドがある場合は、必要に応じてそれらのフィールドの値を変更してください。
コネクターは、アプリケーションによって起動される論理 Delete および物理 Delete 操作を扱います。物理削除の場合、SmartFiltering 機構は、ビジネス・オブジェクトの未処理イベント (Create または Update など) をすべて削除してから、Delete イベントをイベント表に挿入します。論理削除の場合、コネクターは、ビジネス・オブジェクトの他のイベントを削除することなく、Delete イベントをイベント表に挿入します。
イベント ID は、アプリケーション・ブローカーからのロギング重複イベントを避けるために使用する固有 ID です。例えば、進行中のイベントが統合ブローカーに送信された後、アダプターが失敗するとします。アダプターが再始動するとき、アダプターはイベントを再処理して再送します。その後統合ブローカーがイベント ID を比較し、重複イベントがあれば削除します。これは、各イベント ID は固有であるためです。
Retrieve は、2 種類の方法でイベント処理用のビジネス・オブジェクトに対して実行できます。1 つは、ビジネス・オブジェクト内のキー属性に基づく Retrieve です。もう 1 つは、キー属性と非キー属性の両方に基づく Retrieve です。この場合、ビジネス・オブジェクトは RetrieveByContent 動詞をサポートしている必要があり、オブジェクト・キーの name_value ペアを使用しなければなりません。
コネクターのイベント検出機構は、イベント表、アーカイブ表、ストアード・プロシージャー、およびデータベース・トリガーを使用しています。イベントの処理に関連する潜在的な障害点があるため、イベント管理プロセスは、イベントがアーカイブ表に挿入されるまでは、イベント表からそのイベントを削除しません。
関心のあるイベントがデータベース内で発生したときに、データベース・トリガーはイベント表にイベントを取り込みます。コネクターは、構成可能な規則的な間隔でこのテーブルをポーリングし、イベントを検索してから、イベントをまず優先順位に従って処理し、その後は順次に処理します。コネクターのイベント処理が完了すると、イベントの状況は更新されます。
コネクターの ArchiveProcessed プロパティーの設定によって、状況の更新後にコネクターがイベントをアーカイブ表にアーカイブするかどうかが決まります。ArchiveProcessed プロパティーの詳細については、コネクターの構成を参照してください。
表 1 に、ArchiveProcessed プロパティーの設定に対応するアーカイブ時の振る舞いを示します。
アーカイブ処理済み設定 | イベント表から削除される理由 | コネクターの振る舞い |
---|---|---|
true または値なし | 処理が正常に終了 | 「Sent to InterChange」の状況でアーカイブされる |
処理が失敗 | 「エラー」の状況でアーカイブされる | |
ビジネス・オブジェクトでサブスクリプションがない | 「Unsubscribed」の状況でアーカイブされる (統合ブローカーに固有なサブスクリプション情報については、そのブローカーの「インプリメンテーション・ガイド」を参照してください) | |
false | 処理が正常に終了 | アーカイブされず、イベント表から削除される |
処理が失敗 | 状況を Error にしてイベント表に残す | |
ビジネス・オブジェクトでサブスクリプションがない | 「Unsubscribed」の状況でイベント表に残る (統合ブローカーに固有なサブスクリプション情報については、そのブローカーの「インプリメンテーション・ガイド」を参照してください) |
SmartFiltering は、統合ブローカーとコネクターが実行しなければならない処理の量を最小にする、データベース・トリガー内部の機構です。例えば、コネクターが最後にイベントをポーリングしてから、アプリケーションが Contract ビジネス・オブジェクトを 15 回更新した場合も、SmartFiltering はこれらの変更を単一の Update イベントとして保管します。
データベースへ接続不能になるのには、数多くの理由があります。この障害が発生すると、コネクターは終了します。JDBC 規格では、失われた接続を検出する機構がありません。しかし、この検出処理を扱うため、PingQuery プロパテ ィーが用意されています。サービス呼び出し要求時に障害が発生した場合、コネクターはこの PingQuery を実行して、障害の原因がデータベースへの接続が切れたためではないことを確認します。PingQuery が失敗した場合に AutoCommit プロパティーが false に設定されて いると、コネクターはデータベースへの新規の接続を作成しようとします。データベースへの新規接続の作成に成功した場合、コネクターは処理を続行し ます。失敗した場合は APPRESPONSETIMEOUT を戻します。この結果、コネクターは終了します。
任意のタイプのトランザクションのためデータベースへのアクセス時に障害が発生した場合、PingQuery が実行されます。例えば、次のようになります。
ビジネス・オブジェクトに関連するレコードを作成または更新するとき
コネクターは国際化され、2 バイト文字セットをサポートし、特定の言語でメッセージ・テキストを配信できるようになっています。ある文字コード・セットを使用するロケーションから別のコード・セットを使用するロケーションへ、コネクターがデータを転送するとき、コネクターはデータの意味を保存するため、文字変換を実行します。
Java 仮想マシン (JVM) 内部の Java ランタイム環境では、Unicode 文字コード・セットでデータを表現します。Unicode は、既知の文字コード・セットのほとんど (単一バイトおよびマルチバイトの両方) に対応するエンコード方式を含んでいます。IBM WebSphere Business Integration システムのほとんどのコンポーネントは Java で書かれています。その ため、Server Acces コンポーネント間でデータを転送するときは、ほとんどの場合文字変換は必要ありません。
適切な言語で、適切な国または地域向けにエラー・メッセージおよび通知メッセージを記録するには、Locale 標準構成プロパティーをご使用の環境に合わせて構成してください。これらのプロパティーの詳細については、付録A. コネクターの標準構成プロパティーを参照してください。