このセクションでは、ご使用の ODA が生成可能なコンテンツを決定する際に検討すべき問題に関して、次のトピックを取り上げます。
ODK API は、ODA がサポートする有効なコンテンツ・タイプを ContentType クラスを使用して識別します。
このクラスには、サポートされる各コンテンツ・タイプの静的メンバー変数が含まれます (表 31 を参照)。
コンテンツ・タイプ | ContentType メンバー変数 |
---|---|
ビジネス・オブジェクト定義 | BusinessObject |
バイナリー・ファイル | BinaryFile |
ContentType クラスは、サポートされる ODA コンテンツ・タイプの列挙型リストをシミュレートします。例えば、ビジネス・オブジェクト定義を表すコンテンツ・タイプ・オブジェクトでは、次のように BusinessObject メンバー変数のみが使用されます。
ContentType.BusinessObject
特定のコンテンツ・タイプの生成をサポートするために、ODA は、表 17 に示すコンテンツ生成インターフェースを適切に実装する必要があります。
ODA はすべて、ビジネス・オブジェクト定義の生成をサポートする必要があります。ODA は、必要に応じてバイナリー・ファイルをそのコンテンツとして生成することもできます。コンテンツ生成インターフェースには、表 32 に示すタイプのメソッドが含まれます。コンテンツ生成インターフェースを実装する際は、これらのメソッドを実装する必要があります。
どのコンテンツ生成インターフェースのメソッドを呼び出すのかを決定する際に、ビジネス・オブジェクト・ウィザードは ODA のメタデータを確認します。このメタデータのコンポーネントの 1 つが、supportedContent メンバー変数です。このメンバー変数は、ODA の getMetaData() メソッド内で呼び出される AgentMetaData() コンストラクターによって初期化されます。
詳しくは、ODA メタデータの初期化を参照してください。
表 33 は、コンテンツ生成インターフェース内のメソッドの実装方法に関して、この章で取り上げるトピックを示しています。
コンテンツ生成インターフェース | 詳細情報の参照先 |
---|---|
IGeneratesBoDefs | コンテンツとしてのビジネス・オブジェクト定義の生成 |
IGeneratesBinFiles | コンテンツとしてのバイナリー・ファイルの生成 |
ODA は、表 34 に示すコンテンツ・プロトコル のいずれかを使用して、特定のコンテンツ・タイプを生成できます。コンテンツ・プロトコルは、サポートされるコンテンツを生成する際の ODA とビジネス・オブジェクト・ウィザード との対話方法を決定します。つまり、ビジネス・オブジェクト・ウィザードが ODA からのコンテンツ生成を明示的に開始できるかどうかを決定します。
コンテンツ・プロトコルをサポートするには、ODA で次のステップを実行する必要があります。
IGeneratesBoDefs インターフェースと IGeneratesBinFiles インターフェースは、どちらも IGeneratesContent インターフェースから拡張されています。
したがって、これらのインターフェースは、IGeneratesContent で定義される単一のメソッド getContentProtocol() を継承します。
ODA のコンテンツ生成インターフェースを実装する際は、getContentProtocol() メソッドを実装して、サポートされるコンテンツ・タイプに使用するコンテンツ・プロトコルを指定する必要があります。
getContentProtocol() メソッドは、ODA でサポートされるコンテンツ・タイプを示す ContentType オブジェクトを引き数として受け入れます。getContentProtocol() メソッドは、この指定されたコンテンツ・タイプに対してサポートされるコンテンツ・プロトコルを戻します。このメソッドは、サポートされるコンテンツ・プロトコルをコンテンツ・プロトコル定数 (表 34 を参照) の 1 つとして戻します。これらの定数は、ODKConstant インターフェース内で定義されています。
図 58 は、getContentProtocol() の実装を示しています。ファイルの生成にはコールバック・プロトコル、ビジネス・オブジェクト定義の生成には要求時プロトコルがサポートされていることがわかります。
public long getContentProtocol(ContentType contentType) { if (contentType == ContentType.BinaryFile) return ODKConstant.CONTENT_PROTOCOL_CALLBACK; else return ODKConstant.CONTENT_PROTOCOL_ONREQUEST; }
表 35 に示すように、コンテンツ生成メソッドの実装は、コンテンツ・タイプがサポートするコンテンツ・プロトコルによって異なります。
表 35. コンテンツ・プロトコルおよびコンテンツ生成メソッド
表 36 は、コンテンツ生成メソッドの実装方法に関して、この章で取り上げるトピックを示しています。
コンテンツ生成メソッド | 詳細情報の参照先 |
---|---|
IGeneratesBoDefs.generateBODefs() | generateBoDefs() メソッドの定義 |
IGeneratesBinFiles.generateBinFiles() | generateBinFiles() メソッドの定義 |