実行時に、ODA の実行には次のコンポーネントが関与します。
コンテンツ生成のために ODA が必要とする情報を取得するための一連のダイアログ・ボックスを表示します。
ODK API のクラスと ODK インフラストラクチャーを使用して ODA と通信を行います。ODA 始動スクリプトで開始するのは、ODA ランタイムです。
ODA は、ビジネス・オブジェクト・ウィザードのダイアログ・ボックスで情報を ODA ランタイムから受け取ります。次に ODA は、情報 (生成されたコンテンツなど) を ODA ランタイムを経由してビジネス・オブジェクト・ウィザードに送ります。
図 52 は、ODA ランタイム・アーキテクチャーのコンポーネントを示しています。
図 52. Object Discovery Agent のアーキテクチャー
ビジネス・オブジェクト定義を生成するために、ODA は次のステップを実行する必要があります。
表 16 は、ODA 実行のステップと、それを開始するビジネス・オブジェクト・ウィザードのステップを示しています。
作業 | ビジネス・オブジェクト・ウィザードのステップ | 詳細情報の参照先 | |
---|---|---|---|
1. | 開始する ODA を選択します。 | ステップ 1: エージェントの選択 | ODA の選択 |
2. | ODA 構成プロパティーを取得します (開くデータ・ソースを記述する構成プロパティーも含めて)。 | ステップ 2: エージェントの構成 | ODA 構成プロパティーの取得 |
3. | ODA コンテンツを生成するソース・データを取得します。 | ステップ 3: ソースの選択 | ソース・データの選択および確認 |
4. | 選択したソース・データを確認します。 | ステップ 4: ソース・ノードの確認 | ソース・データの選択および確認 |
5. | ビジネス・オブジェクト定義を生成します。 | ステップ 5: ビジネス・オブジェクトの生成中 | コンテンツの生成 |
|
| ビジネス・オブジェクト・プロパティー | ビジネス・オブジェクト・プロパティーの取得 |
6. | ビジネス・オブジェクト定義を保管します。 | ステップ 6: ビジネス・オブジェクトの保管 | コンテンツの保管 |
「ファイル」->「ODA を使用して新規作成」を選択すると、Business Object Designer Express は、ODA を実行するためにビジネス・オブジェクト・ウィザードを起動します。ビジネス・オブジェクト・ウィザードのステップ 1 では、「エージェントの選択」ダイアログ・ボックスが表示されます。このダイアログ・ボックスでは、使用可能なすべての Object Discovery Agent にグラフィックによりアクセスすることができます。
このダイアログ・ボックスから、ユーザーが、実行する ODA を選択します。
ビジネス・オブジェクト・ウィザードはその ODA に接続し、次のステップを実行します。
ODA クラスは、ODA 基底クラス (ODKAgentBase2) を拡張したものです。ODA の振る舞いが定義されています。
ODA クラスの作成方法については、ODA 基底クラスの拡張を参照してください。
ビジネス・オブジェクト・ウィザードのステップ 2 では、「エージェントの構成」ダイアログ・ボックスが表示されます。このダイアログ・ボックスでは、ODA の構成プロパティーが表示されます。
構成プロパティー は、ODA が実行を開始するために必要なプロパティーです。ODK API は、構成プロパティーをエージェント・プロパティー (AgentProperty) オブジェクトとして表します。
このステップでは、ウィザードに構成プロパティーが表示されます。ユーザーがそれらの構成プロパティーを更新すると、ユーザーにより初期化されたプロパティーが ODA ランタイム・メモリーに書き込まれます。
図 53. ビジネス・オブジェクト・ウィザードのエージェントの構成 (ステップ 2)
図 53 に示すように、ビジネス・オブジェクト・ウィザードは次のステップを実行します。
ODA から構成プロパティーを取得する際、ウィザードは、ODA 基底クラス (ODKAgentBase2) に定義されている getAgentProperties() メソッドを呼び出します。
このメソッドは、ODA クラスの一部として開発者が実装する必要のある抽象メソッドです。これにより、ODA の構成プロパティーが AgentProperty オブジェクトの配列としてビジネス・オブジェクト・ウィザードに戻されます。これらの構成プロパティーには、名前、タイプ、任意の有効な値、説明、入力上の制限、および任意のデフォルト値を含めることができます。
getAgentProperties() が提供する構成プロパティーの他に、ビジネス・オブジェクト・ウィザードは常に、すべての ODA に共通の以下の標準構成プロパティーを提供します。
詳しくは、構成プロパティーの取得を参照してください。
ビジネス・オブジェクト・ウィザードは、これらのプロパティーを ODA ランタイム・メモリーに保管します。ODA 内では、ODKUtility クラスのインスタンスを通じて、これらのプロパティーにアクセスできます (ODKUtility クラスには、プロパティーへのアクセスのために getAgentProperty() メソッドと getAllAgentProperties() メソッドが用意されています)。
getAgentProperties() を呼び出した後、ビジネス・オブジェクト・ウィザードは ODA 基底クラス (ODKAgentBase2) の getMetaData() メソッドを呼び出します。
このメソッドは、ODA クラスの一部として開発者が実装する必要のある抽象メソッドです。これにより、ODA メタデータを含む初期化済みの AgentMetaData オブジェクトが戻されます。
ODA を初期化する際、ウィザードは ODA 基底クラス (ODKAgentBase2) の init() メソッドを呼び出します。
このメソッドは、ODA クラスの一部として開発者が実装する必要のある抽象メソッドです。これにより、リソース割り振りやデータ・ソースへの接続作成などの初期化タスクが実行されます
この章では、ODA の初期化に必要なメソッドの実装方法に関して、次のトピックを取り上げます。
初期化メソッド | 詳細情報の参照先 |
---|---|
getAgentProperties() | 構成プロパティーの取得 |
getMetaData() | ODA メタデータの初期化 |
init() | ODA 開始の初期化 |
ビジネス・オブジェクト・ウィザードのステップ 3 では、「ソースの選択」ダイアログ・ボックスが表示されます。このダイアログ・ボックスでは、データ・ソースのソース・ノード が表示されます。
ソース・ノードはソース・ノード階層内に配列されています。各ソース・ノードは、ODA がデータ・ソース内で「検出」したオブジェクトの名前です。ソース・ノードを展開すれば、その他の子ノードを表示することができます。また、ソース・ノードを選択すれば、コンテンツを生成することができます。ユーザーは、このソース・ノード階層を展開し、データ・ソースからオブジェクトを選択して、コンテンツへの変換を行うことができます。詳しくは、ソース・ノード階層内での移動を参照してください。
ステップ 3 でウィザードは次のステップを実行します。
ソース・コード階層を取得する際、ウィザードは IGeneratesBoDefs インターフェースの getTreeNodes() メソッドを呼び出します。
ODA 開発者は、ODA クラスに IGeneratesBoDefs インターフェースを実装する際に、このメソッドを実装する必要があります。このメソッドは、データ・ソースを検索してソース・ノードを「検出」し、それらのソース・ノードを TreeNode オブジェクトの配列としてビジネス・オブジェクト・ウィザードに戻します。最初にノードを展開したとき、ウィザードは getTreeNodes() を呼び出して、ソース・ノード階層の特定のレベルを表示します。この階層を横断することにより、詳細のレベルを選択できます。詳しくは、ソース・ノード階層内での移動を参照してください。
ビジネス・オブジェクト・ウィザードのステップ 4 では、「ソース・ノードの確認」ダイアログ・ボックスが表示されます。このダイアログでは、ユーザーが選択したソース・ノードが表示されます。
ユーザーは、選択内容を確認したり、「ソースの選択」ダイアログ・ボックスに戻ってソース・ノードを選択し直したりすることができます。「次へ」ボタンをクリックすると、ウィザードはコンテンツの生成を開始します。
getTreeNodes() メソッドの実装方法については、ソース・ノードの生成を参照してください。
ODA を作成すると、表 17 に示すコンテンツ・タイプ のどちらか一方または両方を生成できます。
ODA が生成するデータの構造体は、コンテンツ・タイプによって決まります。 ODA で特定のコンテンツをサポートするには、ODA に対して適切なコンテンツ生成インターフェース を実装する必要があります。表 17 は、ODA がサポートするコンテンツ・タイプと、それに対して ODA が実装する必要のあるコンテンツ生成インターフェースを示しています。
コンテンツ・タイプ | 説明 | コンテンツ生成インターフェース |
---|---|---|
ビジネス・オブジェクト定義 | ODA は、データ・ソース内のオブジェクトを表すビジネス・オブジェクト定義を生成します。 |
IGeneratesBoDefs
|
バイナリー・ファイル | ODA は、生成されたコンテンツに関する情報を保持するファイル・オブジェクトを生成します。 |
IGeneratesBinFiles
|
ソース・ノードを選択し、確認すると、ビジネス・オブジェクト・ウィザードはステップ 5 のコンテンツ生成を開始します。
このステップでは、「ビジネス・オブジェクトの生成中」画面が表示されます。また、ビジネス・オブジェクト定義のコンテンツ生成メソッド generateBoDefs() が呼び出され、(ステップ 4 で) ユーザーが選択したソース・ノードの配列が ODA に渡されます。
このメソッドは、選択したソース・ノードに対応するビジネス・オブジェクト定義を生成します。 ODA は、要求時コンテンツ・プロトコルでビジネス・オブジェクト定義の生成をサポートする必要がある ため、ビジネス・オブジェクト・ウィザードは 必ず generateBoDefs() メソッドを呼び出します。したがって、ODA 開発者は、ODA に IGeneratesBoDefs インターフェースを実装する際に、このメソッドを実装する必要があります。
ODA でファイル・コンテンツが生成されるかどうかは、IGeneratesBinFiles インターフェースが実装されているかどうかで決まります。ODA クラスがこのインターフェースを実装している場合、生成されたコンテンツを実際に提供するメソッドは、ファイル・コンテンツ・タイプに対して ODA が使用しているコンテンツ・プロトコル によって異なります。
このメソッドには、ユーザーが選択したソース・ノードの配列が渡されます。したがって、ODA でファイル・コンテンツをサポートするには、開発者は ODA に IGeneratesBinFiles インターフェースを実装する際に、このメソッドを実装する必要があります。
ODA 開発者は、ファイル生成機構を実装する必要があります。
したがって、ビジネス・オブジェクト・ウィザードがファイル用のコンテンツ生成メソッド generateBinFiles() を呼び出すかどうかは、次のことによって決まります。
どのコンテンツ・プロトコルを使用する場合でも、コンテンツを生成するには、次のステップを実行する必要があります。
以降のセクションでは、これらのステップについて概説します。コンテンツ生成プロセスの概要についてもう少し詳しく知りたい方は、表 18 に示す参照先をご覧になり、サポートされるコンテンツ・タイプの詳細な情報を確認してください。
コンテンツ・タイプ | 詳細情報の参照先 |
---|---|
ビジネス・オブジェクト定義 | ビジネス・オブジェクト定義の生成 |
バイナリー・ファイル | ファイルの生成 |
通常 ODA は、ビジネス・オブジェクト定義を生成する前に、追加情報を必要とします。 ODA は、ビジネス・オブジェクト・プロパティー を定義することにより、このような追加情報を要求できます。
ODK API は、ビジネス・オブジェクト・プロパティーをエージェント・プロパティー (AgentProperty) オブジェクトとして表します。
ビジネス・オブジェクト・プロパティーを収集するために、ODA はビジネス・オブジェクト・ウィザードに「BO プロパティー」ダイアログ・ボックスを表示することができます。
このダイアログ・ボックスでは、ウィザードによりビジネス・オブジェクト・プロパティーが表示されます。それらのビジネス・オブジェクト・プロパティーを更新すると、ユーザーにより初期化されたプロパティーが ODA ランタイム・メモリーに書き込まれます (図 51 を参照)。
「BO プロパティー」ダイアログ・ボックスを表示するために、ODA のコンテンツ生成メソッドは、ODKUtility クラスで定義されている getBOSpecificProps() メソッドを呼び出します。
図 54 に示すように、getBOSpecificProps() メソッドでは次のステップが実行されます。
ビジネス・オブジェクト・プロパティーを送信するために、getBOSpecificProps() メソッドは、エージェント・プロパティー (AgentProperty) オブジェクト (表示する各ビジネス・オブジェクト・プロパティーごとに 1 つのオブジェクト) の初期化済みの配列を引き数として送ります。
ODA 内のこれらのビジネス・オブジェクト・プロパティーにアクセスするには、getBOSpecificProps() によって戻される Java Hashtable オブジェクトを使用します。または、getBOSpecificProperty() メソッドと getAllBOSpecificProperties() メソッドを提供する ODKUtility クラスのインスタンスを使用してこれらのプロパティーにアクセスすることもできます。
ODA は、getBOSpecificProps() を繰り返し呼び出すことで、さまざまなビジネス・オブジェクトのプロパティー・セットを取得できます。getBOSpecificProps() メソッドの使用方法については、ビジネス・オブジェクト・プロパティーの要求を参照してください。
ODA は、生成したコンテンツを次の 2 つの部分に分けてビジネス・オブジェクト・ウィザードに提供します。
コンテンツ・メタデータ (ContentMetaData) オブジェクトには、ODA の生成済みコンテンツについての情報が含まれます。
ビジネス・オブジェクト・ウィザードはこの情報を使用して、生成済みコンテンツを取得する際に使用するコンテンツ取得メソッドを決定します。
ODA は、ODA クラスのメソッドでアクセス可能な生成済みコンテンツ構造体 内のある場所に対して、生成済みコンテンツを書き込みます。
例えば、ODA クラスのメンバー変数である配列にコンテンツを書き込むことができます。
生成済みコンテンツを提供するメソッドは、特定のコンテンツ・タイプに対して ODA が使用しているコンテンツ・プロトコルによって異なります。
ビジネス・オブジェクト・ウィザードは、コンテンツ・タイプに基づいてコンテンツ生成メソッドを呼び出します。
次の表は、生成済みコンテンツの提供方法に関する情報の参照先を示しています。
コンテンツ・タイプ | 詳細情報の参照先 |
---|---|
ビジネス・オブジェクト定義 | 生成済みのビジネス・オブジェクト定義の提供 |
バイナリー・ファイル | 生成されたファイルの提供 |
生成済みコンテンツを取得する際、ビジネス・オブジェクト・ウィザードは、表 19 に示すコンテンツ取得メソッドを呼び出します。
コンテンツ・タイプ | コンテンツ取得メソッド | 詳細情報の参照先 |
---|---|---|
ビジネス・オブジェクト定義 |
IGeneratesBoDefs.getBoDefs()
| 生成済みビジネス・オブジェクト定義へのアクセスの提供 |
バイナリー・ファイル |
IGeneratesBinFiles.getBinFile()
| 生成済みファイルへのアクセスの提供 |
コンテンツ取得メソッドは、ODA オブジェクト内の生成済みコンテンツ構造体にアクセスし、配列内の指定されたコンテンツをビジネス・オブジェクト・ウィザードに戻します。ビジネス・オブジェクト・ウィザードは、ステップ 6 におけるコンテンツ保管要求を処理する前に、生成済みコンテンツへのアクセスが必要となります。詳しくは、コンテンツの保管を参照してください。
ビジネス・オブジェクト・ウィザードのステップ 6 では、「ビジネス・オブジェクトの保管」ダイアログが表示されます。このダイアログ・ボックスでは、生成済みのビジネス・オブジェクト定義を保管する方法を選択できます。
図 42 に示すように、ビジネス・オブジェクト・ウィザードでは、生成済みコンテンツを ICL プロジェクトまたはファイルに保管したり、Business Object Designer Express で各ビジネス・オブジェクト定義を開いたりすることができます。生成済みのビジネス・オブジェクト定義を指定した形式で保管するには、ビジネス・オブジェクト・ウィザードは生成済みコンテンツにアクセスできなければなりません。ビジネス・オブジェクト・ウィザードは、表 19 に示す ODA のコンテンツ取得メソッドを使用して、前のステップ (ステップ 5) でこのコンテンツを取得しています。