ビジネス・コンポーネントと対話するアプリケーションは、Oracle ADF Business Componentsテクノロジを使用してデータベースにアクセスします。このタイプのデータ・アクセス・アプリケーションのビジネス・コンポーネント層には、データベースからデータを取得したり、クライアントのアプリケーション層での使用のためにデータベースのデータ型をJavaのデータ型へ変換したりする機能が用意されています。また、あらゆるビジネス・コンポーネントのデータ項目をすべてのクライアントに一貫した方法で表示するための一元化メカニズムも用意されています。コントロール・ヒントと呼ばれるこのメカニズムにより、ビジネス・コンポーネント開発者は次のような利点を得ることができます。
JDeveloperでは、ビジネス・コンポーネントとの対話やコントロール・ヒントの利用が可能なビルトイン機能により、次のような特定のクライアント・アプリケーションをサポートしています。
ビジネス・コンポーネントのコントロール・ヒント・メカニズム
ビジネス・コンポーネント層は、データベースにアクセスするクライアント・アプリケーションのために協調してトランザクション環境を提供するオブジェクトの集合体です。ビジネス・コンポーネントのクライアントは高レベル層のアプリケーション・モジュール・オブジェクトを介してOracle ADF Business Componentsテクノロジと対話します。データベースへのアクセスを開始する場合、クライアントはアプリケーション・データの状態を定義するアプリケーション・モジュール・インスタンスを取得し、データベースへの接続を提供します。ビジネス・コンポーネント開発者は、各アプリケーション・モジュールに対してビジネス・コンポーネント・プロジェクトで次のオブジェクトを作成します。
これらの基本的な機能の他にも、ビジネス・コンポーネントにはビジネス・コンポーネント層で利用できる様々な機能が用意されています。その1つは、特定の属性値をクライアントのUIでどのように表示するかを定義するコントロール・ヒント情報を格納する機能です。
ビジネス・コンポーネント・プロジェクトでのコントロール・ヒントの使用に関して重要なことは、コントロール・ヒントは定義オブジェクトのプロパティで、他のビジネス・コンポーネントがこれを継承できるという点です。たとえば、開発者がエンティティ・オブジェクト・レベルに設定した任意のコントロール・ヒントのプロパティは、そのエンティティ・オブジェクトを参照するビュー・オブジェクトに反映されます。一方、ビュー・オブジェクト・レベルにコントロール・ヒントを設定し、エンティティ・レベルのコントロール・ヒント・プロパティ定義をオーバーライドすることも可能です。ビュー・オブジェクトでコントロール・ヒント・プロパティを継承およびオーバーライドできるため、ビジネス・コンポーネント開発者は次のようにコンポーネントを開発できます。
コントロール・ヒント・プロパティについて
コントロール・ヒント・メカニズムは、次のコントロール・ヒント・プロパティをサポートします。
注意: データ・コントロール・パレットでは、このコントロール・ヒントを設定した属性が非表示になりません。アプリケーションで使用する属性のうち、実行時に表示されないものを選択することも可能です。
「ラベル・テキスト」は、データ項目の値に先行するプロンプトまたは表ヘッダーで使用されるテキストです。
「ヒント・テキスト」は、ヒントつまりポップアップ・テキストで使用されるテキストです。Webアプリケーションでは、HTML ALT属性の値として表示されます。
「書式の種類」は、データ項目を表示する際のフォーマッタを定義します。フォーマッタは、基本的にJDeveloper/system/formatinfo.xml
ファイルで定義できる書式マスクの集合です。
「書式」は選択したフォーマッタが使用する特定の書式マスクです。
「コントロール・タイプ」は、クライアントのUIでデータ項目を表示する際に使用するコントロール・タイプを選択します。「Edit」を選択するとコントロールを編集可能にでき、「Date」を選択するとカレンダが表示されます。「Default」を選択すると、最適なコントロールを選択するようにクライアントで解釈されます。
「表示幅」は、データ項目を表示するコントロールの文字幅を定義します。
「表示高さ」は、データ項目を表示するコントロールの文字の行数を定義します。
「フォーム・タイプ」は、「Detail」モードまたは「Summary」モードのどちらで属性を表示するかどうかを決定します。「Detail」モードは詳細に、「Summary」モードは簡潔に表示します。このプロパティは、JClientアプリケーションでのみサポートされます。ビジネス・コンポーネントWebアプリケーションでは使用できません。
コントロール・ヒントの設計時のサポートについて
設計時のコントロール・ヒントのサポートは、次のように3つのレベルで用意されています。
ビジネス・コンポーネント設計時のウィザードは、エンティティ・オブジェクトとビュー・オブジェクトの両方の属性にコントロール・ヒントを設定、編集するためのメカニズムを備えています。属性に設定されたコントロール・ヒントを編集するには、任意のエンティティ・オブジェクトまたはビュー・オブジェクトの属性を構造ウィンドウに表示し、右クリックして属性エディタで属性を開きます。
エンティティ属性およびビュー属性エディタでは、コントロール・ヒントは現在の属性のプロパティとして表示されます。「コントロール・ヒント」タブを使用すると、コントロール・ヒント・プロパティを簡単に編集できます。「コントロール・ヒント」タブで設定後、「プロパティ」タブをクリックすると属性に追加されたヒントを表示できます。
次の表は、コントロール・ヒント名と、様々なビジネス・コンポーネント・クライアントがそれらのコントロール・ヒントを使用するかどうかを示しています。
ヒント名 | JSPページ(「注意」を参照) | ADF UIXページ | ADF JClient Java UI |
---|---|---|---|
ラベル・テキスト |
はい |
はい |
はい |
ヒント・テキスト |
はい |
いいえ |
はい |
書式および書式マスク |
はい |
はい |
はい |
ヒントの表示 |
はい |
はい |
はい |
コントロール・タイプ |
はい |
はい |
いいえ |
表示幅および表示高さ |
はい |
はい |
はい |
フォーム・タイプ |
適用しない |
適用しない |
はい |
注意: Strutsタグ・ライブラリとJSTLタグを使用して式を評価する入力フォーム・ページでは、コントロール・ヒントはサポートされていません。詳細は、次のセクションを参照してください。
コントロール・ヒントの実行時のサポートについて
現在のところ、Strutsフォームで表示されるJSTLタグを使用して、他のタグの属性に値を提供することはできません。JSP 1.2にはこの制限があるので、Struts入力フォームでは、コントロール・ヒントを使用して入力要素の表示プロパティを設定できません。たとえば、現在のところ、次のコンストラクションはサポートされていません。
<html:text property="EmpName"
size='<c:out value="${bindings.EmpName.displayWidth}"/>'
/>
JSPページとADFバインディングを使用する場合、次のようにHTMLタグを使用して、コントロール・ヒントを指定できます。
<textarea name="<c:out value='${bindings.Dname.path}'/>"
cols="<c:out value='${bindings.Dname.displayWidth}' />"
rows="<c:out value='${bindings.Dname.displayHeight}' />">
<c:out value='${bindings.Dname}'/>
</textarea>
ADF UIXページを使用する場合、UIXコンポーネントに対して指定する日付パターン(messageDateFieldなど)は、コントロール・ヒントの中で指定した日付書式に一致している必要があります。同じパターンを使用しない場合、実行時エラーCannot create an object of type:oracle.jbo.domain.Date
が発生します。
実行時のコントロール・ヒントのサポートは、次のように2つのレベルで用意されています。
実行時には、ビジネス・コンポーネント・クライアントは属性値を表示する方法を決定するため自動的にコントロール・ヒントを利用します。コントロール・ヒント・プロパティがビジネス・コンポーネント・クライアントでサポートされている場合は(前述の表を参照)、UIのカスタマイズに必要な処理は特にありません。この場合、UIのカスタマイズはビジネス・コンポーネント自身の一元化されたコントロール・ヒントで行われます。
JClient(Java UI)クライアントの場合、UI開発者はコントロール・ヒントAPIにより、コントロール・ヒント定義に直接アクセスできます。コントロール・ヒントは属性オブジェクトのプロパティですが、特定のコントロール・ヒントを取得するためにgetProperty()
メソッドを使用する方法はお薦めできません。かわりに、コントロール・ヒントAPIのメソッドの使用をお薦めします。たとえば、UI開発者は次のようにAttributeHintsインタフェースのメソッドを使用して、ラベル、ヒント・テキストおよびコントロール・タイプにアクセスします。
import oracle.jbo.*
ViewObject vo = am.findViewObject("DeptView");
AttributeDef aDef = vo.findAttribute("DeptNo");
LocaleContext locale = am.getSession().getLocaleContext();
String sLabel = aDef.getUIHelper().getLabel(locale);
String sTooltip = aDef.getUIHelper().getTooltip(locale);
Int nControlType = aDef.getUIHelper().getControlType(locale);
「書式の種類」コントロール・ヒントについて
書式コントロール・ヒントの「書式の種類」および「書式」により、ビジネス・コンポーネント開発者はビジネス・コンポーネントのドメイン・クラスを介して属性フォーマッタを利用できます。ビジネス・コンポーネント・プロジェクトでは、開発者は次の場合にフォーマッタをビジネス・コンポーネントのドメインにマップできます。
各ドメイン・クラスは任意の数のフォーマッタを持つことができます。1つのフォーマッタは任意の数のマスクをサポートできます。属性エディタには、使用可能なフォーマッタと対応する値のマスクのリストが候補として表示されます。使用可能なフォーマッタへのドメイン型のマップは、<jdev_install >/system###/formatinfo.xml
ファイルで維持されます。ビジネス・コンポーネント開発者はドメインの作成にドメイン・ウィザードを使用しますが、現在、JDeveloperではformatinfo.xml
ファイルでのドメイン・フォーマッタおよびマスクの自動生成はサポートしていません。新規ドメイン型を作成し、その書式を使用可能なフォーマッタのリストに追加する場合、開発者はこのファイルの内容を手作業で編集する必要があります。
ADF Business Componentsクライアントでの表示メタデータの操作
ビジネス・コンポーネント・クライアントUIのカスタマイズ
ビジネス・コンポーネント・クライアント用のフォーマッタと書式マスクの定義
Copyright © 1997, 2004, Oracle. All rights reserved.