データ・ハンドラーとは

データ・ハンドラー は、Java クラス・インスタンスで、特定の直列化フォーマットとビジネス・オブジェクトとの変換を行います。 データ・ハンドラーは、WebSphere Business Integration ブローカーと何らかの外部プロセスとの間で情報を転送するビジネス・インテグレーション・システムのコンポーネントによって使用されます。表 1 に、WebSphere Business Integration ブローカーと外部プロセス間の情報の転送を処理するコンポーネントを示します。

表 1. WebSphere Business Integration システムの内部で情報を転送するコンポーネント
コンポーネント 目的 詳細
アダプター

WebSphere Business Integration ブローカーと外部プロセス (アプリケーションやテクノロジーなど) との間で情報を転送する役割を果たします。

注:
アダプターはコネクター と呼ばれるランタイム・コンポーネントを使用して、統合ブローカーとアプリケーション (またはテクノロジー) 間の情報転送を 実際に処理します。

これらの外部プロセスでは、イベント・レコードをイベント・ストアに送信することにより、プロセス内部で発生するイベントが特定されます。アダプターは、このイベント・ストアの内部でイベントを検出します。外部プロセスがトリガー側のイベントを検出すると、アダプターは、このイベントを表しているビジネス・オブジェクトを作成して、このイベントを非同期 の状態でビジネス統合ブローカーへ送信します。このビジネス・オブジェクトには、イベントのタイプ (Create や Update など) を示すために、データおよび動詞が格納されています。

IBM 提供のアダプターについては、個々のアダプター・ガイドを参照してください。

カスタム・アダプターの場合、カスタム・コネクターの詳細については、(コネクターのインプリメントに使用した言語に応じて) 「コネクター開発ガイド (Java 用)」または「コネクター開発ガイド (C++ 用)」を参照してください。

アクセス・クライアント

InterChange Server 統合ブローカーと任意の外部プロセス (例: Web サーバー内部のサーブレットなど) との間で情報を転送する役割を果たします。

アクセス・クライアントとは、Server Access Interface を使用して InterChange Server と直接通信する外部プロセスです。このコンポーネントは、転送が必要な何らかの情報を受信すると、イベントを表すビジネス・オブジェクトを作成して、このイベントを同期 状態で InterChange Server 内部のコラボレーションに送信します。アダプターの場合と同様に、このビジネス・オブジェクトには、イベントのタイプ (Create や Update など) を示すためにデータおよび動詞が格納されています。

「アクセス開発ガイド」

表 1 に示すように、これら 2 つのコンポーネント (コネクターおよびアクセス・クライアント) の目的は、次に示す方法でブローカーと外部プロセスとの間で情報を転送することです。

多くの場合、外部プロセスは、その固有の直列化データに対して XML など何らかの共通フォーマットを使用します。これらの共通フォーマットとビジネス・オブジェクト間の変換を各アダプター (またはアクセス・クライアント) が実行する代わりに、WebSphere Business Integration システムには、IBM が開発した数種類のデータ・ハンドラーが用意されています。さらに、カスタム・データ・ハンドラーを作成すると、独自の固有フォーマット間の変換を処理できます。こうすれば、アダプター (またはアクセス・クライアント) は、適切なデータ・ハンドラーを呼び出して、直列化データの Multipurpose Internet Mail Extensions (MIME) タイプに基づいてデータ変換を実行できます。

注:
データ・ハンドラーは、DataHandler という名前の Java クラスにインプリメントされています。このクラスは抽象クラスであり、データ・ハンドラー開発者がこれを拡張してデータ・ハンドラー・インスタンスをインプリメントします。詳細については、データ・ハンドラー基本クラスの拡張を参照してください。

このセクションでは、データ・ハンドラーに関する以下の情報について説明します。

IBM 提供のデータ・ハンドラー

IBM では、表 2 に示す Java アーカイブ (jar) ファイルに格納してデータ・ハンドラーを提供しています。これらの jar ファイルは、製品ディレクトリーの下の DataHandlers サブディレクトリーにあります。

