このセクションでは、メタデータによってコネクターの柔軟性がどのように拡張されるかについて説明し、ビジネス・オブジェクトの処理およびイベント通知について概説します。
コネクターは、メタデータ主導型です。IBM WebSphere Business Integration Server Express and Express Plus 環境では、メタデータとは、コネクターとアプリケーションの相互作用を支援する、ビジネス・オブジェクトに格納されたアプリケーション固有のデータです。メタデータ主導型コネクターは、サポートする各ビジネス・オブジェクトを処理する際に、コネクター内にハードコーディングされた命令ではなく、ビジネス・オブジェクト定義にエンコードされたメタデータに基づいて処理を行います。
ビジネス・オブジェクトのメタデータには、そのビジネス・オブジェクトの構造の他、そのビジネス・オブジェクトにおける属性プロパティーの設定やアプリケーション固有情報の内容が組み込まれています。コネクターはメタデータ主導型であるため、新規の、または変更されたビジネス・オブジェクトを、コネクター・コードの変更を必要とせずに処理することができます。
コネクターは、SQL ステートメントまたはストアード・プロシージャーを実行して、データベースやアプリケーションに含まれるデータを検索または変更します。コネクターでは、動的 SQL ステートメントまたはストアード・プロシージャーの作成のために、アプリケーション固有のメタデータが使用されます。作成された SQL ステートメントおよびストアード・プロシージャーは、コネクターが処理するビジネス・オブジェクトおよび動詞に必要な、データベースやアプリケーションの検索または変更を実行します。アプリケーション固有の情報の使用については、コネクターのビジネス・オブジェクトについてを参照してください。
このセクションでは、コネクターが、ビジネス・オブジェクトからの要求やアプリケーション・イベントをどのように処理するかについて概説します。詳細については、ビジネス・オブジェクト動詞の処理を参照してください。
コネクターは、アプリケーション操作実行の要求を受けると、階層ビジネス・オブジェクトを再帰的に処理します。つまり、すべての個別ビジネス・オブジェクトを処理するまで、子ビジネス・オブジェクトのそれぞれに対し、同じステップを実行します。コネクターが子ビジネス・オブジェクトおよび最上位ビジネス・オブジェクトを処理する順序は、それらの子ビジネス・オブジェクトが所有関係にあるかどうか、および単一カーディナリティーの関係と複数カーディナリティーの関係のどちらにあるかによって異なります。
コネクターは、統合ブローカーからデータベース内のある階層ビジネス・オブジェクトを検索するよう要求されると、そのビジネス・オブジェクトの現在のデータベース表現に厳密に一致するビジネス・オブジェクトを戻そうとします。つまり、統合ブローカーに戻された各個別ビジネス・オブジェクトの単純属性はすべて、データベース内の対応するフィールドの値に一致します。また、戻されたビジネス・オブジェクトに含まれる各配列での個別ビジネス・オブジェクトの数は、その配列のデータベース内の子の数に一致します。
コネクターは、このような検索を実行する場合には、最上位ビジネス・オブジェクトの基本キー値を使用して、データベース内の対応データを再帰的に順次検索します。
コネクターは、統合ブローカーから、最上位ビジネス・オブジェクトの非キー属性に基づいて階層ビジネス・オブジェクトを検索するように要求されると、すべての非ヌル属性の値をデータ検索基準として使用します。
統合ブローカーから、データベース内に階層ビジネス・オブジェクトを作成するように要求されると、コネクターは以下のステップを実行します。
統合ブローカーから、データベース内の階層ビジネス・オブジェクトを更新するように要求されると、コネクターは以下のステップを実行します。
統合ブローカーから、データベースから階層ビジネス・オブジェクトを削除するように要求されると、コネクターは以下のステップを実行します。
コネクターは、アプリケーションによって生成された Create、Update、および Delete の各イベントを、下記の方法で処理します。
コネクターは、イベント表内に Create イベントを見つけると、そのイベントによって指定されたタイプのビジネス・オブジェクトを作成し、そのビジネス・オブジェクトのキー値を設定して (このとき、イベント表に指定されているキーが使用されます)、データベース内でそのビジネス・オブジェクトを検索します。目的のビジネス・オブジェクトが検索されると、コネクターは Create 動詞とともに、統合ブローカーに送信します。
コネクターは、イベント表内に Update イベントを見つけると、そのイベントによって指定されたタイプのビジネス・オブジェクトを作成し、そのビジネス・オブジェクトのキー値を設定して (このとき、イベント表に指定されているキーが使用されます)、データベース内でそのビジネス・オブジェクトを検索します。目的のビジネス・オブジェクトが検索されると、Update 動詞とともに、統合ブローカーに送信します。
コネクターは、イベント表内に Delete イベントを見つけると、そのイベントによって指定されたタイプのビジネス・オブジェクトを作成し、そのビジネス・オブジェクトのキー値を設定して (イベント表に指定されているキーが使用されます)、Delete 動詞とともに統合ブローカーに送信します。キー値以外の値は、すべて CxIgnore に設定されます。非キー・フィールドのいずれかが使用サイトで有意である場合には、必要に応じてそのフィールドの値を変更してください。
コネクターは、アプリケーションによって起動される論理 Delete 操作および物理 Delete 操作を処理します。物理削除の場合、SmartFiltering 機構により、ビジネス・オブジェクトの未処理イベント (Create や Update など) がすべて除去されてから、Delete イベントがイベント表に挿入されます。論理削除の場合、コネクターによって Delete イベントがイベント表に挿入されます。ビジネス・オブジェクトのその他のイベントが除去されることはありません。
イベント処理のためのビジネス・オブジェクト検索は、2 とおりの方法で実行することができます。第 1 の方法は、ビジネス・オブジェクトのキー属性に基づく検索です。第 2 の方法は、キー属性および非キー属性の両方に基づく検索です。この場合、ビジネス・オブジェクトで RetrieveByContent 動詞がサポートされ、オブジェクト・キーに name_value ペアが使用されていなければなりません。
コネクターのイベント検出機構には、イベント表、アーカイブ表、ストアード・プロシージャー、およびデータベース・トリガーが使用されています。イベント管理プロセスは、アーカイブ表へのイベントの挿入を完了するまで、イベント表からイベントを削除しません。これは、イベント処理に関連して、障害が発生する可能性がある点がいくつかあるためです。
データベース・トリガーは、データベース内で特定のイベントが発生すると、イベント表にイベントを格納します。コネクターは、一定間隔 (構成可能) でこの表に対してポーリングを実行し、イベントを検索して処理します。処理は、まず優先順位に従って実行され、次に順次実行されます。コネクターがこのイベント処理を完了すると、イベントの状況が更新されます。
コネクターの ArchiveProcessed プロパティーの設定によって、コネクターが、イベントの状況を更新した後でそのイベントをアーカイブ表にアーカイブするかどうかが決定されます。ArchiveProcessed プロパティーに関する詳細については、コネクターの構成を参照してください。
表 1 に、ArchiveProcessed プロパティーの設定に応じたアーカイブの振る舞いを示します。
アーカイブ処理済み設定 | イベント表から削除される理由 | コネクターの振る舞い |
---|---|---|
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, コネクターの標準構成プロパティーを参照してください。