このセクションでは、メタデータによってどのようにコネクターの柔軟性が高まるのか、およびビジネス・オブジェクト処理とイベント通知に関する概要を説明します。
コネクターはメタデータ主導型です。WebSphere Business Integration Server Express 環境では、メタデータはアプリケーション固有のデータです。WebSphere Business Integration Server Express ビジネス・オブジェクトに格納され、アプリケーションとの対話の中でコネクターを補助する役割を持ちます。メタデータ主導型のコネクターは、コネクター内にハードコーディングされている命令ではなく、ビジネス・オブジェクト定義内にエンコードされているメタデータに基づいて、コネクター自身がサポートしている各ビジネス・オブジェクトを処理します。
ビジネス・オブジェクトのメタデータには、ビジネス・オブジェクトの構造、属性プロパティーの設定、およびアプリケーション固有情報の内容が含まれています。コネクター・モジュールはメタデータ主導型なので、コネクター・モジュールのコードを変更する必要なしに、新しい、あるいは変更されたビジネス・オブジェクトを処理できます。
コネクターは、SQL ステートメントまたはストアード・プロシージャーを実行して、データベース/アプリケーションのデータを検索または変更します。動的 SQL ステートメントまたはストアード・プロシージャーをビルドするために、コネクターはアプリケーション固有のメタデータを使用します。これらの SQL ステートメントおよびストアード・プロシージャーは、ビジネス・オブジェクトが必要とし、コネクターが処理している動詞が必要とする、データベース/アプリケーションからの検索または変更を実行します。アプリケーション固有の情報の使用方法については、コネクターのビジネス・オブジェクトについてを参照してください。
このセクションでは、コネクターがビジネス・オブジェクト要求およびアプリケーション・イベントを処理する方法の概要を説明します。詳細については、ビジネス・オブジェクト動詞の処理を参照してください。
コネクターは、アプリケーション操作実行の要求を受け取ると、階層ビジネス・オブジェクトを再帰的に処理します。すなわち、コネクターは、すべての個々のビジネス・オブジェクトの処理を完了するまで、それぞれの子ビジネス・オブジェクトごとに同じステップを実行します。コネクターが子ビジネス・オブジェクトとトップレベルのビジネス・オブジェクトを処理する順序は、含まれている子ビジネス・オブジェクトが所有権を持っているかどうか、および単一カーディナリティーであるか複数カーディナリティーであるかによって決まります。
コネクターは、以下の 4 種類の要求ビジネス・オブジェクト処理方法をサポートしています。
詳細については、コネクターのビジネス・オブジェクトについてを参照してください。ビジネス・オブジェクト処理のためにインターフェース・テーブルをストアード・プロシージャーとともに使用する方法の例については、付録 C, ビジネス・オブジェクトおよびストアード・プロシージャーのサンプルの説明を参照してください。
統合ブローカーが、Oracle アプリケーションから階層ビジネス・オブジェクトを検索するようにコネクターに要求すると、コネクターは、アプリケーション・データベース内のそのビジネス・オブジェクトの現在の表記と正確に一致するビジネス・オブジェクトを戻すことを試みます。言い換えると、統合ブローカーに戻される個々のビジネス・オブジェクトのすべての基本属性が、データベース内の対応するフィールドの値と一致しているということです。また、戻されたビジネス・オブジェクトに含まれる各配列内の個々のビジネス・オブジェクトの数が、その配列のデータベース内の子の数と一致します。
このような検索を実行するため、コネクターは、ビジネス・プロセスから受け取ったトップレベルのビジネス・オブジェクト内の基本キー値を使用して、再帰的に下降してデータベース内の対応するデータを検索します。
統合ブローカーが、トップレベルのビジネス・オブジェクト内の非キー属性の値に基づいて階層ビジネス・オブジェクトを検索するようにコネクターに要求すると、コネクターは、すべての非ヌル属性をデータ検索の基準として使用します。
統合ブローカーが、Oracle アプリケーション内で階層ビジネス・オブジェクトを作成するようにコネクターに要求すると、コネクターは以下のステップを実行します。
統合ブローカーが、データベース内の階層ビジネス・オブジェクトを更新するようにコネクターに要求すると、コネクターは以下のステップを実行します。
統合ブローカーが、データベースから階層ビジネス・オブジェクトを削除するようにコネクターに要求すると、コネクターは以下のステップを実行します。
コネクターは、アプリケーションが生成した Create、Update、および Delete イベントを、以下に説明する方法で処理します。
コネクターは、イベント表で Create イベントを検出すると、イベントが指定した型のビジネス・オブジェクトを作成し、ビジネス・オブジェクトのキー値を設定し (イベント表で指定されたキーを使用する)、データベースからビジネス・オブジェクトを検索します。ビジネス・オブジェクトを検索した後で、コネクターはそのビジネス・オブジェクトを Create 動詞と共に統合ブローカーに送信します。
コネクターは、イベント表で Update イベントを検出すると、イベントが指定した型のビジネス・オブジェクトを作成し、ビジネス・オブジェクトのキー値を設定し (イベント表で指定されたキーを使用する)、データベースからビジネス・オブジェクトを検索します。ビジネス・オブジェクトを検索した後で、コネクターはそのビジネス・オブジェクトを Update 動詞と共に統合ブローカーに送信します。
コネクターは、イベント表で Delete イベントを検出すると、イベントが指定した型のビジネス・オブジェクトを作成し、ビジネス・オブジェクトのキー値を設定し (イベント表で指定されたキーを使用する)、そのビジネス・オブジェクトを Delete 動詞と共に統合ブローカーに送信します。キー値を除くすべての値が CxIgnore に設定されます。サイトにおいて意味を持つ非キー・フィールドがある場合は、必要に応じてそれらのフィールドの値を変更してください。
コネクターは、アプリケーションによって起動される論理 Delete および物理 Delete 操作を扱います。物理削除の場合、SmartFiltering 機構は、ビジネス・オブジェクトの未処理イベント (Create または Update など) をすべて削除してから、Delete イベントをイベント表に挿入します。論理削除の場合、コネクターは、ビジネス・オブジェクトの他のイベントを削除することなく、Delete イベントをイベント表に挿入します。
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(TM) 仮想マシン (JVM) 内での Java ランタイム環境は、Unicode 文字コード・セットでデータを表します。Unicode は、既知の文字コード・セットのほとんど (単一バイトおよびマルチバイトの両方) に対応するエンコード方式を含んでいます。WebSphere Business Integration システムのほとんどのコンポーネントは Java で記述されています。そのため、WebSphere Business Integration Server Express システム・コンポーネント間でデータを転送するときは、ほとんどの場合文字変換は必要ありません。
エラー・メッセージや通知メッセージを個々の国や地域に合った適切な言語で記録するには、個々の環境に合わせて Locale 標準構成プロパティーを構成する必要があります。構成プロパティーの詳細については、付録 A, コネクターの標準構成プロパティーを参照してください。