表 2. IBM 提供のデータ・ハンドラーの JAR ファイル
内容 説明 データ・ハンドラーの JAR ファイル
基本データ・ハンドラー テキスト・ベースのデータ・ハンドラーおよびある IBM 提供アダプターに固有なデータ・ハンドラー CwDataHandler.jar
特殊なデータ・ハンドラー XML データ・ハンドラー CwXMLDataHandler.jar
カスタム・データ・ハンドラー 作成者がインプリメントするデータ・ハンドラー CustDataHandler.jar

基本データ・ハンドラー

基本データ・ハンドラー・ファイルである CwDataHandler.jar には、大半の IBM 提供データ・ハンドラーが格納されています。 このファイルは、製品ディレクトリーの DataHandlers サブディレクトリーに存在します。表 3 に、この基本データ・ハンドラー・ファイルに格納されている基本データ・ハンドラーを示します。

表 3.
基本データ・ハンドラー・ファイルに格納されている基本データ・ハンドラー
データ・ハンドラー MIME タイプ 詳細
Request-Response データ・ハンドラー text/requestresponse Request-Response データ・ハンドラー
FixedWidth データ・ハンドラー text/fixedwidth FixedWidth データ・ハンドラー
Delimited データ・ハンドラー text/delimited Delimited データ・ハンドラー
NameValue データ・ハンドラー text/namevalue NameValue データ・ハンドラー

注:
本書では、表 3 に示すテキスト・データ・ハンドラーについて説明します。基本データ・ハンドラー・ファイルには、ある特定の IBM 提供アダプターに固有なデータ・ハンドラーも数種類含まれています。ある IBM アダプターが特殊なデータ・ハンドラーを使用する場合、このアダプターのアダプター・ガイドには、このアダプターのデータ・ハンドラーのインストール、構成、および使用に関する情報が記載されています。

特殊なデータ・ハンドラー

IBM では、いくつかのデータ・ハンドラーについて、個別のインストーラーを提供しています。これらの特殊なデータ・ハンドラーをインストールするには、「WebSphere Business Integration Adapters インストール・ガイド」で示す手順に従う必要があります。

データ・ハンドラーを基本データ・ハンドラー・ファイルから分離すると、多くのアダプターは、基本データ・ハンドラー・ファイルに存在するほかのデータ・ハンドラーを格納する際のオーバーヘッドを発生させずにデータ・ハンドラーを使用できるようになります。表 4 に、IBM から個別のインストーラーと個別の JAR ファイルが提供されているデータ・ハンドラーを示します。

表 4. 個別の JAR ファイルを持つ IBM 提供のデータ・ハンドラー
データ・ハンドラー データ・ハンドラーの JAR ファイル MIME タイプ 詳細
XML データ・ハンドラー CwXMLDataHandler.jar text/xml "XML データ・ハンドラー"

カスタム・データ・ハンドラー

IBM 提供のデータ・ハンドラーが直列化データからビジネス・オブジェクトへの変換を処理しない 場合は、独自のカスタム・データ・ハンドラーを作成できます。CustDataHandler.jar ファイルは、作成する任意のカスタム・データ・ハンドラーを保持することを目的としています。 このファイルは、製品ディレクトリーの DataHandlers サブディレクトリーに存在します。カスタム・データ・ハンドラーの作成方法の詳細については、"カスタム・データ・ハンドラーの作成"を参照してください。

注:
カスタム・データ・ハンドラーの開発を促進するため、IBM では、FixedWidth、Delimited、NameValue の各データ・ハンドラーのソース・コードについてもサンプル・コードとして提供しています。 詳細については、"サンプル・データ・ハンドラー"を参照してください。

データ・ハンドラー・メタオブジェクト

コネクターまたは Server Access Interface プロセスは、入力ファイルの MIME タイプまたはビジネス・オブジェクト要求で指定された MIME タイプに基づいて、データ・ハンドラーをインスタンス化します。

データ・ハンドラー・メタオブジェクトは、階層構造のビジネス・オブジェクトで、任意の数の子オブジェクトを組み込むことができます。 データ・ハンドラー構成情報は、次の階層に整列されています。

注:
データ・ハンドラーは、構成情報を保持するのにメタオブジェクトを使用する必要はありません。ただし、IBM から提供されたすべての データ・ハンドラーは、その構成情報に関してメタオブジェクトを使用することを想定して設計されています。

