ODA で生成されるコンテンツの決定

このセクションでは、ご使用の ODA が生成可能なコンテンツを決定する際に検討すべき問題に関して、次のトピックを取り上げます。

ODA コンテンツ・タイプの選択

ODK API は、ODA がサポートする有効なコンテンツ・タイプを ContentType クラスを使用して識別します。

このクラスには、サポートされる各コンテンツ・タイプの静的メンバー変数が含まれます (表 31 を参照)。

表 31. コンテンツ・タイプの表現方法
コンテンツ・タイプ ContentType メンバー変数
ビジネス・オブジェクト定義 BusinessObject
バイナリー・ファイル BinaryFile

ContentType クラスは、サポートされる ODA コンテンツ・タイプの列挙型リストをシミュレートします。例えば、ビジネス・オブジェクト定義を表すコンテンツ・タイプ・オブジェクトでは、次のように BusinessObject メンバー変数のみが使用されます。

ContentType.BusinessObject
 

特定のコンテンツ・タイプの生成をサポートするために、ODA は、表 17 に示すコンテンツ生成インターフェースを適切に実装する必要があります。

ODA はすべて、ビジネス・オブジェクト定義の生成をサポートする必要があります。ODA は、必要に応じてバイナリー・ファイルをそのコンテンツとして生成することもできます。コンテンツ生成インターフェースには、表 32 に示すタイプのメソッドが含まれます。コンテンツ生成インターフェースを実装する際は、これらのメソッドを実装する必要があります。

表 32.
コンテンツ生成インターフェース内のメソッド
メソッド メソッドの目的 IGeneratesBoDefs
IGeneratesBinFiles
ソース・ノード生成メソッド ビジネス・オブジェクト・ウィザードは、ユーザーに対して表示するソース・ノード階層を取得するためにこのメソッドを呼び出します (ステップ 3: ソースの選択)。 getTreeNodes() なし
コンテンツ生成メソッド ビジネス・オブジェクト・ウィザードは、指定されたソース・データ・コンテンツの生成を開始するためにこのメソッドを呼び出します (ステップ 5: ビジネス・オブジェクトの生成中)。 generateBoDefs() generateBinFiles()
コンテンツ取得メソッド ビジネス・オブジェクト・ウィザードは、生成済みコンテンツを ODA メモリーから取得するためにこのメソッドを呼び出します (ステップ 5: ビジネス・オブジェクトの生成中)。 getBoDefs() getBinFile()

どのコンテンツ生成インターフェースのメソッドを呼び出すのかを決定する際に、ビジネス・オブジェクト・ウィザードは ODA のメタデータを確認します。このメタデータのコンポーネントの 1 つが、supportedContent メンバー変数です。このメンバー変数は、ODA の getMetaData() メソッド内で呼び出される AgentMetaData() コンストラクターによって初期化されます。

詳しくは、ODA メタデータの初期化を参照してください。

表 33 は、コンテンツ生成インターフェース内のメソッドの実装方法に関して、この章で取り上げるトピックを示しています。

表 33. コンテンツ生成インターフェースの開発方法
コンテンツ生成インターフェース 詳細情報の参照先
IGeneratesBoDefs コンテンツとしてのビジネス・オブジェクト定義の生成
IGeneratesBinFiles コンテンツとしてのバイナリー・ファイルの生成

ODA コンテンツ・プロトコルの選択

ODA は、表 34 に示すコンテンツ・プロトコル のいずれかを使用して、特定のコンテンツ・タイプを生成できます。コンテンツ・プロトコルは、サポートされるコンテンツを生成する際の ODA とビジネス・オブジェクト・ウィザード との対話方法を決定します。つまり、ビジネス・オブジェクト・ウィザードが ODA からのコンテンツ生成を明示的に開始できるかどうかを決定します。

表 34. ODA のコンテンツ・プロトコル
コンテンツ・
プロトコル
説明 コンテンツ・プロトコル定数
要求時 ビジネス・オブジェクト・ウィザードは、コンテンツ生成メソッドを呼び出すことにより、ODA に対してコンテンツを生成するように明示的に要求します。このメソッドが完了すると、要求時コンテンツの準備が整います。ビジネス・オブジェクト・ウィザードは、コンテンツ取得メソッドを呼び出すことにより、都合の良いときにこのコンテンツを取得できます。 CONTENT_PROTOCOL_ONREQUEST
コールバック ODA は特定の方法でコンテンツを生成し、コンテンツの準備が整った時点でその旨をビジネス・オブジェクト・ウィザードに通知します。通知を受け取ると、ビジネス・オブジェクト・ウィザードはコンテンツ取得メソッドを呼び出して、このコンテンツを取得します。 CONTENT_PROTOCOL_CALLBACK

