データ・ハンドラーの呼び出し

データ・ハンドラーが呼び出されるコンテキストに関係なく、データ・ハンドラーは createHandler() メソッドでインスタンス化されます。各コンテキストでのこのメソッドの呼び出し方法は、次のとおりです。

コネクター・コンテキストでのインスタンス化

図 7 に、データ・ハンドラーがコネクター・コンテキストで呼び出された場合の、データ・ハンドラーのインスタンス化の例を示します。

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


コネクター・コンテキストで呼び出されたデータ・ハンドラーをインスタンス化するために、コネクターは次の手順を実行します。

  1. コネクターの始動時にメタオブジェクトがメモリーに読み込まれます。ただし、メタオブジェクトがコネクターのサポート・オブジェクトのリストに含まれている場合に限ります。

    メタオブジェクトは、ビジネス・オブジェクトとともにリポジトリーに格納されます。データ・ハンドラーがメタオブジェクト定義をアクセスできるためには、メタオブジェクト定義はビジネス・オブジェクト定義のように、メモリー内に存在する必要があります。これらのメタオブジェクトがコネクター・プロセスの一部としてメモリー内に存在する場合、メタオブジェクトはコネクター・コンテキストで呼び出されたデータ・ハンドラーからアクセスできます。

  2. コネクターは DataHandler 基本クラス内の setConfigMOName() 静的メソッドを呼び出して、データ・ハンドラーの基本クラス内の静的プロパティーをデータ・ハンドラーのトップレベルのメタオブジェクトの名前に設定します。

    このトップレベルのメタオブジェクトはコネクター・メタオブジェクトです (デフォルトでは MO_DataHandler_Default)。

    トップレベルのメタオブジェクトは、コネクターのサポート・オブジェクト・リストに存在する必要があります。

    注:
    コネクターがデータ・ハンドラーのトップレベルのメタオブジェクトの名前を取得する方法は、コネクターの設計により決まります。詳細については、コネクターの構成を参照してください。
  3. コネクターは DataHandler 基本クラス内の createHandler() 静的メソッドを呼び出して、必要なデータ変換を実行する DataHandler 基本クラスのインスタンスを作成します。 作成されるクラスの名前は、次の 2 つの方法のいずれかで決定されます。
  4. データ・ハンドラーは必要なデータ変換を実行します。コネクター・エージェントは、該当する DataHandler メソッドを呼び出して必要な変換を実行します。
  5. データ・ハンドラーは、該当するフォーマットをコネクター・エージェントに戻します。

Server Access Interface のコンテキストでのインスタンス化

図 8 に、データ・ハンドラーが Server Access Interface コンテキストで呼び出された場合の、データ・ハンドラーのインスタンス化の例を示します。

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


Server Access Interface コンテキストで呼び出されたデータ・ハンドラーをインスタンス化するために、Server Access Interface は次の手順を実行します。

  1. サーバーの始動時に、リポジトリー内のその他のビジネス・オブジェクト定義とともに、メタオブジェクトがメモリーに読み込まれます。

    メタオブジェクトは、ビジネス・オブジェクトとともにリポジトリーに格納されます。データ・ハンドラーがメタオブジェクト定義をアクセスできるためには、メタオブジェクト定義はビジネス・オブジェクト定義のように、メモリー内に存在する必要があります。これらのメタオブジェクトが Business Integration Express (および Server Access Interface) プロセスの一部としてメモリー内に存在する場合、メタオブジェクトは Server Access Interface コンテキストで呼び出されたデータ・ハンドラーからアクセスできます。

  2. アクセス・クライアントは、次の Server Access Interface メソッド、IcreateBusinessObjectFrom() または ItoExternalForm() のいずれかでデータ・ハンドラーのインスタンスの作成を開始します。

    これらのメソッドは、変換するデータの MIME タイプを渡します。

    注:
    アクセス・クライアントは、データ・ハンドラーを呼び出すには Server Access Interface メソッドを使用する必要があります。これらのメソッドはデータ・ハンドラー・インターフェース・メソッドを間接的に呼び出しますが、これらのメソッドではデータ・ハンドラー・インターフェースの一部しか使用できません。 Server Access Interface メソッドの詳細については、「アクセス開発ガイド」を参照してください。データ・ハンドラー・インターフェースに用意されているメソッドの詳細については、データ・ハンドラーの基本クラス・メソッドを参照してください。
  3. Server Access Interface はデータ・ハンドラーのトップレベルのメタオブジェクトの名前を MO_Server_DataHandler に設定します。
  4. Server Access Interface は DataHandler サブクラスのインスタンスを作成して、必要なデータ変換を実行します (DataHandler 基本クラスの createHandler() メソッドを使用)。

    Server Access Interface のコンテキストで呼び出された場合、createHandler() メソッドは、クラス名を指定しません。代わりに、createHandler() は MIME タイプを MIME タイプ・ストリングに変換し、データ・ハンドラーのトップレベルのメタオブジェクトの名前を取得します。このトップレベルのメタオブジェクトから、createHandler() はデータ・ハンドラーの子メタオブジェクトの名前を取得します。この子メタオブジェクトには、インスタンス化するクラス名などの構成情報が格納されています。この派生方法の詳細については、データ・ハンドラー・クラスの識別を参照してください。

  5. データ・ハンドラーは必要なデータ変換を実行します。Server Access Interface は該当する DataHandler メソッドを呼び出して必要な変換を実行します。
  6. データ・ハンドラーは、要求されたフォーマットを Server Access Interface に戻します。
  7. Server Access Interface は要求されたフォーマットをアクセス・クライアントに戻します。

Copyright IBM Corp. 2004