データ・ハンドラー・メタオブジェクトにより、コネクターや Server Access Interface プロセスが入力ファイルの MIME タイプまたはビジネス・オブジェクト要求で指定された MIME タイプに基づいてデータ・ハンドラーをインスタンス化できます。

データ・ハンドラーを構成するには、そのメタオブジェクトが正しく初期化され、呼び出し元 (コネクターまたはアクセス・クライアント) で使用できることを確認する必要があります。

注:
IBM 提供の各データ・ハンドラーは、データ・ハンドラー・メタオブジェクトに定義される構成プロパティーを使用します。ただし、カスタム・データ・ハンドラーはその構成プロパティーに関するメタオブジェクトを使用することも使用しないこともあります。詳細については、データ・ハンドラー・メタオブジェクトの使用を参照してください。

データ・ハンドラーの呼び出し用のコンテキスト

表 1 に示すように、WebSphere Business Integration システム内部のデータを転送する必要があるコンポーネントは、データ・ハンドラーを呼び出すことができます。表 5 には、データ・ハンドラーを呼び出すことのできるコンポーネントの追加情報が記載されています。

表 5. データ・ハンドラーの呼び出し用のコンテキスト
コンポーネント イベント通信のタイプ フローのタイプ データ・ハンドラーを起動するソフトウェア
アダプター 非同期 イベント・トリガー・フロー コネクター
アクセス・クライアント 同期 呼び出しトリガー・フロー Server Access Interface

表 5 に示すように、イベント・トリガー・フローでは、アダプターがデータ・ハンドラーを直接呼び出します。呼び出しトリガー・フローでは、Server Access Interface (アクセス・クライアントと呼ばれる) を使用する外部プロセスがデータ・ハンドラーの呼び出しを開始します。

データ・ハンドラーは、アダプターから直接呼び出された場合でもアクセス・クライアントから間接的に呼び出された場合でも同じように動作します。これらのコンテキストについては、以降のセクションで説明します。

コネクター・コンテキストでのデータ・ハンドラー

イベント・トリガー・フローでは、コネクター と呼ばれるアダプターのランタイム・コンポーネントがデータ・ハンドラーと直接やり取りしてデータを変換します。

注:
IBM 提供のアダプターについては、個々のアダプター・ガイドを参照してください。カスタム・アダプターについては、アダプターのインプリメントに使用した言語に応じて、「コネクター開発ガイド (Java 用)」または 「コネクター開発ガイド (C++ 用)」を参照してください。これらのガイドは、WebSphere Business Integration Adapters の資料セットの一部として含まれています。

コネクターがデータ・ハンドラーを呼び出すと、データ・ハンドラーがコネクター・プロセスの一部として実行されます。図 1 に、コネクター・コンテキストでのデータ・ハンドラーを示します。

図 1. コネクターのコンテキストでのデータ・ハンドラー


データ変換には、ビジネス・オブジェクトの要件とフローの方向が反映されます。

コネクターでのビジネス・オブジェクトからストリングへの変換

ビジネス・オブジェクトからストリングへの変換の場合、コネクターはデータ・ハンドラーを呼び出して、このデータ・ハンドラーにビジネス・オブジェクトを渡します。データ・ハンドラーは、ビジネス・オブジェクトおよびビジネス・オブジェクト定義の情報を使用して、データのストリームまたはストリングを作成します。このデータのストリームまたはストリングは、データ・ハンドラーと関連したフォーマット (通常は特定の MIME タイプ) で作成されます。ビジネス・オブジェクトからストリングへの変換が便利なのは、コネクターが統合ブローカーからビジネス・オブジェクトの形式で情報を受信するときです。コネクターは、情報を受信後、ビジネス・オブジェクトの情報をアプリケーション (またはテクノロジー) の直列化データとして送信する必要があります。

図 2 に、データ・ハンドラーがビジネス・オブジェクトからストリングへの変換を行う際の、コネクター・コンテキストでのデータ・ハンドラーを示します。

