ADFモデルの検索モードについて

ADF対応Webページを作成する際、入力フォームを使用し、そのページのADFバインディング・コンテナに対する検索モードを有効にすることによって、ADF Business Componentsに対するパラメータ付き問合せをサポートできます。ADFバインディング・コンテナは、ADFイテレータ・バインディングによって指定されたビュー・オブジェクトの属性に対して、フォームで指定された検索条件を使用するパラメータ付き問合せを実行することによって、検索操作をサポートします。ADF Business Componentsの属性がオブジェクト型、配列型およびLOBドメイン型である場合は、検索モードを開始できません。

注意: ADF BC以外のビジネス・サービス(EJBやTopLink POJOなど)を使用するアプリケーションの場合、データ・コントロールには組込みの検索操作が含まれていません。この種のアプリケーションの場合は、「ADFパラメータ・フォーム」を使用して検索フォームを作成する必要があります。詳細は、『Oracle ADF Developer's Guide』で、第10章「より複雑なページの作成」の検索ページの作成に関する項を参照してください。

検索操作が実行されると、バインディング・コンテナは検索モードを終了し、Webページは入力エントリ・フォームとして機能するようになります。この方法で、バインディング・コンテナは特定のWebページの検索モードを有効または無効に切り替えます。

検索モードでのイテレータ・バインディングについて

イテレータ・バインディングは、基本的なデータ反復機能に加え、バインドされたデータ・コレクションと連携することにより、アプリケーション・データの例による問合せ機能の実装を単純化します。次のものが提供されています。

Oracle ADFでは、各データ・コレクションに、0(ゼロ)以上のビュー基準行のビュー基準(ViewCriteria)コレクションが関連付けられています。各ビュー基準行(ViewCriteriaRow)の属性構造は、関連するデータ・コレクション内の行と同じです。ただし、属性値はすべて文字列データ型として処理されます。このデータ型では、ユーザーは比較演算子およびワイルドカード文字を含む問合せ基準を入力できます。

たとえば、部門番号が5より大きく、部門名が文字列「ACC%」と一致するすべての部門を検索するよう指定するには、よくあるSCOTTスキーマのDEPT表に対する問合せに基づき、DeptViewコレクションに関連するビュー基準行の属性を入力します。次のようになります。

イテレータ・バインディングの検索モードにより、例による問合せ機能用に、ビュー条件コレクションの属性を移入する検索ページが簡単に作成できます。イテレータ・バインディングを検索モードに設定すると、関連付けられているビュー条件コレクションに対して別の行セット・イテレータを使用するよう切り替わります。つまり、検索モードが使用可能に設定されると、イテレータ・バインディングを参照するコントロール・バインディングは、現行のビュー条件行で属性を表示および更新します。同様に、検索モードになっているイテレータ・バインディングを参照する範囲バインディングでは、現行の例による問合せビュー条件行から表をレンダリングできます。

検索モードが無効である場合、イテレータ・バインディングは、データ・コレクションに対して元の行セット・イテレータを使用するよう切り替えられます。これは、イテレータ・バインディングのsetFindMode()メソッドをコールすることで明示的に、またはexecuteQuery()メソッドをコールすることで暗黙的に実行できます。

注意: 検索モードでイテレータ・バインディングの行セット・イテレータに対してcreateRow()メソッドをコールすることにより、ビュー条件行を追加作成し、続けてその属性に追加条件を移入することが可能です。デフォルトのセマンティクスでは、同じビュー条件行内の例による問合せの条件は論理的にANDで結合され、一方、異なるビュー条件行から取得した条件は論理的にORで結合されています。実際には、複数のビュー条件行を使用することは通常ありませんが、理解しておくと機能の説明に役立ちます。ただし、検索モードに入ると、元のコレクションに行を作成できません。検索モード以外の場合のみ、ビュー条件に含まれない行を作成することが可能です。

ADFイテレータ・バインディングで、選択したバックエンド・データ・コントロールの種類に関係なく検索モード機能が提供されますが、現状ではADF Business Componentsデータ・コントロールにかぎり、実行時にビュー基準行のビュー基準コレクションが自動的に使用されます。このイテレータ・バインディングのビュー基準機能は、ADF Business Componentsデータ・コントロールからその基礎であるADFビュー・オブジェクトに委譲されます。このADFビュー・オブジェクトは、ビュー基準行に基づいて適切なSQL WHERE句の述語を自動的に作成することで、例による問合せ基準を実装します。

現在、他のデータ・コントロール・タイプでは、ViewCriteriaコレクションから例による問合せ基準を読み込み、これらの基準を適切なランタイム検索実装に変換する、カスタム・コーディングを含むサブクラス化されたデータ・コントロール実装が必要です。

パラメータ付き問合せ

パラメータ付き問合せは、実行時に値が指定されるプレースホルダが含まれた問合せです。たとえば、次のPL/SQL文のmin_salaryは、パラメータ値のプレースホルダで、実行時に値が指定されます。

SELECT ename, job, mgr FROM emp WHERE sal < :min_salary

検索モードの入力フォームではADFバインディングを使用して、バインドされたビジネス・コンポーネント・ビュー・オブジェクトの属性のうち、Queriableプロパティがtrueに設定されている属性に対してフィールドを表示します。ビュー・オブジェクトは、ビジネス・コンポーネントにより実行される最初の問合せを定義します。

結果を表示するプロセス

StrutsベースWebアプリケーションでは、ユーザーは検索モードを備えた入力フォームに対し次の操作をします。

  1. ユーザーが表示した入力フォーム付きのWebページが、検索モード有効で動作します。

    たとえば、ユーザーが特定のリンクをクリックすることにより、検索モードが有効になっているページが開きます。どのように検索モードを有効にするかは、アプリケーション設計時の決定事項です。詳細は、後述の関連項目を参照してください。

  2. ユーザーが、データの結果を絞り込むための検索条件を入力します。

    ユーザーは、比較記号(>、<、=)を適宜入力できます。同じビュー基準内のすべての値が検索に含められます。

  3. ユーザーがフォーム上の「Execute」ボタンをクリックすると、アンカー付きのワイルドカード検索を実行するStrutsアクションに対する検索操作が開始されます。

    この操作では検索列の先頭文字がアンカーとして使用され、入力した文字列で始まるすべての文字列が検索されます。

  4. Strutsアクションが他のページにフォワードされ、そこで読取り専用の表に、パラメータ付き問合せの結果が表示されます。

Oracle ADF Business Componentsでのビュー基準の使用方法の詳細は、JavaDocで次のクラスを参照してください。

oracle.jbo.ViewCriteria


ADF Swingコントロールの検索モードについて

検索フォームに対する検索モードの有効化