ビジネス・コンポーネントと対話するアプリケーションは、Oracle Business Components for Java(BC4J)フレームワークを使用してデータベースにアクセスします。このタイプのデータ・アクセス・アプリケーションのビジネス・コンポーネント層には、データベースからデータを取得したり、Javaクライアントのアプリケーション層での使用のためにデータベースのデータ型をJavaのデータ型へ変換したりする機能が用意されています。また、あらゆるビジネス・コンポーネントのデータ項目をすべてのクライアントに一貫した方法で表示するための一元化メカニズムも用意されています。コントロール・ヒントと呼ばれるこのメカニズムにより、ビジネス・コンポーネント開発者は次のような利点を得ることができます。
JDeveloperでは、ビジネス・コンポーネントとの対話やコントロール・ヒントの利用が可能なビルトイン機能により、次のような特定のクライアント・アプリケーションをサポートしています。
ビジネス・コンポーネントのコントロール・ヒント・メカニズム
ビジネス・コンポーネント層は、データベースにアクセスするクライアント・アプリケーションのために協調してトランザクション環境を提供するオブジェクトの集合体です。ビジネス・コンポーネントのクライアントは高レベル層のアプリケーション・モジュール・オブジェクトを介してBC4Jフレームワークと対話します。データベースへのアクセスを開始する場合、クライアントはアプリケーション・データの状態を定義するアプリケーション・モジュール・インスタンスを取得し、データベースへの接続を提供します。ビジネス・コンポーネント開発者は、各アプリケーション・モジュールに対してビジネス・コンポーネント・プロジェクトで次のオブジェクトを作成します。
これらの基本的な機能の他にも、ビジネス・コンポーネントにはビジネス・コンポーネント層で利用できる様々な機能が用意されています。その1つは、特定の属性値をクライアントのUIでどのように表示するかを定義するコントロール・ヒント情報を格納する機能です。
ビジネス・コンポーネント・プロジェクトでのコントロール・ヒントの使用に関して重要なことは、コントロール・ヒントは定義オブジェクトのプロパティで、他のビジネス・コンポーネントがこれを継承できるという点です。たとえば、開発者がエンティティ・オブジェクト・レベルに設定した任意のコントロール・ヒントのプロパティは、そのエンティティ・オブジェクトを参照するビュー・オブジェクトに反映されます。一方、ビュー・オブジェクト・レベルにコントロール・ヒントを設定し、エンティティ・レベルのコントロール・ヒント・プロパティ定義をオーバーライドすることも可能です。ビュー・オブジェクトでコントロール・ヒント・プロパティを継承およびオーバーライドできるため、ビジネス・コンポーネント開発者は次のようにコンポーネントを開発できます。
コントロール・ヒント・プロパティについて
コントロール・ヒント・メカニズムは、次のコントロール・ヒント・プロパティをサポートします。
JDeveloper/system/formatinfo.xml
ファイルで定義できる書式マスクの集合です。 コントロール・ヒントの設計時のサポートについて
設計時のコントロール・ヒントのサポートは、次のように3つのレベルで用意されています。
JDeveloperビジネス・コンポーネント設計時のウィザードは、エンティティ・オブジェクトとビュー・オブジェクトの両方の属性にコントロール・ヒントを設定、編集するためのメカニズムを備えています。属性に設定されたコントロール・ヒントを編集するには、任意のエンティティ・オブジェクトまたはビュー・オブジェクトの属性を構造ウィンドウに表示し、右クリックして属性エディタで属性を開きます。
エンティティ属性およびビュー属性エディタでは、コントロール・ヒントは現在の属性のプロパティとして表示されます。「コントロール・ヒント」タブを使用すると、コントロール・ヒント・プロパティを簡単に編集できます。「コントロール・ヒント」タブで設定後、「プロパティ」タブをクリックすると属性に追加されたヒントを表示できます。
次の表は、コントロール・ヒント名と、様々なビジネス・コンポーネント・クライアントがそれらのコントロール・ヒントを使用するかどうかを示しています。
ヒント名 | BC4Jデータ・タグ | BC4J UIXタグ | JClient Java UI |
---|---|---|---|
ラベル・テキスト |
はい |
はい |
はい |
ヒント・テキスト |
はい |
いいえ |
はい |
書式および書式マスク |
はい |
はい |
はい |
ヒントの表示 |
はい |
はい |
はい |
コントロール・タイプ |
はい |
はい |
はい |
表示幅および表示高さ |
はい |
はい |
はい |
フォーム・タイプ |
適用しない |
適用しない |
はい |
コントロール・ヒントの実行時のサポートについて
実行時のコントロール・ヒントのサポートは、次のように2つのレベルで用意されています。
実行時には、ビジネス・コンポーネント・クライアントは属性値を表示する方法を決定するため自動的にコントロール・ヒントを利用します。コントロール・ヒント・プロパティがビジネス・コンポーネント・クライアントでサポートされている場合は(前述の表を参照)、UIのカスタマイズに必要な処理は特にありません。この場合、UIのカスタマイズはビジネス・コンポーネント自身の一元化されたコントロール・ヒントで行われます。
Webアプリケーションの場合、BC4Jデータ・タグのカスタムJSPタグ・ライブラリの<jbo:ShowHint>
データ・タグを使用すると、特定の属性のコントロール・ヒント定義に直接アクセスできます。さらに、すべてのレンダリング・データ・タグで様々なコントロール・ヒントが自動的に使用されます。たとえば、<jbo:InputRender>
データ・タグでは、実行時にどのコントロールを表示するかを決定する「コントロール・タイプ」ヒントが使用されます。他の入力データ・タグでは、属性値の出力を書式設定するための書式ヒントが使用されます。コントロール・ヒントのサポートはHTMLフィールド・レンダラに組み込まれているため、BC4Jデータ・タグとData Web Beanの両方でコントロール・ヒント・サポートが利用できます。<jbo:ShowValue>
データ・タグは、コントロール・ヒントで提供される特別な書式設定を使用せずに属性値を表示する場合に役立ちます。たとえば、コントロール・ヒントでデータ項目を表示せずにデータ項目の値を表示するHTML表を作成する場合などです。
Java GUIクライアントの場合、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つのフォーマッタは任意の数のマスクをサポートできます。属性エディタには、使用可能なフォーマッタと対応する値のマスクのリストが候補として表示されます。使用可能なフォーマッタへのドメイン型のマップは、JDeveloper/system/formatinfo.xml
ファイルで維持されます。ビジネス・コンポーネント開発者はドメインの作成にドメイン・ウィザードを使用しますが、現在、JDeveloperではformatinfo.xml
ファイルでのドメイン・フォーマッタおよびマスクの自動生成はサポートしていません。新規ドメイン型を作成し、その書式を使用可能なフォーマッタのリストに追加する場合、開発者はこのファイルの内容を手作業で編集する必要があります。
BC4Jクライアントのコントロール・ヒントの操作
UIのフォーマッタおよび書式マスクの定義