図 2. コネクターのコンテキストでのビジネス・オブジェクトからストリングへの変換


  1. コネクターは、統合ブローカーからビジネス・オブジェクトを受け取ります。
  2. コネクターは、データ・ハンドラーのインスタンスを作成してビジネス・オブジェクトを処理します (DataHandler 基本クラスの createHandler() 静的メソッドを使用)。

    コネクターがデータ・ハンドラーをインスタンス化する方法の詳細については、コネクター・コンテキストでのインスタンス化を参照してください。

  3. コネクターは、以下のデータ・ハンドラー・メソッドのいずれかを呼び出すことにより、ビジネス・オブジェクトからストリングへの変換を要求します。

    コネクターは、ビジネス・オブジェクトを引き数としてこのメソッドに送信します。データ・ハンドラーは、ビジネス・オブジェクトを要求されたデータ・フォーマットに直列化します。

  4. データ・ハンドラーは、直列化データをコネクターに戻します。
  5. コネクターは直列化データを、電子メール、ファイル、または HTTP 接続などの宛先に書き込みます。

コネクターでのストリングからビジネス・オブジェクトへの変換

ストリングからビジネス・オブジェクトへの変換の場合、コネクターはデータ・ハンドラーを呼び出して、このデータ・ハンドラーに直列化データおよび関連の MIME タイプ・オブジェクトを渡します。データ・ハンドラーは、データのストリームまたはストリングを受け取ります。データ・ハンドラーは、データ・ストリーム内の情報を使用して、指定されたタイプのビジネス・オブジェクト・インスタンスを作成、命名、および設定します。ストリングからビジネス・オブジェクトへの変換は、コネクターが統合ブローカーにイベントを送信する必要がある場合に役に立ちます。アプリケーションは、このイベントを特定の MIME タイプを持つ直列化データとしてコネクターに送信します。

図 3 に、データ・ハンドラーがストリングからビジネス・オブジェクトへの変換を行う際の、コネクター・コンテキストでのデータ・ハンドラーを示します。

図 3. コネクターのコンテキストでのストリングからビジネス・オブジェクトへの変換


  1. コネクターがアプリケーション・イベントを検出します。イベントの形式は、電子メール、テキスト・ファイル、XML 文書、またはデータ・ハンドラーが存在するそのほかの任意の共通フォーマットのいずれでも構いません。
  2. コネクターは、データ・ハンドラーのインスタンスを作成してイベントを処理します (DataHandler 基本クラスの createHandler() 静的メソッドを使用)。

    コネクターがデータ・ハンドラーをインスタンス化する方法の詳細については、コネクター・コンテキストでのインスタンス化を参照してください。

  3. コネクターは、データ・ハンドラー・インスタンスの getBO() メソッドの引き数として直列化データを引き渡します。 データ・ハンドラーはビジネス・オブジェクトのインスタンスを作成します。

    コネクターが getBO() メソッドのデータ変換先のビジネス・オブジェクトを指定する場合もあります。ビジネス・オブジェクトのタイプを指定するコネクターもあり、またデータ・ハンドラーが直列化テキストからビジネス・オブジェクト・タイプを抽出できることを前提とするコネクターもあります。データ・ハンドラーはデータを構文解析し、直列化データを基にビジネス・オブジェクトの属性値を取り込みます。

  4. データ・ハンドラーは、ビジネス・オブジェクトをコネクターに戻します。
  5. コネクターはビジネス・オブジェクトを統合ブローカーに送信します。

Server Access Interface のコンテキストでのデータ・ハンドラー

呼び出しトリガー・フローでは、アクセス・クライアントがデータ・ハンドラーとやり取りしてデータを変換します。アクセス・クライアント は外部プロセスで、Server Access Interface を使用して InterChange Server Express とやり取りします。 アクセス・クライアントは、Server Access Interface API の ItoExternalForm() メソッドまたは IcreateBusinessObjectFrom() メソッドを呼び出すと、データ・ハンドラーの呼び出しを開始します。 Server Access Interface は InterChange Server Express プロセスの一部として動作し、実際にデータ・ハンドラーを起動します。
InterChange Server

Server Access Interface は API で、アクセス・クライアントが InterChange Server 内のコラボレーションを実行できるようになります。このインターフェースは、InterChange Server が統合ブローカーの場合にのみ 使用できます。アクセス・クライアントにおけるこのインターフェースの詳細については、IBM WebSphere InterChange Server 資料セットの「アクセス開発ガイド」を参照してください。

