オブジェクトの選択および生成

ビジネス・オブジェクトを生成するには、データベース・オブジェクト・ノードを選択します。そうすると、エンタープライズ・サービス・ディスカバリー・ウィザードで、選択したノードのオブジェクトのビジネス・オブジェクトが生成されます。

複数のデータベース・オブジェクト・ノードを選択できます。Define ASI プロパティーを true に 設定したときに選択したテーブルまたはビュー・タイプのノードごとに、 エンタープライズ・サービス・ディスカバリー・ウィザードは、StatusColumnName および StatusValue の アプリケーション固有情報に対するオブジェクト・レベル・パラメーターと、 動詞アプリケーション固有情報の関連を要求します。

StatusColumnName の場合、 ビジネス・オブジェクト属性のリストが表示され、そのリストから 1 つを 選択できます。StatusValue の値は入力する必要があります。これらの値は、ビジネス・オブジェクト・レベルの アプリケーション固有情報に設定されます。

ビジネス・オブジェクトへのストアード・プロシージャーの関連付け

さらに、 ストアード・プロシージャーのビジネス・オブジェクトへの関連付けを選択することもできます。 サポートされるすべての StoredProcedureType 値のリストが表示され、 構成対象を選択できます。詳細については、『ストアード・プロシージャー定義』の StoredProcedureType を 参照してください。値をいくつか選択すると、 対応する動詞アプリケーション固有情報プロパティー・グループが エンタープライズ・サービス・ディスカバリー・ウィザードに表示され、 構成できるようになります。

例えば、BeforeCreateSP タイプ および AfterUpdateSP タイプのみを構成する場合は、StoredProcedureType に対する これらの動詞アプリケーション固有情報の値を選択します。 すると、それぞれの値に対して 1 つずつ、合計 2 つの動詞アプリケーション固有情報プロパティー・グループが 表示されます。

各プロパティー・グループには、適切なスキーマ名および ストアード・プロシージャー名の選択に使用するプロパティー Schema および StoredProcedure が あります。Schema プロパティー には、データベースで使用可能な スキーマがリストされます。SPSchemaNameFilter プロパティーを使用すると、スキーマをフィルターに掛けることができます。 スキーマのリストから少なくとも 1 つのスキーマを選択する必要があります。選択すると、そのスキーマで使用可能なストアード・プロシージャーの リストが StoredProcedure プロパティー に表示されます。

ストアード・プロシージャーの 選択を容易にするために、各 StoredProcedure プロパティーに SPNameFilter プロパティーが 提供されており、ストアード・プロシージャーのリストを絞り込むことができます。 フィルター機構には「先頭文字 (Start With)」と「ワイルドカード (Wildcard)」の 2 種類が 用意されています。サポートされる ワイルドカードは * および ? です。SPNameFilter プロパティーを設定しない場合は、 スキーマの下のすべてのストアード・プロシージャーが表示されます。

表 1. ストアード・プロシージャーのフィルター・プロパティー
プロパティー 説明
SPSchemaNameFilter String スキーマをフィルターに掛けるために使用するテキスト。Schema プロパティーを 設定する必要があります。SPSchemaNameFilter プロパティーを設定しない場合は、 データベースのすべてのスキーマが表示されます。
SPNameFilter String スキーマのストアード・プロシージャーをフィルターに掛けるために使用するテキスト。 StoredProcedure プロパティーを設定する必要があります。フィルター機構としては「先頭文字 (Start With)」と 「ワイルドカード (Wildcard)」の 2 種類がサポートされます。SPNameFilter プロパティーを設定しない場合は、 スキーマの下のすべてのストアード・プロシージャーが表示されます。
表 2. ワイルドカード・フィルター機構の例
フィルター基準 A*B?d
一致するストリング AdsfBnD
一致するストリング AsdfsdfsdfBwd
一致するストリング A234dsfB6d

割り当てられた各ストアード・プロシージャーに対して、 ストアード・プロシージャーの入出力パラメーターのリストが示されます。各パラメーターは、ビジネス・オブジェクトの属性のリストを持っています。パラメーターのタイプは、 プロパティーの記述にリストされます (IP、OP、IO など)。ストアード・プロシージャー・パラメーターごとに、ビジネス・オブジェクト属性を 1 つ選択できます。 ビジネス・オブジェクトの動詞アプリケーション固有情報 (CreateSP や UpdateSP など) に、 ストアード・プロシージャーが 1 つ割り当てられているすべての ストアード・プロシージャー・タイプが追加されます。詳細については、 『動詞のアプリケーション固有情報』を参照してください。

