ビュー・リンクは、ビュー・オブジェクト間の関係を定義します。この関係には、1対1、1対多、多対1または多対多があります。ビュー・リンク・ウィザードおよびビュー・リンク・エディタでリンク元とリンク先のビュー・オブジェクトを指定すると、ビュー・オブジェクトから選択した属性を使用してビュー・オブジェクトがリンクされます。データの取得や変更、アプリケーション・モジュールのデータ・モデルへのマスター/ディテール関係の追加などのためにビュー・オブジェクトを横断するには、ビュー・リンクが必要です。
1対多関係の例としては、マスター/ディテール関係でContractorViewビュー・オブジェクトにリンクしているDepartmentsOverBudgetViewビュー・オブジェクトがあります。このビュー・リンクを使用すると、予算を超過している部門の受託業者の情報を効率よく調べられます。
さらに複雑な1対多関係としては、マスター/ディテール関係でOrderViewビュー・オブジェクトにリンクしているCustomerViewビュー・オブジェクトや、マスター/ディテール関係でItemViewビュー・オブジェクトにリンクしているOrderViewビュー・オブジェクトがあります。ユーザーは、特定の顧客の注文の品目を1つのフォームで簡単に調べられます。
ビュー・リンクは、Associationに基づいて作成できますが、ビュー・リンクを使用するためにはAssociationは必要ありません。ビュー・リンクはAssociationに似ていますが、より高い柔軟性を備えています。ビュー・リンクでは、属性が等価という以外の関係を指定でき、マスター/ディテールの自動的な同期化がサポートされます。
ビュー・リンクが既存のAssociationを基にしており、そのAssociationがコンポジットとして定義されている場合は、ディテール・ビュー行を作成する際にマスター・ビュー行が存在している必要があり、そのマスター・ビュー行にはnull以外のキー値が必要であることに注意してください。Associationがコンポジットとして定義されていない場合は、このような制限は適用されません。
ビュー・リンクは、ビュー・リンク・ウィザードおよびビュー・リンク・エディタで定義および編集できます。
また、エンティティ・オブジェクト・ウィザードおよびエンティティ・オブジェクト・エディタ、ビジネス・コンポーネント・プロジェクト・ウィザードまたはビジネス・コンポーネント・パッケージ・ウィザードを使用することにより、既存のAssociationに基づいて、デフォルトのビュー・リンクを生成することもできます。
ビュー・リンクは、一方向(マスターからディテールのみ、ディテールからマスターは不可)または双方向に移動可能です。等価の属性に基づくデフォルトの関係では適切な機能が提供されない場合は、ビュー・リンク・ウィザードまたはビュー・リンク・エディタの「SQL設定」ページでWHERE句を指定して、SQLベースの複雑な関係を作成できます。
ビュー・オブジェクトがリンクのディテール・ビューとして指定されている場合は、(「SQL設定」ページでビュー・オブジェクトを定義するSQL文にWHERE句を追加することによって)このビュー・オブジェクトではデータはディテール情報に限定されます。つまり、ビュー・リンクでは、マスター・ビューの現在の行によって提供されるバインド値に基づき、これに関連するデータのビューが選択されます。
マスター/ディテール・ビュー・リンクを介して関連する2つのビュー・オブジェクトが1つのアプリケーション・モジュールにあるとき、マスター行が変化すると、マスター・ビュー・オブジェクトのデフォルト(または最初)のイテレータによってディテール行セットが自動的に変更されます。ディテール・ビュー・オブジェクトが作成されると、ビジネス・コンポーネントのフレームワークにより、マスターのイテレータのイベント・リスナーとして登録されます。このため、イテレータがマスター・イテレータの別の行に移動すると、ディテール・ビュー・オブジェクトはそのイベントを受け取り、該当するディテール行セットを自動的に参照します。
ビュー・リンクは、1つ以上のアプリケーション・モジュールに組み込むことができます。複数のアプリケーション・モジュールでビュー・リンクを再利用できます。
ビュー・リンク・ウィザードおよびビュー・リンク・エディタを使用して、リンク元ビュー・オブジェクト(ビュー行クラス)および、場合によってはその基礎となるリンク元エンティティ・オブジェクトに、オプションのアクセッサ・メソッドを作成できます(詳細は、「ビュー・リンクのエンティティ・オブジェクトへの公開について」を参照してください)。このようなアクセッサ・メソッドを使用してビュー・リンクを横断し、プログラムからビュー・オブジェクトの必要な結果セットにアクセスします。アクセッサは、他のビュー・オブジェクトの行セットを返すため、他のビュー・オブジェクトからデータを収集できます。また、ビュー・リンクのリンク先の属性の取得や設定もできます。ビュー・リンクがアプリケーション・モジュールに含まれない場合でも、プログラムによってアクセスできます。
ApplicationModuleインタフェースのcreateViewLinkメソッドを使用すると、実行時に動的にビュー・リンクを作成できます。
関連項目
ビュー・オブジェクトとは