注:
ODA は、要求時コンテンツ・プロトコルを使用したビジネス・オブジェクト定義コンテンツの生成をサポートする必要があります。さらに、ODA はこれらのコンテンツ・プロトコルでのファイル・コンテンツの生成をサポートできます。

コンテンツ・プロトコルをサポートするには、ODA で次のステップを実行する必要があります。

実装されるコンテンツ・プロトコルの指定

IGeneratesBoDefs インターフェースと IGeneratesBinFiles インターフェースは、どちらも IGeneratesContent インターフェースから拡張されています。

したがって、これらのインターフェースは、IGeneratesContent で定義される単一のメソッド getContentProtocol() を継承します。

ODA のコンテンツ生成インターフェースを実装する際は、getContentProtocol() メソッドを実装して、サポートされるコンテンツ・タイプに使用するコンテンツ・プロトコルを指定する必要があります。

注:
ODA は、指定されたコンテンツ・タイプに対して 1 つ のコンテンツ・プロトコルをサポートします。

getContentProtocol() メソッドは、ODA でサポートされるコンテンツ・タイプを示す ContentType オブジェクトを引き数として受け入れます。getContentProtocol() メソッドは、この指定されたコンテンツ・タイプに対してサポートされるコンテンツ・プロトコルを戻します。このメソッドは、サポートされるコンテンツ・プロトコルをコンテンツ・プロトコル定数 (表 34 を参照) の 1 つとして戻します。これらの定数は、ODKConstant インターフェース内で定義されています。

注:
今回のリリースでは、ODA は要求時にビジネス・オブジェクト定義を生成する必要があります。したがって、ContentType.BusinessObject というコンテンツ・タイプ用の CONTENT_PROTOCOL_ONREQUEST 定数を戻すために、getContentProtocol() メソッドを実装する必要があります。さらに、ODA はこれらのプロトコルでのファイル生成をサポートし、ContentType.BinaryFile というコンテンツ・タイプ用の適切なコンテンツ・プロトコル定数を戻すことができます。

図 58 は、getContentProtocol() の実装を示しています。ファイルの生成にはコールバック・プロトコル、ビジネス・オブジェクト定義の生成には要求時プロトコルがサポートされていることがわかります。

図 58. サポートされるコンテンツ・プロトコルの指定

public long getContentProtocol(ContentType contentType)
 {
     if (contentType == ContentType.BinaryFile)
       return ODKConstant.CONTENT_PROTOCOL_CALLBACK;
     else
       return ODKConstant.CONTENT_PROTOCOL_ONREQUEST;
 }
 

コンテンツ生成メソッドの実装

表 35 に示すように、コンテンツ生成メソッドの実装は、コンテンツ・タイプがサポートするコンテンツ・プロトコルによって異なります。

表 35. コンテンツ・プロトコルおよびコンテンツ生成メソッド
コンテンツ・プロトコル コンテンツ生成メソッドの

呼び出し方法

コンテンツ生成メソッドの実装
要求時 ビジネス・オブジェクト・ウィザードは、コンテンツ生成 (ビジネス・オブジェクト定義またはファイル) を開始する際に、コンテンツ生成メソッドを明示的に呼び出します。 メソッドは、引き数として渡されたソース・ノードのコンテンツを生成し、適切なコンテンツ・メタデータをビジネス・オブジェクト・ウィザードに戻す必要があります。
コールバック ビジネス・オブジェクト・ウィザードは、コンテンツ生成メソッドを明示的に呼び出すことはありません。なぜなら、コンテンツ生成 (ファイルのみ) は、このコンテンツ・プロトコル用の ODA によって開始されるからです。 メソッドを直接呼び出してはならない ため、例外をスローする必要があります。コンテンツは実際には、コンテンツ生成メソッドの外部にある別のメソッド、クラス、またはプロセス内で生成されます。

表 36 は、コンテンツ生成メソッドの実装方法に関して、この章で取り上げるトピックを示しています。

表 36. コンテンツ生成メソッドの開発方法
コンテンツ生成メソッド 詳細情報の参照先
IGeneratesBoDefs.generateBODefs() generateBoDefs() メソッドの定義
IGeneratesBinFiles.generateBinFiles() generateBinFiles() メソッドの定義

Copyright IBM Corp. 2004