選択した 任意のアプリケーション固有情報を StoredProcedureType プロパティーから 除去できます。対応する動詞アプリケーション固有情報プロパティー・グループも すべて削除されます。

テーブルまたはビューから生成された ビジネス・オブジェクトにストアード・プロシージャーを関連付けるときに、 ストアード・プロシージャーが関数である場合は、 そのストアード・プロシージャーから値が返されます。 1 つの ReturnValue アプリケーション固有情報の値が 動詞アプリケーション固有情報に追加されます。このアプリケーション固有情報が存在する場合は、 関数によって値が返されるため、関数呼び出しであって プロシージャー呼び出しではないことが示されます。

このアプリケーション固有情報の 値が RS である場合は、戻り値が結果セットであり、 その結果セットがこのビジネス・オブジェクトに対応する N カーディナリティー・コンテナーの 作成に使用されることが示されます。ただし、このアプリケーション固有情報の値が ビジネス・オブジェクト属性名である場合は、 戻り値がビジネス・オブジェクトの特定の属性に 割り当てられます。

このアプリケーション固有情報の値が別の子ビジネス・オブジェクトである場合、 アダプター・ランタイムはエラーを返します。要約すると、戻り値が単純データ型である場合は エンタープライズ・サービス・ディスカバリーによって 1 つの ビジネス・オブジェクト属性を戻り値にバインドでき、 このアプリケーション固有情報の値がそのビジネス・オブジェクト属性の 名前に設定されます。しかし、戻り値が結果セットである場合、エンタープライズ・サービス・ディスカバリーは このアプリケーション固有情報の値を RS に設定します。
注: Oracle データベースの場合、 結果セットは戻り値としてではなく、出力パラメーターとして 返さなければなりません。出力パラメーターのタイプは RS に設定され、 このパラメーターが結果セットを返すために使用されることを示します。

複合データ型

ストアード・プロシージャーから ビジネス・オブジェクト (ストアード・プロシージャー・ビジネス・オブジェクトと呼びます) を生成するには、 ストアード・プロシージャーの入力パラメーターにダミー値を設定する必要があります。それにより、 エンタープライズ・サービス・ディスカバリーがこのストアード・プロシージャーを実行して 返される結果セットの最大数を取得し、これらの結果セットのメタデータを取得して 子ビジネス・オブジェクトを適宜生成できます。

選択されたストアード・プロシージャーが 入出力パラメーターまたは戻り値として複合データ型 (Struct、Array、ResultSet など) を取る場合、 必要な情報がウィザードから要求されます。パラメーターが複合型の場合は、 プロパティー SPComplexParameterType から ResultSet/Struct/Array を選択してこのパラメーターの データ型を指定する必要があります。Struct または Array の場合は、 対応するユーザー定義型名の名前をプロパティー SPComplexParameterTypeName に 指定する必要があります。

例えば、Struct_TEMP という名前の 1 つの Struct オブジェクトを データベースに作成し、1 つの入力パラメーターとして型を設定する場合は、 このプロパティーの値を Struct_TEMP に設定する必要があります。 エンタープライズ・サービス・ディスカバリーは、この型名の取得によってのみメタデータを取得し、 対応する子ビジネス・オブジェクトを生成できます。ストアード・プロシージャーが ResultSet を 返す場合は、このストアード・プロシージャーから返される結果セットの数を プロパティー MaxNumberOfResultSets に設定する必要があります。この値は、 ランタイムによって処理される、返される結果セットの最大数を 表します。

ストアード・プロシージャー・ビジネス・オブジェクトの場合、 エンタープライズ・サービス・ディスカバリーは、ネストされた構造体および配列をサポートし、 任意の数の層にわたるネストされた階層をサポートできます。エンタープライズ・サービス・ディスカバリーは、 これらのネストされたすべての構造体および配列に対して対応する子ビジネス・オブジェクトを生成できます。Adapter for JDBC ランタイムも、 ネストされた構造体および配列をサポートできます。

表 3. ストアード・プロシージャー・ビジネス・オブジェクトの複合データ型プロパティー
プロパティー 説明
SPComplexParameter Type String 可能な値は Struct、Array、または ResultSet です。
SPComplexParameterTypeName String ユーザー定義型の名前。このプロパティーは、SPComplexParameterType の 値が Struct または Array の場合に必要です。
MaxNumberOfResultSets Integer Adapter for JDBC ランタイムによって処理される、 返される結果セットの最大数。エンタープライズ・サービス・ディスカバリーも、 この数のビジネス・オブジェクトを作成します。