アクセス・クライアントは、クライアント・ブラウザーからの要求を処理するサーブレットの場合があります。要求は、データ要求、注文要求、または別のタイプの企業間トランザクションの場合があります。別の例として、アクセス・クライアントは、Server Access Interface を使用して InterChange Server Express にアクセスし、別のアプリケーションとデータを交換する C++ または Java プログラムの場合もあります。

アクセス・クライアントがデータ・ハンドラーを必要とする呼び出しを開始すると、データ・ハンドラーが InterChange Server プロセスの一部として実行されます。図 4 に、Server Access Interface コンテキストでのデータ・ハンドラーを示します。この例では、アクセス・クライアントは Web サーバーとサーブレットです。

図 4. Server Access Interface のコンテキストでのデータ・ハンドラー


データ変換には、ビジネス・オブジェクトの要件とフローの方向が反映されます。

Server Access Interface でのビジネス・オブジェクトからストリングへの変換

ビジネス・オブジェクトからストリングへの変換では、データ・ハンドラーはコラボレーションの実行結果としてビジネス・オブジェクトを受け取ります。データ・ハンドラーは、ビジネス・オブジェクト内の情報を使用してデータのストリームまたはストリングを作成します。このデータはデータ・ハンドラーと関連したフォーマットで、通常は特定の MIME タイプです。アクセス・クライアントはほとんどの場合、作成されたビジネス・オブジェクトを直列化データとしてアプリケーションに送信します。

図 5 に、データ・ハンドラーがアクセス・クライアントについてのビジネス・オブジェクトからストリングへの変換を行う際の、Server Access Interface コンテキストでのデータ・ハンドラーを示します。

図 5. Server Access Interface コンテキストでのビジネス・オブジェクトからストリングへの変換


  1. コラボレーションは、要求されたデータまたは要求されたアクションの結果をアクセス・クライアントに戻します。
  2. ビジネス・オブジェクトを要求されたフォーマットに変換するために、アクセス・クライアントは Server Access Interface の ItoExternalForm() メソッドへの引き数としてビジネス・オブジェクトを送信します。
  3. Server Access Interface は次のアクションを行います。
  4. データ・ハンドラーはビジネス・オブジェクトを構文解析して直列化データを作成します。
  5. データ・ハンドラーは、直列化データを Server Access Interface に戻します。
  6. Server Access Interface は直列化データをアクセス・クライアントに戻します。

Server Access Interface でのストリングからビジネス・オブジェクトへの変換

ストリングからビジネス・オブジェクトへの変換では、データ・ハンドラーはデータのストリームまたはストリングを受け取ります。データ・ハンドラーは、データ・ストリーム内の情報を使用して、指定されたタイプのビジネス・オブジェクト・インスタンスを作成、命名、および設定します。ストリングからビジネス・オブジェクトへの変換は、アクセス・クライアントが InterChange Server InterChange Server Express のコラボレーションにビジネス・オブジェクトを送信する必要がある場合に役に立ちます。アクセス・クライアントがこの直列化データ (通常は、特定の MIME タイプ) をデータ・ハンドラーに送信します。

図 6 に、データ・ハンドラーがアクセス・クライアントについてのストリングからビジネス・オブジェクトへの変換を行う際の、Server Access Interface コンテキストでのデータ・ハンドラーを示します。

図 6. Server Access Interface コンテキストでのストリングからビジネス・オブジェクトへの変換


  1. 直列化データをビジネス・オブジェクトに変換するために、アクセス・クライアントは Server Access Interface の IcreateBusinessObjectFrom() メソッドへの引き数として直列化データを送信します。
  2. Server Access Interface は次のアクションを行います。
  3. データ・ハンドラーはビジネス・オブジェクトのインスタンスを作成します。

    データ・ハンドラーはデータを構文解析し、直列化データを基にビジネス・オブジェクトの属性値を取り込みます。

  4. データ・ハンドラーは、ビジネス・オブジェクトを Server Access Interface に戻します。
  5. Server Access Interface はビジネス・オブジェクトをアクセス・クライアントに戻します。
  6. アクセス・クライアントはビジネス・プロセス内のビジネス・オブジェクト・データを使用するコラボレーションを呼び出します。

Copyright IBM Corp. 2004