QueryBO プロパティーおよびユーザー指定 select ステートメント

QueryBO プロパティーが 選択されている場合、エンタープライズ・サービス・ディスカバリー・ウィザードは いくつかの情報を要求します。QueryBOName は、このクエリー・ビジネス・オブジェクトの名前を 指定するために使用します。SelectStatement プロパティーは、1 つの select ステートメントを 入力するために使用します。select ステートメントを入力すると、エンタープライズ・サービス・ディスカバリーが その where 文節にあるパラメーターの数を自動的に検出します。パラメーターが 1 つ検出されると、 対応するプロパティー・グループが 1 つ表示され、 そのパラメーターのデータ型およびダミー値を指定できます。 select ステートメントの where 文節からパラメーターを 1 つ除去すると、 エンタープライズ・サービス・ディスカバリーがこの除去を検出してすべてのプロパティー・グループを除去し、 残りのパラメーターに必要なプロパティー・グループを再作成します。

このようなプロパティー・グループは、 いずれも 2 つのプロパティー WhereParameterType および WhereParameterValue を含みます。 WhereParameterType は、サポートされるすべてのデータ型のリストを持ちます。1 つのデータ型を選択して、 データベース内のこのパラメーターの実際のデータ型を指定できます。 このパラメーターのデータ型を選択した後、WhereParameterValue プロパティーに ダミー値を 1 つ入力できます。この値は、select ステートメントの 実行に使用されます。

例えば、以下の select ステートメントの場合、
select * from customer where id=? and age=?
エンタープライズ・サービス・ディスカバリーは、 その where 文節にあるパラメーターの数が 2 であることを認識します。 次に、ウィザードはプロパティー・グループを 2 つ表示し、それら 2 つのパラメーターに対する データ型およびダミー値をユーザーが設定できるようにします。第 1 パラメーターの 場合は WhereParameterType プロパティーを string に 設定し、WhereParameterValue を Mike に設定します。第 2 パラメーターの 場合は WhereParameterType プロパティーを int に設定し、WhereParameterValue を 27 に設定します。 エンタープライズ・サービス・ディスカバリーは、この select ステートメントを実行して 返された結果セットを取得します。

結果セットを取得した後、エンタープライズ・サービス・ディスカバリーは、 メタデータを分析してすべての列の列名および列の型を取得します。 返された結果セットの列ごとに、ウィザードは対応する属性を 1 つ QueryBO に 生成します。また、where 文節のパラメーターごとに、エンタープライズ・サービス・ディスカバリーは 対応する属性を 1 つ QueryBO に生成します。QueryBO は、jdbcwhereclause という名前の属性を 1 つ生成します。 エンタープライズ・サービス・ディスカバリーは、 この属性のデフォルト値として where 文節を設定します。この属性は、 デフォルトの where 文節を置換する 1 つの動的 where 文節をランタイムに 設定するために使用されます。

表 4. クエリー・ビジネス・オブジェクトのプロパティー
プロパティー 説明
QueryBOName String クエリー・ビジネス・オブジェクトの名前。
SelectStatement String ユーザー指定 select ステートメント。
WhereParameterType String 1 つのパラメーターのデータ型。サポートされるデータ型の リストから選択されます。
WhereParameterValue String 1 つのパラメーターのダミー値。エンタープライズ・サービス・ディスカバリーは、 この値を使用して select ステートメントを実行します。
ビジネス・オブジェクト内部のすべてのコンテンツ・データで、双方向変換がサポートされます。ただし、QueryBO の jdbcwhereclause 属性を除きます。 where 文節内のストリング定数のみに双方向言語サポートが提供されます。
重要: jdbcwhereclause 属性の双方向変換が正しく行われるようにするためには、BiDiContext を属性レベルのアプリケーション固有情報として追加し、その特殊フォーマットを SAP WHERE CLAUSE に設定します。

双方向言語サポートは、SelectStatement プロパティー内のストリング定数のみで提供されます。 SQL ステートメントは複雑である場合があり、双方向言語サポートを提供すると、破損する可能性があるためです。

データベース・オブジェクトを選択した後、 メタデータ選択プロパティーの値を設定する必要があります。エンタープライズ・サービス・ディスカバリー・ウィザードは、 これらのプロパティーを照会します。これらのプロパティーについて詳しくは、 『参照』セクションの『メタデータ選択プロパティー』を参照してください。


ご利用条件 |


(c) Copyright IBM Corporation 2005, 2006.
(C) Copyright IBM Japan 2006
このインフォメーション・センターでは Eclipse テクノロジー (http://www.eclipse.org) が採用されています。