Oracle® Fusion Middleware

Oracle Application Development Frameworkの理解

12c (12.2.1.2.0)

E82914-01(原本部品番号:E76683-01)

2016年10月

Oracle ADFの概念およびアーキテクチャの概要について説明する、Oracle Application Development Framework (Oracle ADF)開発者向けのドキュメント。

Oracle Fusion Middleware Oracle Application Development Frameworkの理解, 12c (12.2.1.2.0)

E82914-01

Copyright © 2013, 2016, Oracle and/or its affiliates  All rights reserved.

原本主著者: Ralph Gordon

原本協力者: Steve Muench

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクル社までご連絡ください。

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations.As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs.No other rights are granted to the U.S. Government.

このソフトウェアもしくはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアもしくはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。

OracleおよびJavaはOracle Corporationおよびその関連企業の登録商標です。その他の名称は、それぞれの所有者の商標または登録商標です。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXは、The Open Groupの登録商標です。

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。適用されるお客様とOracle Corporationとの間の契約に別段の定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。適用されるお客様とOracle Corporationとの間の契約に定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

目次

タイトルおよび著作権情報

はじめに

- 対象読者

- ドキュメントのアクセシビリティについて

- 関連ドキュメント

- 表記規則

このガイドで説明する新機能

- リリース12c (12.2.1.2.0)の新機能と変更された機能

第I部 Oracle ADFの概要

1 Oracle ADFの概要

- 1.1 Oracle ADFについて

- 1.2 Oracle ADFの主要概念

- 1.3 Oracle ADFの主要コンポーネント

- 1.3.1 ADFモデル

- 1.3.2 ADFビジネス・コンポーネント

- 1.3.3 ADF Controller

- 1.3.4 ADF Faces

- 1.3.5 ADFモバイル・ブラウザ

- 1.3.6 ADFデスクトップ統合

- 1.3.7 ADFセキュリティ

- 1.3.8 Oracle Metadata Services

- 1.4 主要管理ツールとプロセス

2 Oracle ADFプロセス・フローの概要

- 2.1 Oracle ADFの高度なプロセス・フロー

- 2.2 Oracle ADFを使用した機能豊富なエンタープライズ・アプリケーションの作成

第II部 Oracle ADFバックエンド・コンポーネント

3 ADFモデル

- 3.1 ADFモデルについて

- 3.2 ADFモデルのコアな利点

- 3.3 ADFモデルの主要概念

- 3.3.1 アプリケーションのモデル・レイヤーの抽象化

- 3.3.2 宣言的なデータ・バインディング

- 3.4 ADFモデルの主要コンポーネント

- 3.4.1 データ・コントロール

- 3.4.1.1 アダプタ・データ・コントロール

- 3.4.1.2 ADFビジネス・コンポーネント

- 3.4.2 宣言的バインディング

- 3.5 実行時のADFモデル

- 3.6 ADFモデルのプロセス・フローの概要

- 3.6.1 ADFビジネス・コンポーネントでADFモデルを使用するための開発手順

- 3.6.2 非ADFビジネス・サービスでADFモデルを使用するための開発手順

- 3.7 ADFモデルの詳細について

4 ADFビジネス・コンポーネント

- 4.1 ADFビジネス・コンポーネントについて

- 4.2 ADFビジネス・コンポーネントのコアな利点

- 4.3 ADFビジネス・コンポーネントの主要概念

- 4.3.1 ビジネス・サービスの実装

- 4.3.2 標準JavaおよびXMLベース

- 4.3.3 アプリケーション・サーバーとデータベースの独立性

- 4.3.4 Java EEデザイン・パターンのサポート

- 4.3.5 実装クラスの宣言的メタデータ

- 4.3.6 オプションのカスタムJavaコード

- 4.3.7 サービスをSOAアプリケーションに公開する機能

- 4.3.8 アプリケーション状態管理

- 4.4 ADFビジネス・コンポーネントの主要コンポーネント

- 4.4.1 エンティティ・オブジェクト

- 4.4.1.1 エンティティ・オブジェクトの定義ファイル

- 4.4.1.2 エンティティ・オブジェクトを構成する方法

- 4.4.2 エンティティ・アソシエーション

- 4.4.3 ビュー・オブジェクト

- 4.4.3.1 ビュー・オブジェクトのタイプ

- 4.4.3.2 ビュー・オブジェクトの定義ファイル

- 4.4.3.3 ビュー・オブジェクトを構成する方法

- 4.4.4 ビュー・リンク

- 4.4.5 アプリケーション・モジュール

- 4.4.5.1 アプリケーション・モジュールのタイプ

- 4.4.5.2 アプリケーション・モジュールの定義ファイル

- 4.4.5.3 サービス対応アプリケーション・モジュール

- 4.4.5.4 アプリケーション・モジュール・プーリング

- 4.4.5.5 アプリケーション状態管理

- 4.5 ADFビジネス・コンポーネント・プロセス・フローの概要

- 4.6 ADFビジネス・コンポーネントの詳細について

5 ADF Controllerのタスク・フロー

- 5.1 ADF Controllerについて

- 5.2 ADF Controllerのコアな利点

- 5.3 ADF Controllerの主要概念

- 5.4 ADF Controllerの主要コンポーネント

- 5.4.1 バインドなしタスク・フロー

- 5.4.2 バインド・タスク・フロー

- 5.4.3 タスク・フロー・アクティビティ

- 5.4.4 タスク・フロー・テンプレート

- 5.4.5 セーブポイント

- 5.4.6 pageFlowScope、backingBeanScopeおよびviewScopeとの統合

- 5.4.7 ADF Facesトレイン・コンポーネントとの統合

- 5.4.8 ADF Facesリージョン・コンポーネントとの統合

- 5.5 ADF Controllerのプロセス・フローの概要

- 5.6 ADF Controllerの詳細について

第III部 Oracle ADFビュー・テクノロジ

6 ADF Faces

- 6.1 ADF Facesについて

- 6.2 ADF Facesのコアな利点

- 6.3 ADF Facesの主要概念

- 6.4 ADF Facesの主要コンポーネント

- 6.5 ADF Facesのプロセス・フローの概要

- 6.6 ADF Facesの詳細について

7 ADFデスクトップ統合

- 7.1 ADFデスクトップ統合について

- 7.2 ADFデスクトップ統合のコアな利点

- 7.3 ADFデスクトップ統合の主要な概念

- 7.3.1 Microsoft Excelとの統合

- 7.3.2 ADFページ定義ファイルとの統合

- 7.3.3 Fusion Webアプリケーションとの実行時の同期

- 7.3.4 統合Excelワークブックのセキュリティ

- 7.4 ADFデスクトップ統合の主要なコンポーネント

- 7.4.1 表タイプ・コンポーネント

- 7.4.2 フォームタイプ・コンポーネント

- 7.4.3 アクション・セット

- 7.5 ADFデスクトップ統合のプロセス・フローの概要

- 7.6 ADFデスクトップ統合の詳細について

第IV部 Oracle ADFセキュリティ、カスタマイズ、およびデプロイメント

8 ADFセキュリティ・フレームワーク

- 8.1 ADFセキュリティ・フレームワークについて

- 8.2 ADFセキュリティのコアな利点

- 8.3 ADFセキュリティの主要概念

- 8.3.1 認証と認可

- 8.3.2 アプリケーション・ロール

- 8.3.3 セキュリティ・ポリシー

- 8.3.4 ADFリソースにおけるセキュリティの認識

- 8.4 ADFセキュリティの主要コンポーネント

- 8.4.1 OPSSとのデザインタイム統合

- 8.4.2 ADFセキュリティ認識リソース

- 8.4.3 ADF認証サーブレット

- 8.4.4 ADFセキュリティ・コンテキスト

- 8.5 ADFセキュリティのプロセス・フローの概要

- 8.6 ADFセキュリティの詳細について

9 Oracle Metadata Services

- 9.1 Oracle Metadata Services (MDS)について

- 9.2 MDSのコアな利点

- 9.3 MDSの主要概念

- 9.4 MDSの主要コンポーネント

- 9.5 MDSプロセス・フローの概要

- 9.6 MDSの詳細について

10 Oracle ADF機能が備わったアプリケーションのデプロイメント

- 10.1 Oracle ADF機能が備わったアプリケーションのデプロイメントについて

- 10.2 ADFアプリケーションのデプロイの主要概念

- 10.2.1 統合WebLogic Serverでのテスト・デプロイ

- 10.2.2 デプロイメント・ツール

- 10.2.3 スタンドアロン・サーバーでのテスト・デプロイメント

- 10.3 ADFアプリケーションのデプロイの主要コンポーネント

- 10.3.1 エンタープライズ・アーカイブ(EAR)ファイル

- 10.3.2 ADFランタイム・ライブラリ

- 10.4 ADFアプリケーション・デプロイメント・プロセス・フローの概要

- 10.5 ADFアプリケーションのデプロイに関する詳細

付録

A ADFビジネス・コンポーネントおよび使い慣れた4GLツール

- A.1 PeopleToolsとの比較

- A.2 Siebel Toolsとの比較

- A.3 ADO.NETとの比較

はじめに

『Oracle Application Development Frameworkの理解』にようこそ。

対象読者

このドキュメントは、Oracle Application Development Framework (Oracle ADF)で使用されているテクノロジの概要を知る必要のあるエンタープライズ開発者を対象としています。このガイドでは、コンポーネントについて概説し、ADFモデル、ADFビジネス・コンポーネント、ADF Controller、ADF Faces、ADFセキュリティ、ADFデスクトップ統合、およびADFテクノロジ・スタックのその他のパートの背後にある概念について説明します。

ドキュメントのアクセシビリティについて

Oracleのアクセシビリティへの取り組みについては、Oracle Accessibility ProgramのWebサイト(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc)にアクセスしてください。

Oracleサポートへのアクセス

サポートを購入したオラクル社のお客様は、My Oracle Supportを介して電子的なサポートにアクセスできます。詳細は、http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info、聴覚に障害があるお客様はhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=trsを参照してください。

関連ドキュメント

詳細は、以下のドキュメントを参照してください。

- Oracle Application Development FrameworkによるFusion Webアプリケーションの開発

- ADF FacesによるWebユーザー・インタフェースの開発

- Oracle ADFデータ・コントロールによるアプリケーションの開発

- Oracle JDeveloperによるアプリケーションの開発

- ADFスキンの開発

- Oracle ADFアプリケーションの管理

- Oracle ADFデスクトップ統合によるアプリケーションの開発

- パフォーマンスのチューニング

- 高可用性ガイド

- Oracle JDeveloperのインストール

- Oracle JDeveloperのオンライン・ヘルプ

- Oracle JDeveloperリリース・ノート(JDeveloperインストール内およびOracle Technology Networkから入手)

- Oracle ADFモデルJava APIリファレンス

- Oracle ADF ControllerのJava APIリファレンス

- Oracle ADFライフサイクルJava APIリファレンス

- Oracle ADF FacesのJava APIリファレンス

- Oracle ADFデータ視覚化コンポーネントのJava APIリファレンス

- Oracle ADF共有Java APIリファレンス

- Oracle ADFモデル・テスターのJava APIリファレンス

- Oracle汎用ドメインJava APIリファレンス

- Oracle Metadata Service (MDS)のJava APIリファレンス

- Oracle ADF Facesタグ・リファレンス

- Oracle ADF Facesスキン・セレクタ・タグ・リファレンス

- Oracle ADF Facesデータ視覚化ツール・タグ・リファレンス

- Oracle ADFデータ視覚化ツール・スキン・セレクタ・タグ・リファレンス

表記規則

このマニュアルでは次の表記規則を使用します。

表記規則

意味

太字

太字は、操作に関連するGraphical User Interface要素、または本文中で定義されている用語および用語集に記載されている用語を示します。

イタリック体

イタリックは、ユーザーが特定の値を指定するプレースホルダ変数を示します。

固定幅フォント

固定幅フォントは、段落内のコマンド、URL、サンプル内のコード、画面に表示されるテキスト、または入力するテキストを示します。

このガイドで説明する新機能

次のトピックはOracle JDeveloperとOracle Application Development Framework (Oracle ADF)の新機能と変更された機能、およびこのガイドで説明されているその他の重要な変更点について概要を示しています。

リリース12c (12.2.1.2.0)の新機能と変更された機能

このマニュアルは、リリース12c (12.2.1.2.0)の情報で修正されていません。

このリリースでOracle JDeveloperおよびOracle Application Development Framework (Oracle ADF)に対して行われたその他の変更については、Oracle Technology Network (http://www.oracle.com/technetwork/developer-tools/jdev/documentation/index.html)の「What's New」ページをご覧ください。

第I部 Oracle ADFの概要

第I部は、次の章で構成されています。

- Oracle ADFの概要

- Oracle ADFプロセス・フローの概要

1 Oracle ADFの概要

この章では、Oracle Application Development Framework (Oracle ADF)のアーキテクチャとコンポーネントの概要について説明します。

この章の内容は次のとおりです。

- Oracle ADFについて

- Oracle ADFの主要概念

- Oracle ADFの主要コンポーネント

- 主要管理ツールとプロセス

このマニュアルおよびこの他のマニュアルに、なじみのない用語が出てきた場合は、用語集で定義を確認してください。

1.1 Oracle ADFについて

Oracle Application Development Framework (Oracle ADF)は、Java EE標準およびオープンソース・テクノロジを構築してエンタープライズ・アプリケーションの実装を簡単かつ高速にするエンドツーエンド・アプリケーション・フレームワークです。Oracle ADFは、Web、モバイル、およびデスクトップ・インタフェースを使用してデータを検索、表示、作成、変更および検証するアプリケーションを作成する企業の開発者に適しています。

Oracle ADFフレームワーク全体を使用してアプリケーションを作成したり、他のテクノロジと組み合せてフレームワークの一部を使用したりできます。このガイドでは、ADFテクノロジを備えたアプリケーションを一般的にADFアプリケーションと呼びます。ビジネス・サービス、モデル、コントローラ、およびビューのレイヤーを通してADFテクノロジが組み込まれたWebアプリケーションを、Fusion Webアプリケーションと呼びます。

1.2 Oracle ADFの主要概念

Oracle ADFは次の概念に基づいています。

- Web、モバイルおよびデスクトップ・クライアントを対象とした豊富なコンポーネント・セット

- 宣言的で再利用可能なビジネス・ロジックおよび検証

- 宣言的なデータ・バインディング

- UI関連とデータ関連の要素の分割(MVCアーキテクチャ)

- 強化されたページ・フロー機能(モジュール化タスク・フローや再利用可能なタスク・フローなど)

- ADFリソース上の宣言的セキュリティ

- メタデータを介した顧客レベルおよび開発者レベルのカスタマイズ

より広範囲のFusion Middlewareスタックの主要コンセプトは、『Oracle Fusion Middlewareの理解』の「Oracle Fusion Middlewareの概要」を参照してください。

1.3 Oracle ADFの主要コンポーネント

この項では、ADFスタックの中核をなす高度なコンポーネントの概要を説明します。そのコンポーネントには、JavaServer Faces (JSF)や通常はアプリケーションの一部であるその他のビジネスおよびデータ・サービスなどの基礎となるテクノロジの一部が含まれています。モデル、ビューおよびコントローラ(MVC)のコンポーネントなど、アーキテクチャ全体についての図は、図1-1を参照してください。

図1-1 ADFアーキテクチャ

1.3.1 ADFモデル

ADFモデルはOracle ADFの中心的な部分であり、これにより各種のビジネス・サービスに基づくADFアプリケーションを作成できます。ADFモデルには、データ・コントロールおよびデータ・バインディングが実装されています。データ・コントロールでは、関連するプロパティ、メソッド、タイプの情報を含め、サービスの操作とデータ・コレクションを表す標準のメタデータ・インタフェースを使用してビジネス・サービスの実装技術を抽象化します。Oracle JDeveloperでは、開発者はその情報をアイコンとして表示し、ページに簡単にドラッグ・アンド・ドロップできます。開発者がサービス表現をページにドラッグすると、Oracle JDeveloperによって、そのページからサービスへのバインディングが自動的に作成されます。実行時にADFモデル・レイヤーによって、アプリケーションのデータ・コントロールおよびデータ・バインディングを記述した情報が該当するXMLファイルから読み取られ、ユーザー・インタフェースとアプリケーションのビジネス・サービス間の双方向接続が実装されます。

Oracle ADFには、一般的なビジネス・サービス・テクノロジに対してすぐに使用できる、次のようなデータ・コントロールの実装が用意されています。

- ADFビジネス・コンポーネント

- Enterprise JavaBeans (EJB)セッションBeansおよびJPA永続性APIエンティティ

- JavaBeansコンポーネント

- Webサービス(SOAPおよびREST)

1.3.2 ADFビジネス・コンポーネント

ADFビジネス・コンポーネントは、Java EEデザイン・パターンとベストプラクティスに基づいたビルトイン・アプリケーション・オブジェクトです。これにより、複雑で高性能かつデータベース中心のサービスの開発と保守が簡単になります。

サービス指向のJava EEアプリケーションを作成するとき、開発者はコア・ビジネス・ロジックを1つ以上のビジネス・サービスとして実装します。これらのバックエンド・サービスには、入力の検証など適切なビジネス・ルールを実施する際に、必要に応じてビジネス・データの問合せ、挿入、更新および削除を実行する方法を備えたクライアントが用意されています。ADFビジネス・コンポーネントを使用すると、JDeveloperのウィザードとビジュアル・エディタを宣言的に使用して必要なメタデータを生成するようなサービスを開発できます。

ADFビジネス・コンポーネント・アプリケーション・モジュールの作成時、それをカプセル化するサービスがデータ・コントロールとしてADFモデルを介して公開されます。それらのデータ・コントロールを使用してWebページやその他のユーザー・インタフェース上にデータバインドされたコンポーネントを作成できます。最も一般的なユースケースでは、そのように、Javaコードを記述せずにアプリケーション一式を作成できます。

1.3.3 ADF Controller

MVCアプリケーションのコントローラ・レイヤーでは、ADF ControllerによりJSFのコントローラ・レイヤーの上に拡張ナビゲーションおよび状態管理モデルが提供されています。JDeveloperを使用すると、各種アクティビティ(ページ、マネージドBean上のメソッド、宣言的ケース文や他のタスク・フローへのコールなど)の間のアプリケーション・コントロールを管理できるタスク・フローを宣言的に作成できます。さらに、バインドされたタスク・フローを作成でき、これは全体のタスク・フローからコールできる再利用可能なタスク・フロー・セグメントとなります。

1.3.4 ADF Faces

ADF Facesには、ADFアプリケーション用のビュー・レイヤーが用意されています。ADF Facesは、ビュー・フレームワーク一式であり、すべてがJSF標準上に構築されている、150を超えるAjax有効のJavaServer Faces (JSF)コンポーネントで構成されています。ADF Facesは、他の非ADFコントローラとモデル・テクノロジとともに稼働するスタンドアロン・コンポーネント・セットとして使用することも可能です。

1.3.5 ADFモバイル・ブラウザ

ADF Facesコンポーネントでは、Apple社のiPad、Samsung社のGalaxy S5など、最近のポピュラーなスマートフォンやタブレットがサポートされています。基本的なHTMLブラウザを実行する古いデバイスやフィーチャ・フォンをサポートするには、ADFモバイル・ブラウザ・テクノロジを使用してください。このテクノロジでは、Apache MyFaces Trinidadコンポーネントを使用してユーザー・インタフェースを構築します。

このガイドでは、ADFモバイル・ブラウザ・テクノロジについては取り扱いません。詳細は、『Oracle Fusion Middleware Oracle ADFモバイル・ブラウザ・アプリケーションの開発』の「Oracle ADFモバイル・ブラウザの概要」を参照してください。サポートされているモバイル・ブラウザの詳細は、動作保証情報(http://www.oracle.com/technetwork/developer-tools/jdev/documentation/index.html)を参照してください。

1.3.6 ADFデスクトップ統合

ADFデスクトップ統合により、開発者は、エンドユーザーがクライアントとしてMicrosoft Excelワークブックを使用しながらアプリケーションを稼働できるようにFusion Webアプリケーションを拡張できます。

1.3.7 ADFセキュリティ

ADFセキュリティ・フレームワークでは、Oracle Platform Security Services (OPSS)アーキテクチャを使用して、ADFアプリケーションの保護を容易にするためにOracle Platform Security Services (OPSS)アーキテクチャを拡張し、バインド・タスク・フローなどのADFリソースに対するファイングレイン・アクセス制御を有効にします。

1.3.8 Oracle Metadata Services

Oracle Metadata Services (MDS)フレームワークにより、顧客が自社のユーザーや顧客に対してさらにカスタマイズでき、エンドユーザーもパッチ適用や更新の際にソース・コードを操作したりアプリケーションの機能に影響を与えたりしないでにカスタマイズできるアプリケーションを作成できます。

1.4 主要管理ツールとプロセス

Oracle ADFを使用して、さらに広範囲のミドルウェア・アプリケーションのコンポーネントを開発できます。そのようなアプリケーションで使用できるツールおよびプロセスの概要は、『Oracle Fusion Middlewareの理解』のインストールおよび構成ツールの理解に関する項を参照してください。

ADFアプリケーションを開発するには、ADF機能に対するデザインタイムのサポートが備わった統合開発環境(IDE)のOracle JDeveloperを使用できます。とりわけ、JDeveloperにはビジネス・サービスに対する作業コードを生成するためのウィザードが用意されており、視覚的にユーザー・インタフェースを設計する際にデータ・バインド・コードを生成し、完全なテストおよびデバッグ環境を提供します。さらに、Oracle JDeveloperインストールにはWebLogic Serverのビルトイン・コピーが含まれており、これによりアプリケーションのテスト・デプロイを実行できます。JDeveloperを使用してADFアプリケーションを開発する方法の詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』の「Oracle ADFを使用したFusion Webアプリケーションの構築の概要」を参照してください。Oracle ADFに固有でないJDeveloper機能の詳細は、『Oracle JDeveloperによるアプリケーションの開発』の「Oracle JDeveloperの概要」を参照してください。

注意:

また、ADFアプリケーションはOracle Enterprise Pack for Eclipse (OEPE)を使用して開発することもできます。OEPEはJava EE環境をサポートするためにEclipse IDE向けに設計された一連のプラグインです。また、OEPEにはADFアプリケーション開発のサポート機能も含まれていますが、そのサポート機能はJDeveloperによって提供されている機能より限定されています。詳細は、http://www.oracle.com/technetwork/developer-tools/eclipse/overview/index.htmlを参照してください。

ADFデスクトップ統合のサポートにより統合Microsoft Excelワークブックを開発するには、ADFデスクトップ統合アドインをJDeveloperにインストールする必要があります。詳細は、『Oracle ADFデスクトップ統合によるアプリケーションの開発』のADFデスクトップ統合のインストールに関する項を参照してください。

ADFスキンの設計および変更については、JDeveloperが提供するエディタを使用できます。詳細は、『Oracle Fusion Middleware Oracle ADFスキンの開発』のJDeveloperでのADFスキンの操作に関する項を参照してください。

注意:

また、Oracle ADF Essentialsと呼ばれるOracle ADFのサブセットを使用してアプリケーションを開発およびデプロイすることも可能です。Oracle ADF EssentialsはOracle ADFの主要テクノロジの無料パッケージで、これを使用してアプリケーションを開発し、ライセンス・コストなしでGlassFishなどの複数のアプリケーション・サーバーにデプロイできます。GlassFishに対してサポートされているOracle ADF Essentials機能の一覧は、OTNサイト(http://www.oracle.com/technetwork/developer-tools/adf/overview/adfessentials-1719844.html)にアクセスしてください。

2 Oracle ADFプロセス・フローの概要

この章では、Oracle ADFテクノロジを使用してアプリケーションを開発するプロセスの概要を説明し、そのプロセスを具体的なユースケースで示します。

この章の内容は次のとおりです。

- Oracle ADFの高度なプロセス・フロー

- Oracle ADFを使用した機能豊富なエンタープライズ・アプリケーションの作成

2.1 Oracle ADFの高度なプロセス・フロー

Fusion Webアプリケーションの高度な開発プロセスには通常、次のステップの組合せが含まれます。

- アプリケーション・ワークスペースの作成: ウィザードを使用して、選択したテクノロジに必要なライブラリと構成の追加およびパッケージとディレクトリを含むプロジェクトへのアプリケーションの構成が、JDeveloperによって自動的に行われます。

図2-1 JDeveloperの「アプリケーション」ウィンドウ

- データベース・スキーマの取得またはデータベース・オブジェクトの最初からのモデル化: JDeveloperでは、データベースのオフライン・レプリカを作成し、JDeveloperのエディタとダイアグラマを使用して定義の編集やスキーマの更新を行うことができます。

- ユースケースの作成: JDeveloperのUMLモデラーを使用して、アプリケーションのユースケースを作成できます。

- 共有リソースの識別: アプリケーション全体または複数のアプリケーションで使用できるコンポーネントがある場合、そのコンポーネントをADFライブラリのJARとして開発およびパッケージ化すると、「リソース」ウィンドウでそれらのJARが使用可能になり、アプリケーションに追加できるようになります。

- ADFビジネス・コンポーネントを使用する場合、ベース・フレームワーク・クラスを拡張する独自のカスタム・クラスを作成し、作成したビジネス・コンポーネントがそれらのカスタム・クラスをベースとするようにモデル・プロジェクトを構成: これらのカスタム・クラスにカスタム・コードを追加する初期プランがない場合でも、ベース・フレームワークの動作を後で変更し、それらの変更内容をアプリケーション内で作成済のすべてのビジネス・コンポーネントに適用するためのメカニズムが用意されています。

- データにアクセスするためのビジネス・サービスの作成およびそれらのサービスに関するデータ・モデルの構築: データ・ソースに基づいて、ウィザードまたはダイアログを使用してビジネス・サービスを作成します。または、ビジネス・サービスを最初から作成し、後からデータベース表に関連付けることもできます。また、サービスをUMLダイアグラム内に直接作成することも可能です。
これらのビジネス・サービスは、ADFモデルと密接に統合されるADFビジネス・コンポーネント・サービスにすることが可能です。ADFモデルは、検証ルールやその他のタイプのビジネス・ロジックを宣言的に実装でき、データを容易にUIコンポーネントにバインドすることを可能にします。または、それらをEJBセッション・ビーンやWebサービスなど別のタイプのサービスにしてさらにADFモデル・データ・コントロールを作成し、データ・バインディングを有効にして宣言的ビジネス・ロジックを実装できます。

- ビジネス・サービスへの宣言ロジックの追加(コントロール・ヒント、検証ルールなど)。

- ADF Facesのベース・ユーザー・インタフェースの実装(ページ・テンプレートやレイアウトなど)。

- アプリケーション・コントロールおよびナビゲーションを定義するためのADFタスク・フローの設計: ダイアグラマを使用し、ナビゲーションおよび制御フロー・ケースを視覚的に決定します。JDeveloperによって、ベースとなるXMLが作成されます。図2-2に、顧客のログインを処理するADFタスク・フローについてSummitのサンプル・アプリケーションでのタスク・フローを示します。

図2-2 ADFタスク・フロー

- データバインドされたUIコンポーネントの作成: オブジェクトを「データ・コントロール」パネルからページへドラッグし、生成するUIコンポーネントを選択することで、データバインドされたコンポーネントを作成して、基礎となるデータを表示できます。図2-3は、ADFタスク・フローのSummitサンプル・アプリケーションでページ・フラグメントに円グラフとしてコレクションをドロップして作成された円グラフを示しています。JDeveloperのバインディング・エディタを使用して、既存のUIコンポーネントをデータ・モデルにバインド(または生成されたバインドを変更)できます。図2-4は、同じ円グラフのバインディング・エディタを示しています。どちらの場合も、JDeveloperではバインディング・コードが生成されます。

図2-3 円グラフのデザインタイム表示

図2-4 円グラフ用のバインディング・エディタ

- ページ固有の検証およびエラー処理の組込み: アプリケーションを作成したら、エディタを使用して、検証を追加し、エラー処理を定義します。

- アプリケーションの保護: 「ADFセキュリティの構成」ウィザードを使用して、ベース・セキュリティ機能を有効にします。次に、ビジュアル・エディタを使用して、アプリケーションのリソースに対するセキュリティ・ポリシーを定義し、ロールを作成し、そのロールにテスト・ユーザーを移入します。

- アプリケーションのMDSカスタマイズの有効化: 顧客が自社のユーザーにアプリケーションのカスタマイズを提供したり、セッション内でユーザーがUIコンポーネントに加えた変更を永続化できるようにしたりするには、カスタマイズ・クラスを作成してそれをデザインタイムにアプリケーションで使用可能にし、カスタマイズ可能にするページに対してシード・カスタマイズを有効にします。

- テストおよびデバッグ: JDeveloperに用意された統合アプリケーション・サーバーにより、パッケージ化せずにアプリケーションのテストを完全に行い、それをスタンドアロン・サーバーにデプロイできます。JDeveloperには、ブレークポイントを設定してデータを調べることができるツールのADF宣言デバッガも含まれています。

- リファクタ: アプリケーションのテスト後(またはアプリケーションをデプロイした後でも)、コンポーネントの名前を変更したり、コードを再編成する必要がある場合があります。JDeveloperには、この作業を簡単に実行でき、不具合が生じる原因となる可能性のある変更を防止するためのリファクタ・ツールが備わっています。

- サービス指向アーキテクチャ(SOA)における他のアプリケーションとの統合: SOAプリンシパルを使用して、Fusion Webアプリケーションを既存または新規のアプリケーションと統合できます。

- 追加ビューの開発: アプリケーションを拡張して、タッチ・デバイス、デスクトップ・クライアントなど他のタイプのユーザー・インタフェースの機能を提供できます。図2-5に、ADFデスクトップ統合のSummitサンプル・アプリケーションからのExcelワークシートの入力フォームを示します。

図2-5 ADFデスクトップ統合のフォーム

- アプリケーションのデプロイ: JDeveloperウィザードとエディタを使用して、デプロイメント・ディスクリプタ、JARファイルおよびアプリケーション・サーバー接続を作成および編集します。JDeveloperを使用してアプリケーションをスタンドアロン・アプリケーション・サーバーに直接デプロイするか、または他のデプロイ・ツールを使用できます。

2.2 Oracle ADFを使用した機能豊富なエンタープライズ・アプリケーションの作成

この項では、ADFテクノロジ・スタックに基づいた一連の機能豊富なエンタプライズ・アプリケーションである、Oracle ADFのSummitサンプル・アプリケーションの1つを作成する手順の概要を説明します。Summitサンプル・アプリケーションは、顧客、顧客の注文、製品に関するデータ保持の機能を持つスポーツ用品サプライヤをサポートしています。

図2-6は、その顧客の1つの概要が表示されているアプリケーションのページを示しています。

図2-6 Summitサンプル・アプリケーション

アプリケーションを作成する手順の概要は次のとおりです。

1. Oracle RDBMSをローカル・システムまたはアクセスできるリモート・マシンにインストールします。
サポートされる特定のバージョンのOracle Databaseの詳細は、http://www.oracle.com/technetwork/developer-tools/jdev/documentation/index.htmlで「動作保証情報」を参照してください。

2. Summitスキーマをデータベースにインストールします。

注意:

Summitスキーマは、JDeveloperのオフライン・データベース・ツールを使用して、SummitデータベースをインストールするためのSQLスクリプトとともにJDeveloperアプリケーション・ワークスペース内に作成されています。データベースをインストールするには、JDeveloper内のスキーマのプロジェクトからSQLスクリプトを実行します。

3. JDeveloperで、Summit_Extensionsプロジェクトのアプリケーション・ワークスペースを作成します。このプロジェクトの出力は、コール側のデータベース・プロシージャに関連する一部のユーティリティ・コードを含むライブラリで、後からSummitサンプル・アプリケーションで使用され、その他のアプリケーションに対しても便利です。

4. JDeveloperで、メイン・アプリケーション用の新規アプリケーション・ワークスペースを作成します。「新規ギャラリ」で、「ADF Fusion Webアプリケーション」テンプレートを選択し、アプリケーション・ワークスペースを作成するための確認ウィザードで手順を完了します。このアプリケーション・ワークスペースは、ADFビジネス・コンポーネント・ビジネス・サービスを保持するためのモデル・プロジェクトおよび「ADF Faces」ページと「ADF Controller」タスク・フローを保持するためのView-Controllerプロジェクトで構成されています。

5. アプリケーションのモデル・プロジェクトに、拡張された機能が最終的に追加されるADFビジネス・コンポーネント実装クラス(oracle.jboパッケージ内)を拡張するスタブ・カスタム・クラスを作成します。次に、プロジェクトの「プロジェクト・プロパティ」ダイアログで、ADFビジネス・コンポーネント・ベース・クラスを更新し、生成する新規ビジネス・コンポーネントがこれらのカスタム・クラスに基づくようにします。詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のADFビジネス・コンポーネント拡張クラスの作成に関する項を参照してください。
これにより、アプリケーションのサブクラスで選択可能なベース・フレームワーク・クラスに対して後から変更を加えることができるようになります。たとえば、Summitサンプル・アプリケーションはSummitEntityImplでoracle.jbo.server.EntityImplをサブクラスに分け、nextValSequence()メソッドを提供するため、エンティティ・オブジェクトが指定されたデータベース順序から次の値を容易に読み取ることができるようになります。

6. アプリケーションのモデル・プロジェクトで、Summitサンプル・アプリケーションのデータ・モデルを構成するADFビジネス・コンポーネント・サービスを作成します。これらには、エンティティ・オブジェクト、ビュー・オブジェクト、およびアプリケーション・モジュールが含まれます。作業の多くを表からのビジネス・コンポーネントの作成ウィザードで実行できます。このウィザードでは、データベース表の外部キーに基づいたエンティティ・アソシエーション、ビュー・オブジェクト間の関係を示すビュー・リンク、および作成するビジネス・コンポーネントのUMLダイアグラムを生成することもできます。
使用するすべてのデータベース表のエンティティ・オブジェクト、アプリケーションで作成する必要のあるSQL問合せのビュー・オブジェクト、指定されたユーザー・タスクに必要なビュー・オブジェクトを集計するためのアプリケーション・モジュールが必要です。たとえば、Summitサンプル・アプリケーションには次のものが備わっています。

- 顧客、注文、製品、倉庫、地域、国などに関する情報を保存するデータベース表に対するエンティティ・オブジェクト。

- アプリケーション内のエンティティ・オブジェクトで表されるデータベース表間の各外部キーの関係に対応するエンティティ・アソシエーション。

- データバインドされたUIコンポーネントを作成する、ビュー・オブジェクト。大半のビュー・オブジェクトは1つまたは複数のエンティティ・オブジェクト内の列に基づいていますが、いくつかのものはデータベースに対する直接のSQL問合せに基づいており、読取り専用です。

- 様々なビュー・オブジェクト間の関係を示すビュー・リンク。

- 次の3つのアプリケーション・モジュール。

- BackOfficeAppModule。Summitの従業員が顧客および注文のデータベースを管理する際に必要な機能を開発するために必要なビュー・オブジェクトを含みます。

- CustomerSelfServiceAppModule。顧客のアプリケーションに必要な機能を開発するために必要なビュー・オブジェクトを含みます。

- SummitAppModule。2つの他のアプリケーション・モジュールをネストし、それらのすべてのサービスを必要とするアプリケーションを後で開発する場合、それらのアプリケーション・モジュールに含まれるサービスを提供します。

図2-7は、拡張された実装クラスおよびアプリケーション・モジュールを含む、Summitサンプル・アプリケーションのデータ・モデル・プロジェクトの全体の構造を示しています。

図2-7 モデル・プロジェクトの「アプリケーション」ウィンドウ

7. 宣言ロジックをビジネス・コンポーネントに追加して、UI開発者がビュー・レイヤーで行う必要のあるこのロジックのコーディングを減らし、生成されたUIコンポーネントの外観と動作が、同じビジネス・コンポーネントから生成される複数のUIコンポーネント間で一貫性を保つためのデフォルト値が存在するようにします。たとえば、Summitサンプル・アプリケーションには次のタイプの宣言ロジックが備わっています。

- 種々のビュー・オブジェクト属性に対するUIヒント。たとえば、CustomerVOビュー・オブジェクトのZipCode属性は、そのデフォルトのラベルがZip code(図2-8)であり、デフォルトの表示幅が20文字になるように構成されます。

- ユーザーの入力が有効であることを確認するビジネス・ルール。これらのルールは、範囲や比較のようなビルトイン・ルール・タイプの形式や自分で挿入できる式の形式で提供されます。

- 値リスト(LOV)オブジェクト。これを使用して選択リスト、およびデータベース表や静的リストのコンテンツに基づくその他のUIコンポーネントを作成できます。LOVオブジェクトを使用して、ユーザーの入力を検証することも可能です。

- 一時属性。これにより、注文アイテムの表示リストにおける総額など、動的に計算された値を表示するコンポーネントを作成できます。

- 入力コンポーネントに対するデフォルト値。

- 主キーの属性。この属性は、oracle.jbo.domain.DBSequenceデータ・タイプを使用するように設定されているため、新規の行の主キー属性値がデータベース順序から取得されるようになります。たとえば、CustomerEOエンティティ・オブジェクトのId属性はoracle.jbo.domain.DBSequenceに設定されており、その値は新規行がデータベースに挿入されると順番に次の値を呼び出すデータベース・トリガーから取得されます。

図2-8 ビュー・オブジェクトの概要エディタ

8. アプリケーションのUIプロジェクトにおけるプロジェクトのメイン・ページの作成: Summitサンプル・アプリケーションにはindex.jsfページがあり、このページはWebインタフェースにビジュアル形式を確立するUI要素を定義する<af:pageTemplate>コンポーネントに基づいています。

9. アプリケーションのフローを定義するタスク・フローの作成: Summitサンプル・アプリケーションにはバインドなしタスク・フローが含まれています。これは、アプリケーションとバインドされたタスク・フローへのエントリ・ポイントとして機能し、顧客データの表示と更新および順序を管理します。Summitサンプル・アプリケーションには、次のタスク・フローが含まれています。

- バインドなしタスク・フロー(adfc-config.xmlファイルなど)。アプリケーションへのユーザーのエントリ・ポイントとして機能し、これには指定されたタスクのワーク・フローの境界を定めるバインドされたタスク・フローが含まれます。

- customer-task-flow-definition.xmlバインドされたタスク・フロー。ユーザー・ナビゲーションおよび顧客情報の管理を処理します。このタスク・フローでは、コントロールになんらかのビューサイドのロジックを提供するマネージドBeanも指定されます。

- create-edit-orders-task-flow-definition.xmlタスク・フロー。これによりユーザーは新規の注文を記録できるようになります。

10. index.jsfページへのリージョンの作成およびデータバインドされたUIコンポーネントの移入: これは次のサブ手順で構成されています。

a. タスク・フローのビュー・アクティビティに基づいたページ・フラグメントの作成。

b. 「データ・コントロール」パネルからページへのオブジェクトのドラッグアンドドロップによるUIコンポーネントの作成。ビュー・オブジェクト・コレクションをドロップして、データバインドされたフォーム、表、ツリー、ゲージ、チャート、カルーセルなどのDVTコンポーネントを作成できます。ADFモデルによりデータ・コントロールにビルトインされている標準操作をドラッグアンドドロップして、標準ナビゲーションおよびCRUDコマンドのボタンを作成できます。

c. タスク・フローのindex.jsfページへのドラッグおよびそれらのADFリージョンとしてのドロップ。

特に、Summitサンプル・アプリケーションには次のフラグメントが備わっています。

- Customers.jsff。これはビュー・アクティビティとしてcustomer-task-flow-definition.xmlバインドされたタスク・フローに埋め込まれます。

- Orders.jsff。これはビュー・アクティビティとしてcreate-edit-orders-task-flow-definition.xmlバインドされたタスク・フローに埋め込まれます。

11. 「ADFセキュリティの構成」ウィザードを使用して、アプリケーションのセキュリティを有効にし、ロールおよびテスト・ユーザーを確立します。デフォルトのロール以外に、Summitサンプル・アプリケーションにはアプリケーションの顧客およびアプリケーションの従業員のロールが用意されており、それぞれのロールに適したリソース権限が付与されています。

第II部 Oracle ADFバックエンド・コンポーネント

第II部は、次の章で構成されます。

- ADFモデル

- ADFビジネス・コンポーネント

- ADF Controllerのタスク・フロー

3 ADFモデル

この章では、データ・コントロール、宣言的バインディング、ADFバインド・コンテキストなど、ADFモデルのテクノロジの概要を説明し、それらのコンポーネントが機能豊富なエンタープライズ・アプリケーションの他の部分と連動する方法を示します。

この章の内容は次のとおりです。

- ADFモデルについて

- ADFモデルのコアな利点

- ADFモデルの主要概念

- ADFモデルの主要コンポーネント

- 実行時のADFモデル

- ADFモデルのプロセス・フローの概要

- ADFモデルに関する詳細

3.1 ADFモデルについて

ADFモデルは宣言的なフレームワークであり、これにはビジネス・サービス間の抽象化レイヤー、およびエンタープライズ・アプリケーションのビュー・レイヤーとコントローラ・レイヤーが用意されています。このエンタープライズ・アプリケーションは、それらのレイヤー内のコンポーネントが相互作用する方法を標準化します。図3-1は、ADFモデルがエンタープライズ・アプリケーションにどのように適合しているかを示しています。

図3-1 ADFモデルの全体のアプリケーション・アーキテクチャ

3.2 ADFモデルのコアな利点

ADFモデルには、UI開発者とアプリケーション・ロジックの開発者の両方に利点となる機能が備わっています。

UI開発者にとってのコアな利点は、次のとおりです。

- JDeveloperの使用による、ドラッグアンドドロップでのデータバインドされたコンポーネントの作成、およびビジュアル・エディタでのバインディングの構成。

- ユーザー・インタフェースに追加できる、組込みレコード・ナビゲーション操作およびCRUD操作。

- バインディングに対するJSF式言語(EL)の標準の使用。この場合、基礎となるビジネス・サービスの実装について理解する必要はありません。

- ビジネス・サービスを様々なユーザー・インタフェースにバインドする機能。これには、ADF Facesコンポーネント、JSFページとJSPページ、Microsoft Excelスプレッドシート(ADFデスクトップ統合経由)などが含まれます。

アプリケーション・ロジックおよびデータ・モデルに重点を置いた開発者にとってのコアな利点は、次のとおりです。

- ビジネス・サービスとビュー・レイヤー間の標準的な相互作用を処理するためにJavaコードを記述する必要がない。

- 検証ルール、UIヒント、デフォルト属性値、およびその他のビジネス・ロジックを、ビジネス・サービス自体のコードを変更せずにビジネス・サービスにメタデータとして宣言的に追加する機能。データ・モデルに対するこれらの宣言的拡張は、データ・コントロールから作成されたどのコンポーネントにも伝播されます。

- 複数のタイプのビジネス・サービスと同様に連動する機能。ADFビジネス・コンポーネント、EJBセッション・ビーン、単純なJavaオブジェクト、Webサービス、およびその他のタイプのサービスに対するADFモデル・データ・コントロールがあります。

3.3 ADFモデルの主要概念

ADFモデルは、次の主要な機能で構成されています。

- データ・コントロール。関連するプロパティ、メソッド、タイプに関する情報など、サービスの操作とデータ・コレクションを表す標準のメタデータ・インタフェースを使用して、ビジネス・サービスの実装テクノロジを抽象化します。

- 宣言的バインディング。データ・コントロールにより公開されているサービスをUIコンポーネントにバインドするために使用します。

この項では、データ・コントロールと宣言的バインディングがADFアプリケーション内でどのように機能するかについて概説します。

3.3.1 アプリケーションのモデル・レイヤーの抽象化

ADFモデルはMVC (model-view-controller)デザイン・パターンを構築し、ここではアプリケーションのデータ・モデルのコード、ビジュアル・インタフェース、およびアプリケーション・フローがすべて区切られています。この分割により、複数のタイプのクライアント・ディスプレイで同じビジネス情報を使用できます。また、アプリケーションの異なるレイヤーで作業する開発者の責任の明確化に役立ちます。

基本のMVCアーキテクチャでは、図3-2に示すように、モデル・レイヤーはビジネス・サービスで構成されており、ビジネス・サービスはデータとやり取りします。このアーキテクチャでフレームワークの支援がない場合、ビジネス・サービス、コントローラおよびビュー・コンポーネントをコード化して、相互に適切にやり取りさせる必要があります。

図3-2 基本のMVCアーキテクチャ

ADFモデルをアプリケーションで使用する場合にはJavaコードを記述する必要がなくなりますが、そうしない場合にはMVCレイヤーの調整が必要になります。同様に、UI開発者はビジネス・サービスの実装の詳細について懸念する必要がなくなります。図3-3に示すように、ADFモデルはビジネス・サービスとアプリケーションのビューおよびコントローラ部分をつなぐパイプとして機能し、ビューとビジネス・サービスの間にバインディングを作成する標準的な方法を提示します。

図3-3 ADFモデルのMVCアーキテクチャ

3.3.2 宣言的なデータ・バインディング

JDeveloperで、データ・サービスとUIコンポーネント間に宣言的バインディングを作成するには、項目を「データ・コントロール」パネルから「JSF」ページなどの特定のUIテクノロジのビジュアル・エディタにドラッグします。宣言的バインディングでは、データ・コントロール、コントローラ、およびUIレイヤーの間で調整が行われます。

ADFデータ・バインディングは、ADFデータ・コントロールに宣言的にバインドできるようにすることにより、JSFデータ・バインディングを拡張します。標準的なJSFアプリケーションでは、マネージドBeanを作成してから、JSFページ・コードでそれらに対するEL式参照を作成します。ただし、ADFモデルを使用するアプリケーションでは、マネージドBeanのかわりにXML構成ファイルを使用できます。これらのXMLファイルのバインディング・コードおよび「JSF」ページのEL式は、オブジェクトを「データ・コントロール」パネルからページへドラッグする際に自動的に生成されます。また、これらのファイルのバインディングを手動で追加、削除および変更することも可能です。

3.4 ADFモデルの主要コンポーネント

ADFモデルは、次のコンポーネントで構成されています。

- データ・コントロール

- 宣言的バインディング

3.4.1 データ・コントロール

使用するビジネス・サービスのタイプに応じて、異なったタイプのデータ・コントロールがあります。データ・コントロールの主要なタイプは次のとおりです。

- EJB、プレーンJavaクラス(POJO)、SOAPベースのWebサービス、RESTful Webサービスなどの一般的なビジネス・サービスに向けた、アダプタ・データ・コントロール

- ADFビジネス・コンポーネント・アプリケーション・モジュールに基づいたデータ・コントロール

3.4.1.1 アダプタ・データ・コントロール

アダプタ・データ・コントロールは、その名前からわかるように、インタフェースを標準的な方法でバインディング・レイヤーに公開する非ADFビジネス・サービス用アダプタとして機能します。

アダプタ・データ・コントロールは、JDeveloperで次のタイプのサービスに対して使用できます。

- EJBセッションBean

- Bean (プレーンJavaオブジェクト)

- Webサービス(SOAPベースおよびRESTベース)

- URLサービス

- JMX

また、プレースホルダ・データ・コントロールもあり、これを使用するとUI開発者は実際のビジネス・サービスが使用可能になる前に、データバインドされたUIコンポーネントを作成する目的でデータ・コントロールのモックアップを作成できます。

データ・コントロールを作成した後、開発者は、宣言的メタデータでサービスを構成するために、データ・コントロールに含まれている個々のサービスに対してデータ・コントロール構造ファイルを作成することもできます。これらの構造ファイルでの構成の可能性は、ADFビジネス・コンポーネント・ビュー・オブジェクトで実行可能な宣言的構成のタイプを反映しています。

次に示す項目は、アダプタ・データ・コントロールに追加できるメタデータのタイプの一部です。

- 属性のデフォルト値。

- 一時属性。

- 属性に対するUIヒント。

- 検証ルール(比較操作のテンプレート、範囲、長さ、正規表現またはGroovy式に基づいてルールを記述できるかどうかなど)。

- 指定基準。これを使用すると、事前に選択した部分検索基準に基づいてUI検索コンポーネントを作成できます。指定基準はJPAベースのデータ・コントロールでのみ使用できます。

- 値リスト(LOV)コンポーネント。これにより、UI開発者はデータ・ソース内で指定された表によって移入されたリスト・コンポーネントを作成できます。

アダプタ・データ・コントロールを作成すると、DataControls.dcxという名前のデータ・コントロール定義ファイルが作成されます。それ以降、データ・コントロールで表現されたオブジェクトの宣言的メタデータを追加すると、XMLファイルが生成されてそのメタデータが保持されます。

3.4.1.2 ADFビジネス・コンポーネント

ADFビジネス・コンポーネントのサービスは、ADFモデルに直接統合されます。ADFビジネス・コンポーネント・アプリケーション内のデータ・コントロールは、1つまたは複数のアプリケーション・モジュールで設定したデータ・モデルから導出されます。アプリケーション・モジュールによりカプセル化されたビュー・オブジェクトは、ビジネス・サービスを表し、宣言的にもプログラムによっても構成できます。ビュー・オブジェクトに使用できる宣言的メタデータのタイプには、アダプタ・データ・コントロールで使用可能なすべてのタイプのメタデータ、およびビュー・オブジェクトに固有のその他のメタデータが含まれます。

アプリケーション・モジュールおよびビュー・オブジェクトの詳細は、「ADFビジネス・コンポーネントの主要コンポーネント」を参照してください。

3.4.2 宣言的バインディング

宣言的バインディングには、EL式またはJavaコードを使用した、ビュー・レイヤーからモデル・レイヤーへのコールの方法が用意されています。

バインディングには次の3つのカテゴリがあります。

- 値バインディング。データを表示するUIコンポーネントで使用します。ツリー、リストおよびその他のコンポーネントには、値バインディング・オブジェクトのサブタイプがあります。

- アクション・バインディング。ボタンおよびリンクをサービス・メソッドおよび操作にバインドする際に使用します。

- 実行可能なバインディング。これにはイテレータ・バインディングが含まれ、通常は問合せや行の現行性の管理など、バックグラウンド・タスクに関与します。

これらのバインディング・オブジェクトはページ定義ファイルで定義されます。ページ定義ファイルは、「データ・コントロール」パネルを使用してデータバインドされたコンポーネントを作成すると自動的に作成および更新されます。デフォルトでは、生成された定義ファイル名はその対応Webページの名前を付け、pageDefを追加し、xml拡張子を使用します。各ページにページ定義ファイルが1つあります。

各ページのバインディング・オブジェクトは、データ・コントロール・オブジェクトを参照してUIコンポーネントにデータを提供します。実行時には、バインディング・オブジェクトはバインディング・コンテナでインスタンス化されます。EL名前空間bindingsに基づいた式を使用して、ページからその対応バインディング・コンテナにアクセスできます。そのような式では、常に、現在のページのバインディング・コンテナに対して評価されます。標準の式では、#{bindings.BindingObject.propertyName}という形式になります。ここでは、BindingObjectはページ定義ファイルで定義されたオブジェクトまたは属性を参照し、propertyNameは標準ADFバインディング・プロパティを参照します。たとえば、#{bindings.Phone.inputValue}はPhone属性の値を返します。

すべてのアプリケーションのバインディング・コンテナとそのデータ・コントロールへの参照は、組み合わさって、アプリケーションのバインディング・コンテキストを形成します。このバインディング・コンテキストは、デザインタイムにDataBindings.cpxファイルによって表され、アプリケーションのUIプロジェクトに配置されます。

3.5 実行時のADFモデル

ADFモデル・レイヤーは実行時に次の操作を実行します。

- DataBindings.cpxファイルを読み取り、図3-4に示すように、リストに記載されたページ定義ファイルおよびそれらがマップされたデータ・コントロールに基づいて、バインディング・コンテキストを設定します。

- ユーザー・インタフェースとビジネス・サービスの間に双方向の接続を作成するために、バインディングをインスタンス化します。

図3-4 データ・バインディングで使用されるファイル

図3-5 はデータ・コントロール、宣言的バインディング、およびビュー・レイヤー間の接続を示しています。

図3-5 ADFモデルを使用した、UIコンポーネントへのデータ・ソースのバインディング

3.6 ADFモデルのプロセス・フローの概要

この項では、ADFモデルと連動するためのプロセス・フローについて説明します。このプロセスは、ADFビジネス・コンポーネントを使用しているか、その他のタイプのデータ・コントロールを使用しているかによって異なります。

3.6.1 ADFビジネス・コンポーネントでADFモデルを使用するための開発手順

ADFビジネス・コンポーネントでADFモデルを使用する場合は、単にビジネス・コンポーネントを構築します。詳細は、「ADFビジネス・コンポーネント・プロセス・フローの概要」を参照してください。

3.6.2 非ADFビジネス・サービスでADFモデルを使用するための開発手順

非ADFビジネス・サービスでADFモデルを使用する場合の基本的な手順は次のとおりです。

1. JDeveloperで、そのアプリケーション用のアプリケーション・ワークスペースを作成します。

2. アプリケーション・ワークスペースで、データ・コントロールの基準となるビジネス・サービスを作成またはインポートします。
これらのサービスには、EJBセッション・ファサード、プレーンJavaオブジェクト(POJO)、Webサービスまたはデータ・コントロールがあるその他のタイプのサービスが含まれます。サービスを作成するには、データベース、URL、またはスキーマへの接続も必要となる場合があります。

3. JDeveloperの「新規ギャラリ」で使用可能なウィザードを使用して、ビジネス・サービスのデータ・コントロールを作成します。

4. オプションで、JDeveloperのビジュアル・エディタを使用して、データ・コントロールでカプセル化されたサービスのビジネス・ルールを宣言的に指定します。

5. オプションで、JPAベースのデータ・コントロールに対し、ADFモデル・テスターを使用してビジネス・サービスをテストします。

6. 「データ・コントロール」パネルと様々なバインディング・エディタを使用して、データバインドされたコンポーネントをビュー・レイヤーに作成します。

3.7 ADFモデルの詳細について

次のリソースに、アプリケーションのADFモデルの使用に関する詳細が記載されています。

- アダプタ・データ・コントロールの作成と構成の詳細は、『Oracle ADFデータ・コントロールによるアプリケーションの開発』の「ADFモデルの概要」を参照してください。

- ADFビジネス・コンポーネントを使用したデータ・モデルの作成の詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』の「アプリケーション・モジュールによるビジネス・サービスの実装」を参照してください。

- ADFモデルのデータ・バインディングを使用したユーザー・インタフェース作成の詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』の「データバインドされたWebユーザー・インタフェースの作成」を参照してください。

- データ・コントロールとデータ・バインディングに関連したJavadocドキュメントは、Oracle ADFモデルのJava APIリファレンスを参照してください。

4 ADFビジネス・コンポーネント

この章では、ビジネス・サービスの構築のための主要機能など、ADFビジネス・コンポーネントの概要について説明します。ここで説明する機能には、エンティティ・オブジェクト、ビュー・オブジェクト、アプリケーション・モジュールなどがあります。

この章の内容は次のとおりです。

- ADFビジネス・コンポーネントについて

- ADFビジネス・コンポーネントのコアな利点

- ADFビジネス・コンポーネントの主要概念

- ADFビジネス・コンポーネントの主要コンポーネント

- ADFビジネス・コンポーネント・プロセス・フローの概要

- ADFビジネス・コンポーネントに関する詳細

4.1 ADFビジネス・コンポーネントについて

ADFビジネス・コンポーネントは、開発者の最小限のコード記述のみで再使用可能なデータベース対応のビジネス・サービスを作成するためのテクノロジです。開発者はウィザードとビジュアル・エディタを使用して、Javaコードを記述せずにADFビジネス・コンポーネント・サービスを作成できます。さらに高度の機能を作成するために、コアなADFビジネス・コンポーネント・クラスを拡張することも可能です。ADFビジネス・コンポーネント・サービスは、アプリケーションのビュー・レイヤーを使用してADFモデルを介して公開されます。

図4-1は、ADFビジネス・コンポーネントがADFテクノロジ・スタックにどのように適合しているかを示しています。ADFビジネス・コンポーネントの機能は直接ADFモデルと統合される点に注意してください。

図4-1 ビジネス・コンポーネントでのADFアーキテクチャ

さらに、Fusion Webアプリケーション、サービス・コンポーネント・アーキテクチャ(SCA)に従ったコンポジット・アプリケーション、およびWebサービスのコールを介したその他のアプリケーションで使用できるサービスとして、ADFビジネス・コンポーネントを使用してアプリケーションを作成し公開できます。

4.2 ADFビジネス・コンポーネントのコアな利点

ADFビジネス・コンポーネントは、ビジネス・サービスの開発者に対して次の利点を提供します。

- データベース・アクセスの管理。接続、データの取得、レコードのロック、レコードの挿入および更新などが含まれます。

- 特定のタイプのエンド・ユーザーに合せたデータ・モデル作成機能。必要なデータのみが公開されます。

- データベースで定義されたもの以外のデータ・モデル関係の追加作成。

- 必須フィールド、主キーの一意性、データの精度と規模および外部キー参照を強化する宣言的ルールを使用するための機能。

- マルチレベルでの検証サポートが備わった、プログラムまたは宣言による、簡単なビジネス・ルールと高度なビジネス・ルール両方の取得および実行。

- コードなしのエンド・ユーザーのQuery-by-Exampleのデータ・フィルタリングの実装。

- 他のFusion Webアプリケーションと統合し、SOAコンポジット・アプリケーションで使用できるサービスとして、コンポーネントを公開する機能。

- ビジネス・プロセスを起動し、外部システムの同期をトリガーするためのビジネス・イベントを呼び出す機能。

- アプリケーション・フェイルオーバーとユーザー・セッションの処理をクラスタ化された高可用性サーバー環境における複数のノードで有効化する、アプリケーションの状態管理に関する組込み機能。

- 静的データとアプリケーション・モジュール・プーリングを処理する共有アプリケーション・モジュールなど、パフォーマンスの最適化を対象とする機能。

- 手動で編集することもできるコンポーネントのXML定義を生成する、JDeveloperのウィザードとビジュアル・エディタ。

4.3 ADFビジネス・コンポーネントの主要概念

ADFビジネス・コンポーネントは、ADFモデルを直接組み込むJavaベースのビジネス・サービスの実装です。この項では、ビジネス・サービスのロールおよびADFビジネス・コンポーネントでビジネス・サービスを実装する方法の概要について説明します。

4.3.1 ビジネス・サービスの実装

ビジネス・サービスは、MVCアプリケーションとデータ・ソース(通常はデータベース)を仲介する舞台裏のコンポーネントです。通常、ビジネス・サービスでは次のタスクが実行されます。

- アプリケーションの残りの部分でリクエストされたデータの取得

- アプリケーションの残りの部分で使用可能なJavaオブジェクトとしての、このデータの表現(オブジェクト・リレーショナルな["O/R"]マッピング)

- アプリケーションの残りの部分により加えられた変更の永続化

- 検証ロジック、計算属性、デフォルト設定ロジックなど、ビジネス・ルールの実装

- リクエストに応じてデータ上の大規模なバッチ操作を実行できるサービスの提供

ビジネス・サービスは、アプリケーションの永続性とビジネス・ロジックを、アプリケーションのUIと制御フローを管理するロジックから分割します。永続性とビジネス・ロジックを別にすることで、それらを複数のMVCアプリケーションで再利用できるようになります。

4.3.2 標準JavaおよびXMLベース

ADFビジネス・コンポーネントはJavaに実装されたフレームワークです。ベース・フレームワーク・クラスには、一般的なメタデータ主導の機能が用意されています。XMLファイルには、各コンポーネントの実行時の動作を構成するために定義するメタデータが保存されています。また、ベース・フレームワーク機能をニーズに合せて拡張することも可能です。

図4-2は、JDeveloperの「アプリケーション」ウィンドウおよびADFビジネス・コンポーネント・サービスを構成するファイルの表示方法を示しています。たとえば、DeptVOコンポーネントは基礎となるフレームワーク・クラスに完全に依存する単一のXMLファイルで定義されます。また、CustomerVO定義はメタデータ、および基礎となるフレームワーク・クラスを拡張する3つのJavaクラスが用意されたXML定義ファイルで構成されています。

図4-2 ADFビジネス・コンポーネントのXMLおよびJavaオブジェクト

図4-3は、ADFビジネス・コンポーネント・ビュー・オブジェクト定義ファイルのソース・エディタを示しています。

図4-3 ADFビジネス・コンポーネント定義ファイルのソース・ビュー

JDeveloperには、ADFビジネス・コンポーネント定義ファイルのビジュアル概要エディタも用意されています。図4-4は、図4-3に示された同じビュー・オブジェクトの定義ファイルに対する概要エディタを示しています。

図4-4 ADFビジネス・コンポーネント定義ファイルの概要エディタ

4.3.3 アプリケーション・サーバーとデータベースの独立性

ADFビジネス・コンポーネント・サービスはプレーンJavaクラスとXMLファイルを使用して実装されているため、ADFビジネス・コンポーネントを使用して構築されたアプリケーションとサービスは、Java EE準拠のアプリケーション・サーバーなど、どのJava対応アプリケーション・サーバーでも実行できます。これらのアプリケーションとサービスは、Java EEサーバー・コンテナの内外両方で稼働できます。

ADFビジネス・コンポーネント・コンポーネントは、Oracleデータベースおよび非Oracleデータベースのいずれとも一緒に使用できます。Oracleデータベースとともに使用できるよう、多数の最適化がADFビジネス・コンポーネントに組み込まれています。

4.3.4 Java EEデザイン・パターンのサポート

ADFビジネス・コンポーネントはJava EEデザイン・パターンを実装しています。実際のエンタープライズJava EEアプリケーションを作成する際には、通常、そのデザイン・パターンを理解、実装およびデバッグする必要があります。これらのパターンは、アプリケーション・レイヤーの明確な分割、効率的なデータベースへのアクセス、アプリケーション・スケーラビリティなどの問題を解決します。

Java EE仕様のこれらのデザイン・パターンの名前をADFビジネス・コンポーネントの対応する名前と相互参照するには、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』の「ADFビジネス・コンポーネントJava EEデザイン・パターン・カタログ」を参照してください。

4.3.5 実装クラスの宣言的メタデータ

ADFビジネス・コンポーネント・オブジェクトは、宣言的設定により制御する組込み実行時機能が用意された一連のJavaクラスに基づいています。XMLコンポーネント定義ファイルを使用して、データベース表、データ・アクセス・メソッドおよび検証ルールにオブジェクト/関係のマッピングなどのメタデータを指定します。実行時に、サービスのインスタンスを作成するために、このメタデータが実装クラスに追加されます。一般的なユースケースの場合、開発者はサービスを実装する際にJavaコードを記述する必要がありません。

4.3.6 オプションのカスタムJavaコード

カスタムJavaコードをコンポーネントの定義に追加して、コンポーネントの動作をさらに構成することが可能です。コンポーネントの動作を拡張するなど、コンポーネントのカスタム・コードを記述する必要がある場合、該当するコンポーネントに対するオプションのカスタムJavaクラスを有効にできます。

4.3.7 サービスをSOAアプリケーションに公開する機能

ADFビジネス・コンポーネント・サービスを開発したら、それをサービス指向型アーキテクチャ(SOA)に基づいたアプリケーションで使用できる、外部サービスとして公開できます。詳細は、「サービス対応のアプリケーション・モジュール」を参照してください。

4.3.8 アプリケーション状態管理

ADFビジネス・コンポーネントにはアプリケーション・モジュールの状態管理機能が備わっており、ユーザー・セッションの状態を保存できるため、リカバリやフェイルオーバーのシナリオを簡単にします。

アプリケーション・モジュール状態管理の詳細は、「アプリケーション・モジュール状態管理」を参照してください。セーブポイントの詳細は、「セーブポイント」を参照してください。

4.4 ADFビジネス・コンポーネントの主要コンポーネント

ADFビジネス・コンポーネント・アーキテクチャは、次のキー・コンポーネントにより構成されます。

- エンティティ・オブジェクト。データベース内の表など、データ・ソース内の個々のオブジェクトをカプセル化し、そのデータと連動するビジネス・ロジックを追加します。

- エンティティ・アソシエーション。個々のエンティティ・オブジェクト間の関係を定義します。

- ビュー・オブジェクト。これにより、ユーザーインタフェース内のADFモデルのバインドを介して使用できる形式でデータにアクセスできます。データを更新できるビュー・オブジェクトは、エンティティ・オブジェクトに基づいています。

- ビュー・リンク。ビュー・オブジェクト間のマスター/ディテールの階層を定義します。

- アプリケーション・モジュール。エンドユーザーのタスクに関連した作業の論理単位に必要なビュー・オブジェクトをカプセル化します。

4.4.1 エンティティ・オブジェクト

ADFエンティティ・オブジェクトは、アプリケーションで使用される項目について、データ、永続動作、ビジネス・ルールをカプセル化するビジネス・コンポーネントです。たとえば、エンティティ・オブジェクトで次の項目を表すことができます。

- ビジネスの論理構造(製品ライン、部門、売上、地域など)の要素

- ビジネス文書(請求書、注文変更書、サービス要求など)

- 物理的な項目(倉庫、従業員、設備など)

エンティティ・オブジェクトはデータソース内のシングル・オブジェクトにマップされます。ほとんどの場合、エンティティ・オブジェクトはデータベース内の表、ビュー、シノニムまたはスナップショットです。たとえば、DEPARTMENTSという名前のデータベース表を表すDepartmentsというエンティティ・オブジェクトを作成するとします。上級プログラマは、他のデータソース(スプレッドシート、XMLファイル、フラット・テキスト・ファイルなど)のオブジェクトに基づいてベース・エンティティ・オブジェクトを作成できます。

図4-5は、エンティティ・オブジェクトがADFビジネス・コンポーネント・アプリケーションの他のオブジェクトにどのように適合しているかを示しています。

図4-5 ADFビジネス・コンポーネント・アーキテクチャ内のエンティティ・オブジェクト

4.4.1.1 エンティティ・オブジェクトの定義ファイル

JDeveloperのウィザードとビジュアル・エディタを使用してエンティティ・オブジェクトを作成および構成すると、JDeveloperではそのエンティティ・オブジェクト(そのO/Rマッピング、検証ルール、UIヒント、その他のメタデータなど)のランタイム動作を定義する宣言的メタデータを含むXMLファイルが作成されます。ランタイムに、このメタデータは汎用フレームワーク・クラスoracle.jbo.server.EntityImplのインスタンスに実装されます。

ADFビジネス・コンポーネント・フレームワーク・クラスを拡張するカスタム・クラスを記述することで、エンティティ・オブジェクトにカスタム機能を追加することも可能です。詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のエンティティ・オブジェクトのカスタムJavaクラスの生成に関する項を参照してください。

4.4.1.2 エンティティ・オブジェクトを構成する方法

エンティティ・オブジェクトは、ADFモデルのADFビジネス・コンポーネント実装の一部です。そのため、エンティティ・オブジェクトの定義に宣言的メタデータを追加してその動作を構成できます。次に示すのは、エンティティ・オブジェクトのメタデータを設定できる事項の一部です。

- UIヒント。ロケールに依存した一貫性のある方法で問合せ情報を自動表示する際にビュー・レイヤーで使用される設定です。

- 検証ルール。エンティティ・オブジェクトまたは個々の属性の両方のレベルで設定できます。

- ビジネス・イベント。ビジネス・プロセスを起動し、外部システムの同期をトリガーする際に使用できます。

4.4.2 エンティティ・アソシエーション

エンティティ・オブジェクトの定義の関係は、2つのエンティティ・オブジェクトの定義間の関係をそれぞれの一連のエンティティ属性に基づいて定義する、エンティティ・アソシエーションによって処理されます。アソシエーションは、データソースのシングル・オブジェクト間の関係にマップされます。ほとんどの場合、アソシエーションはデータベース内の表、ビュー、シノニムおよびスナップショットです。上級プログラマは、アソシエーションを使用して他のデータソース(スプレッドシート、XMLファイル、フラット・テキスト・ファイルなど)内の関係を表現できます。

データソースがデータベースの場合、通常、アソシエーションはそのデータベースにある表と表の間の外部キー関係にマップされます。対応するエンティティ・オブジェクトの間に1対1または1対多のアソシエーションを作成する場合、表と表の間に外部キー制約を設定する必要はありませんが、適切な論理的関係が表の間に必要です。

4.4.3 ビュー・オブジェクト

ADFのビュー・オブジェクトはビジネス・コンポーネントであり、データソースのデータを収集してクライアント用に形成し、クライアントがそのデータをADFビジネス・コンポーネントのキャッシュで変更できるようにします。特に、ビュー・オブジェクト定義を使用して、次の操作に必要な情報を収集できます。

- 単一の表要素のフォームへの移入

- 挿入フォームまたは編集フォームの作成および処理

- ドロップダウン・リストへの移入に使用する値リストの作成

- 特定の検索基準を使用した検索フォームの作成

ビュー・オブジェクトの定義を作成してそれをアプリケーション・モジュールのデータ・モデルに追加したら、「データ・コントロール」パネルを使用して、そのビュー・オブジェクトのコレクション、属性および操作に基づいてUIコンポーネントを作成します。

図4-6 ADFビジネス・コンポーネント・アーキテクチャ内のビュー・オブジェクト

ビュー・オブジェクトの定義には、データソースからデータを取得するメカニズムが必要です。通常、データ・ソースはデータベースで、メカニズムはSQL問合せです。ADFビジネス・コンポーネントは、自動的にJDBCを使用して問合せをデータベースに渡し、結果を受け取ります。ビュー・オブジェクトの定義でSQL問合せが使用される場合、問合せ列がそのビュー・オブジェクト定義のビュー属性にマップされます。これらの属性の定義は、データ型、精度、スケールの仕様など、それらの列のプロパティを反映しています。ビュー・オブジェクトの定義を別のデータ・ソースに使用すると、ビュー・オブジェクトの属性が、プログラマの定義に応じて、それらのデータ・ソースからデータの「列」にマップされます。

ビュー・オブジェクトを操作する場合は、通常、単一の結果行セットのみを1回で操作します。このユースケースを単純化するために、ビュー・オブジェクトにはデフォルトのRowSetが含まれ、また、それにはデフォルトのRowSetIteratorが含まれています。デフォルトのRowSetIteratorにより、デフォルト行セットに自動的に適用されることを認識しながら、ViewObjectコンポーネント自体でデータ取得メソッドのすべてを直接コールできるようになります。

さらに、ビュー・オブジェクトにビュー基準を宣言的に定義できます。ビュー基準では、結果をフィルタリングするために、ターゲット・ビュー・オブジェクトのWHERE句を拡張する問合せ条件を指定します。次に、それらのビュー基準を使用して、Query-by-Example検索フォームを作成したり、実行時に行セットまたは値リスト(LOV)をフィルタリングしたり、または単一のビュー・オブジェクトの定義に基づいて可変ビュー・インスタンスを作成したりできます。

4.4.3.1 ビュー・オブジェクトのタイプ

ビュー・オブジェクトには次の2つの主要なタイプがあります。

- エンティティベースのビュー・オブジェクト。1つまたは複数のエンティティ・オブジェクトからデータにアクセスし、ユーザーのアクションに基づいてデータ・ソースを更新するためにそれらのエンティティ・オブジェクトと連携します。

- 読取り専用ビュー・オブジェクト。データへ直接アクセスできます。読取り専用ビュー・オブジェクトには中間オブジェクトが不要なため、エンティティベースのビュー・オブジェクトより素早くデータにアクセスします。使用するユースケースでデータを変更せずにアクセスする必要がある場合、読取り専用ビュー・オブジェクトを作成します。同じ表に対して、読取り専用ビュー・オブジェクトとエンティティベースのビュー・オブジェクトがある場合があります。

さらに、次のようなデータ・ソースでビュー・オブジェクトを作成することもできます。

- データベースのダイレクトSQL問合せ

- プログラム関連のソース

- CSVファイルからの静的データ

多相ビュー・オブジェクトを作成することも可能です。それには、一般的な継承階層を備えた複数の行セット・タイプが単一のビュー・オブジェクトで表されています。

4.4.3.2 ビュー・オブジェクトの定義ファイル

エンティティ・オブジェクトとの連動と同様、JDeveloperのウィザードとビジュアル・エディタを使用してビュー・オブジェクトの定義を作成および構成すると、JDeveloperではそのビュー・オブジェクトのランタイム動作とUIで使用される機能(UIヒント、検証ルールなど)を定義する宣言的メタデータを含むXMLファイルが作成されます。このメタデータは、実行時に汎用フレームワーク・クラスoracle.jbo.server.ViewObjectImplのインスタンスに実装されます。

ADFビジネス・コンポーネント・フレームワーク・クラスを拡張するカスタム・クラスを記述することで、ビュー・オブジェクトにカスタム機能を追加することも可能です。詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』の「ビュー・オブジェクトのプログラムによる操作」を参照してください。

4.4.3.3 ビュー・オブジェクトを構成する方法

ビュー・オブジェクトは、ADFモデルのADFビジネス・コンポーネント実装の一部です。そのため、ビュー・オブジェクトの定義に宣言的メタデータを追加してその動作を構成できます。

同じ宣言的メタデータを、エンティティ・オブジェクトに定義したように、ビュー・オブジェクトにも定義できます(ビュー・オブジェクトではビジネス・イベントを呼び出せないことを除いて)。さらに、次のような他のタイプのメタデータをビュー・オブジェクト用に設定できます。

- ビュー基準。さらに改良した問合せとして機能し、「データ・コントロール」パネルで名前付き問合せとして表示され、それを使用して検索フォームを宣言的に作成できます。

- リストUIヒント。値のリストをユーザー・インタフェースで表す方法を示すために使用できます。

- UIカテゴリ。属性のタイトル付きグループを動的な形式で表すために使用できます。

- ビュー・アクセッサ。リスト・ベースの属性検証または値リストのいずれかに関係するビュー・インスタンス属性のデータ・ソースを提供するために使用できます。

- 行検索。非キー属性の値によってビュー・インスタンス行を照合して、プログラムまたはADF Webサービスのいずれかで行更新を開始するために使用できます。

4.4.4 ビュー・リンク

ビュー・オブジェクト間の関係は、2つのビュー・オブジェクト間の関係をそれぞれの一連のエンティティ属性に基づいて定義する、ビュー・リンクによって処理されます。エンティティ・アソシエーションのように、外部キーに基づく単純な1対多関係から複雑な多対多関係まで、様々な関係を作成できます。

また、ビュー・オブジェクトの個々のインスタンスはビュー・リンクの個々のインスタンスによって関連付けることができます。これにより、問合せ結果セットの間にマスター/ディテールの関係が作成されます。たとえば、部署の情報と従業員の情報に対する問合せを表すビュー・オブジェクトの定義と、部署およびその従業員間の関係を表すビュー・オブジェクト間にビュー・リンクがあるとします。前者のビュー・オブジェクトの定義のインスタンスallDepartmentsが、ビュー・リンクのインスタンスにより、後者のインスタンスemployeesInDepartmentに関連付けられている場合、それらのインスタンスは同期化されます。allDepartmentsの特定の行が選択されていると、employeesInDepartmentは必ずその行の詳細のみを表示します。

4.4.5 アプリケーション・モジュール

Oracle ADFアプリケーション・モジュールは、ADFモデルのデータ・コントロールのADFビジネス・コンポーネント実装です。アプリケーション・モジュールは、特定のアプリケーション・タスクを表しています。アプリケーション・モジュールの定義は、タスクに必要なビュー・オブジェクト・インスタンスおよびビュー・リンク・インスタンスを集約することによって、そのタスクにデータ・モデルを提供します。また、クライアントのタスクの実行に役立つサービスも提供します。たとえば、アプリケーション・モジュールは次のようなタスクを表し、支援できます。

- 顧客情報の更新

- 新規注文の作成

- 昇給の処理

図4-7は、アプリケーション・モジュールが他のビジネス・コンポーネントと連携する様子を示しています。

図4-7 ADFビジネス・コンポーネント・アーキテクチャ内のアプリケーション・モジュール

さらに、アプリケーション・モジュールにはプーリング機能と状態管理機能が備わっており、アプリケーションを容易に拡張可能にし、十分に機能できるようにし、フェイルオーバーの処理を簡単にします。

4.4.5.1 アプリケーション・モジュールのタイプ

アプリケーション・モジュールの定義は、次の方法で使用できます。

- サービス・オブジェクトとして使用。この場合、MVCアプリケーションの各インスタンスはアプリケーション・モジュールの1つのインスタンスへアクセスできます。これらのルートレベルのアプリケーション・モジュール・インスタンスは、ADFビジネス・コンポーネントのトランザクション・オブジェクトを制御し、トランザクション・オブジェクトではエンティティ・キャッシュとビュー・キャッシュが制御されます。

- 再使用可能なネスト用のオブジェクトとして使用。この場合、データ・モデルを作成し、その上にサービス・メソッドを作成してから、そのインスタンスの1つを別のアプリケーション・モジュールの定義にネストできます。それらのアプリケーション・モジュールの定義は、同様に、ネストされたモジュールのメソッドおよびデータ・モデルにアクセスできます。ネストされたアプリケーション・モジュールは、ルートレベル・アプリケーション・モジュールのトランザクションを共有します。

- 共有されたアプリケーション・モジュールとして使用。ここでは、データはセッションとリクエスト全体で再利用のためにキャッシュされます。共有アプリケーション・モジュールは、それほど頻繁に変更せず、複数のセッションとリクエスト間でアクセスする必要のあるデータがある場合、パフォーマンスの最適化には特に有用です。

4.4.5.2 アプリケーション・モジュールの定義ファイル

アプリケーション・モジュールの定義には、次の1つまたは2つの部分を含めることができます。

- XMLファイル。宣言的に開発できるアプリケーションの部分(アプリケーション・モジュールに備わったビュー・オブジェクトとビュー・リンク・インスタンスおよびそれらが関連する方法)を表します。多くのアプリケーション・モジュールでは、XMLファイル単独で十分です。

- アプリケーション・モジュール・クラス。これにより、MVCアプリケーションがバッチ・データ処理を起動できるサービス・メソッドなど、カスタム・コードを記述できます。アプリケーション・モジュール・クラスは、クラスoracle.jbo.server.ApplicationModuleImplを拡張します。カスタム・サービス・メソッドを記述する必要がない場合、アプリケーション・モジュール・クラスを生成する必要はありません。ADFでは、oracle.jbo.server.ApplicationModuleImplを直接使用できます。

4.4.5.3 サービス対応アプリケーション・モジュール

サービス対応アプリケーション・モジュールは、サービス・インタフェースを使用して、サービス利用者に通知するADFアプリケーション・モジュールです。サービス利用者が公開されたサービス対応アプリケーション・モジュールを利用するには、次の3つの使用例があります。

- Webサービスへのアクセス

- Service Component Architecture (SCA)コンポジット・アクセス

- 別のADFアプリケーション・モジュールによるアクセス

Service Component Architecture (SCA)は、リモートで使用可能なサービスを実装するためのオープンで技術に中立なモデルを提供します。SCAはビジネス機能の観点から定義されており、アプリケーション開発者によるミドルウェア機能のアクセスを容易にします。ADFビジネス・コンポーネントはサービス・インタフェースで公開可能なアプリケーション・モジュールにより、SCA準拠ソリューションをサポートしています。サービス・インタフェースはWSDLとXSDを組み合せた中立言語で、Fusion Webアプリケーション・クライアント用に記述されます。

アプリケーション・モジュールをサービス対応にすると、JDeveloperでは次のファイルで構成されるアーティファクトが生成されます。

- サービスを定義するJavaインタフェース

- このJavaインタフェースを実装するEJBセッションBean

- サービスの操作を説明するWSDLファイル

- サービスのデータ構造を定義するXMLスキーマ・ドキュメント(XSD)

SCAは次の2種類のサービスを定義します。

- リモート対応可能なサービス。通常はきめが粗く、結合が緩いSOAアーキテクチャでのリモート公開用に設計されます。

- ローカル・サービス。通常はきめが細かく、緊密に結合されたアーキテクチャ内で同時にデプロイされる他の実装でのローカルな使用のために設計されます。

ADFビジネス・コンポーネント・サービスは最初のカテゴリに分類され、リモート対応可能サービスとしてのみ使用する必要があります。

リモート・アプリケーション・モジュールによって定義されたADFビジネス・コンポーネント・サービス(データ・アクセスとメソッド・コールを含む)は、その他のあらゆるアプリケーション・モジュールとの相互運用が可能です。これは、同じアプリケーション・モジュールで、ADFデータ・コントロールおよびWebサービス・クライアントを使用している対話型のWebユーザー・インタフェースをサポートできるということを意味しています。

サービス対応アプリケーション・モジュールは、開発チームが公開し、Fusion Webアプリケーションに提供できます。リモート・サービスからアセンブルされたFusion Webアプリケーションも、単一のアプリケーション・サーバー上で稼働するための参加サービスが不要です。

Webアプリケーションは異なる複数のアプリケーション・サーバーで実行されることがありますが、SCAは統合アプリケーションのように見えます。利用するクライアント・プロジェクトはADFサービス・ファクトリ検索メカニズムを使用して、データおよびサービス対応アプリケーション・モジュールによってカプセル化されたあらゆるビジネス・メソッドにアクセスします。実行時は、サービスの起動に使用されるプロトコル(SOAPまたはRMI)に応じて、コール元のクライアントとADF Webサービスが同じトランザクションに参加する場合とそうでない場合があります。RMIプロトコルとJava Transaction API (JTA)マネージド・トランザクションのみで、コール元のクライアントと同じトランザクションでサービスをコールすることができます。デフォルトでは、ADF Webサービスは、RMIプロトコルをサポートするために、同じトランザクションに参加するように構成されます。

サービス・データ・オブジェクト(SDO)コンポーネントとしてアプリケーション・モジュールを有効にする方法の詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のサービス対応アプリケーション・モジュールの統合に関する項を参照してください。

4.4.5.4 アプリケーション・モジュール・プーリング

アプリケーション・モジュールをそのビジネス・サービスとして利用するアプリケーションを作成すると、そのアプリケーションでは自動アプリケーション・モジュール・プーリング機能を使用できます。この機能は、構成可能な一連のアプリケーション・モジュールのインスタンスを管理し、アプリケーションの変更に応じてエンドユーザーの負荷を増加したり軽減したりします。アプリケーション・ユーザー・インタフェースとのエンド・ユーザーの対話に特有の思考時間の性質により、プール内のアプリケーション・モジュール・インスタンスの数は、システムを使用しているアクティブ・ユーザーの合計数より少なくなる場合があります。特定のエンドユーザーがアプリケーションの複数のページにアクセスして論理タスクを実行すると、プール内のアプリケーション・モジュールのインスタンスが各リクエストの存続時間中にプールから自動的に取得されます。リクエストの最後に、インスタンスはプールに自動的に戻され、別のユーザー・セッションで使用可能になります。

アプリケーションのパフォーマンスを最適化するために、初期および最大プール・サイズや、アプリケーション・モジュールのインスタンスが非アクティブな時間がどれだけ経過したら、プールからそのインスタンスを削除できるかなど、アプリケーション・モジュールのプール・プロパティを調整できます。

4.4.5.5 アプリケーション状態管理

アプリケーション・モジュール・コンポーネントを使用して、完全にステートレスなアプリケーションを実装したり、複数のブラウザ・ページが関係する作業単位をサポートしたりできます。アプリケーション・モジュールは、保留中トランザクション状態のXMLドキュメントへの受動化(保存)をサポートし、XMLドキュメントは、データベースの単一の汎用的な表に、一意の受動化スナップショットIDをキーとして格納されます。また、これらの保存されているXMLスナップショットの1つから保留中トランザクション状態を能動化する逆の操作もサポートします。この受動化と能動化は、必要に応じて、アプリケーション・モジュール・プールにより自動的に行われます。アクティブ化は、サーバーのフェイルオーバーによりトリガーできます。または、単にユーザー・セッションがアプリケーション・モジュール・プールの複数のインスタンスに渡っているため、セッションが完了する前にトリガーできます。

4.5 ADFビジネス・コンポーネント・プロセス・フローの概要

ADFビジネス・コンポーネントに基づくビジネス・サービス・レイヤーの作成は、次の一般的な手順で構成されます。

1. JDeveloperで、そのアプリケーション用のアプリケーション・ワークスペースを作成します。

2. ベース・フレームワーク・クラスを拡張するカスタム・クラスを作成し、作成したビジネス・コンポーネントがそれらのカスタム・クラスをベースとするようにモデル・プロジェクトを構成します。これらのクラスには、ベース・フレームワークの動作を後で変更し、それらの変更内容をアプリケーション内で作成済のすべてのビジネス・コンポーネントに適用するためのメカニズムが用意されています。

3. JDeveloperの「新規ギャラリ」でウィザードを使用して、次のオブジェクトの組合せを作成します。

- エンティティ・オブジェクト

- エンティティ・アソシエーション

- エンティティ・オブジェクトに基づいたビュー・オブジェクト

- オプションで、データベースに対する直接の問合せに基づいたビュー・オブジェクト

- マスター/ディテール関係を確立するビュー・オブジェクト間のビュー・リンク

- アプリケーション・モジュールを作成し、データ・モデルを確立するためにアプリケーション・モジュール内に適切なビュー・オブジェクトとビュー・リンクを追加します。

4. オプションで、JDeveloperのビジュアル・エディタを使用して、エンティティ・オブジェクトとビュー・オブジェクトのビジネス・ルールを宣言的に指定します。

5. ADFモデル・テスターを使用して、データ・モデルのビジネス・ロジックをテストします。

6. パフォーマンスのためにアプリケーション・モジュールを調整します。

7. SOAアプリケーションに関連している場合、外部アプリケーションで利用できるようにサービスを公開します。

8. 「データ・コントロール」パネルと様々なバインディング・エディタを使用して、データバインドされたコンポーネントをビュー・レイヤーに作成します。

4.6 ADFビジネス・コンポーネントの詳細について

次のリソースには、アプリケーションでのADFビジネス・コンポーネントの使用に関する詳細が記載されています。

- ADFビジネス・コンポーネントを使用したビジネス・サービスの作成の詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』.の「ビジネス・サービスの構築」を参照してください。

- ADFモデルのデータ・バインディングを使用したユーザー・インタフェース作成の詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』の「データバインドされたWebユーザー・インタフェースの作成」を参照してください。

- ADFビジネス・コンポーネントに関連したJavadocドキュメントは、Oracle ADFモデルのJava APIリファレンスのoracle.jboパッケージを参照してください。

5 ADF Controllerのタスク・フロー

この章では、ADF Controllerのタスク・フロー・テクノロジの高度の概要について、JSFのビルトイン・コントローラのサポートに対するその関係も含めて説明します。さらに、タスク・フローの機能および利点について説明します(モジュール型および再利用可能なタスク・フロー、単一ページのリージョン間のフロー、トランザクション管理、セーブポイント、宣言的なルーターの決定、宣言的な例外の処理など)。

この章の内容は次のとおりです。

- ADF Controllerについて

- ADF Controllerのコアな利点

- ADF Controllerの主要概念

- ADF Controllerの主要コンポーネント

- ADF Controllerのプロセス・フローの概要

- ADF Controllerに関する詳細

5.1 ADF Controllerについて

ADF Controllerは宣言的なフレームワークであり、タスク・フローの概念を介して、javax.faces.webapp.FacesServletクラスやfaces-config.xmlファイルによって表されたJSFページ・ナビゲーションのサポートを構築します。図5-1は、ADF Controllerがエンタープライズ・アプリケーションにどのように適合しているかを示しています。

図5-1 ADF Controllerの全体のアプリケーション・アーキテクチャ

5.2 ADF Controllerのコアな利点

ADF Controllerは開発者に対して次の利点を提供します。

- アプリケーションは、相互にコールする一連のモジュール型のタスク・フローに分割できます。

- タスク・フローには、ビューを表すノード、メソッドのコール、ルーティング条件、他のタスク・フローへのコールを含めることができます。(基本的なJSFアプリケーションでは、ページ・フロー・ノードとして設定できるのはJSFページのみです。)

- タスク・アクティビティと様々なタスク・フローの間でパラメータを渡すことができます。

- アプリケーションのタスク・フローのビュー・アクティビティに基づいて、エンドユーザーに対してナビゲーション・リンクを持つページ階層を生成できます。

- タスク・フローは再利用が可能です。

- タスク・フローをADFライブラリJARへパッケージ化し、それを別のアプリケーションのプロジェクトで使用するためにインポートできます。

- タスク・フローは、様々なADFアプリケーションからリモートで呼び出せます。

- タスク・フローを使用して、エンド・ユーザーに公開するアクセス・ポイントの数を減らし、特定のアクセス権限を強化することで、Fusion Webアプリケーションを保護することも可能です。

5.3 ADF Controllerの主要概念

ADF Controllerの中心的な機能はタスク・フローです。タスク・フローでは、Fusion Webアプリケーションの制御フローを定義するためのモジュール化アプローチが提供されます。アプリケーションを単一の大型JSFページ・フローとして表すのではなく、複数のタスク・フローに分割し、各タスク・フローにアプリケーションのナビゲーション・グラフの一部が含まれるようにします。

タスク・フローは、ページまたはページ・フラグメントの表示、アプリケーション・ロジックの実行、別のタスク・フローのコールなど、簡単な論理操作を表すアクティビティ・ノードから構成されています。アクティビティ間の遷移は制御フロー・ケースと呼ばれます。

タスク・フローには、ページ・フローの一部としてのカスタム・ビジネス・ロジックの起動、宣言的なルーターの決定、宣言的例外処理、追加のメモリー有効範囲、ページ内のフロー、再使用可能なフローなどが含まれます。また、タスク・フローにはトランザクションの境界を定めるためにフローを使用し、メソッドのコールなど表示不可能なターゲットへのナビゲーションをルーティングするための組込みサポートも含まれます。

JDeveloperを使用すると、ダイアグラム・エディタで視覚的にタスク・フローを作成できます。

5.4 ADF Controllerの主要コンポーネント

ADF Controllerは、次の項で説明されている主要なコンポーネントで構成されています。

- バインドなしタスク・フロー

- バインド・タスク・フロー

- タスク・フロー・アクティビティ

- タスク・フロー・テンプレート

- セーブポイント

- pageFlowScope、backingBeanScopeおよびviewScopeとの統合

- ADF Facesトレイン・コンポーネントとの統合

- ADF Facesリージョン・コンポーネントとの統合

5.4.1 バインドなしタスク・フロー

Fusion Webアプリケーションには必ず単一のADFバインドなしタスク・フローが含まれており、これにはブラウザで直接リクエスト可能な任意のビュー・アクティビティである、アプリケーションのエントリ・ポイントが含まれています。アプリケーションのバインドなしタスク・フローには、他のビュー・アクティビティ(ブックマーク可能のURLを持つページなど)、制御フロー・ルール、およびバインド・タスク・フローへのコールも含まれます。

ただし、バインドなしタスク・フローはパラメータを受け入れたり、返したり、トランザクション境界として機能したりできません。

通常のアプリケーションでは、バインドなしタスク・フローと1つまたは複数のバインド・タスク・フローが組み合されています。たとえば、Fusion Webアプリケーション・テンプレートを使用してアプリケーションを作成する場合、JDeveloperでは、空のバインドなしタスク・フロー(ソース・ファイル名は adfc-config.xml)がデフォルトで作成されます。実行時、Fusion Webアプリケーションでは、バインドなしタスク・フローに追加したアクティビティからバインド・タスク・フローをコールできます。

5.4.2 バインド・タスク・フロー

バインド・タスク・フローは、バインドなしタスク・フローまたは他のバインド・タスク・フローからコールできるプライベート・タスク・フローです。バインド・タスク・フローには、単一エントリ・ポイントと0以上の終了ポイントがあります。プライベート制御フロー・ルール、アクティビティおよびマネージドBeanの独自のセットが含まれています。バインド・タスク・フローでは、再利用、パラメータ、トランザクション管理、再入力が可能であり、JSFページまたはページ・フラグメントにあるADFリージョン内へのレンダリングが可能です。図5-2は、ダイアグラム・エディタで表示されているバインド・タスク・フローの例を示しています。

バインドなしタスク・フローとは違い、バインド・タスク・フローには、ブックマーク可能なビュー・アクティビティを含めることはできません。

図5-2 ADFバインド・タスク・フロー

5.4.3 タスク・フロー・アクティビティ

各タスク・フローは次のアクションおよび制御ケースの一部から構成されています。

- ビュー。JSFページまたはページ・フラグメントが表示されます。

- URLビュー。ルート・ビュー・ポート(ブラウザ・ページなど)を任意のURLアドレス対応リソース(バインド・タスク・フロー、バインドなしタスク・フロー内のビュー・アクティビティ、現在のWebアプリケーションの外部のアドレスなど)にリダイレクトできます。

- Routers。EL式の実行時の評価に基づいて、制御をアクティビティにルーティングします。

- メソッド・コール。アプリケーションの制御フロー内のどこからでもアプリケーション・ロジックを起動する、カスタム・メソッドまたは組込みメソッドをコールできるようになります。

- タスク・フロー・コール。バインドなしタスク・フローまたはバインド・タスク・フローのいずれかからバインド・タスク・フローをコールできます。タスク・フロー・コール・アクティビティによって、同じアプリケーション内または別のアプリケーション内にあるバインド・タスク・フローをコールできます。

- タスク・フロー・リターン。アプリケーションの制御フロー内で、バインド・タスク・フローが完了してコール元に制御フローが戻される場所を識別します。

- セーブポイント・リストア。後で使用するための保存の機能がサポートされているアプリケーションで、以前の永続的なセーブポイントをリストアできます。セーブポイントでは、特定のインスタンスでFusion Webアプリケーションのスナップショットが取得されます。セーブポイント・リストア機能を使用すると、セーブポイントが最初に作成されたときに取得された状態までアプリケーションをリストアできます。詳細は、「セーブポイント」を参照してください。

- 親アクション・アクティビティ。ADFリージョンで実行するバインド・タスク・フローによって、親ビュー・アクティビティに渡す結果を生成できます。この結果を使用して、ADFリージョンのタスク・フローではなく、親ビュー・アクティビティを含むタスク・フローに移動します。

- 制御フロー・ケース。タスク・フローで、あるアクティビティから別のアクティビティに制御を渡す方法が定義されます。制御フロー・ルールには、制御フローを渡すアクティビティを特定する1つまたは複数の制御フロー・ケースを含めることができます。
制御フロー・ルールは、JSFナビゲーション・ルールに基づきますが、その他の機能を提供します。JSFナビゲーションは常にページ間で実行されますが、タスク・フローの制御フロー・ルールは、メソッド・コールやバインド・タスク・フローのエントリ・ポイントと終了ポイントなど、その他のアクティビティ間の遷移も処理します。

- ワイルドカード制御フロー・ルール。これにより、ワイルドカード式を使用して、指定された制御フロー・ルールに渡すビュー・アクティビティを指定できるようになります。

5.4.4 タスク・フロー・テンプレート

タスク・フロー・テンプレートは、バインド・タスク・フローの作成を簡単にし、タスク・フローのランタイム動作の一貫性を向上させ、アプリケーションのタスク・フローのリファクタを容易にします。

名前が示すように、タスク・フロー・テンプレートは標準のタスク・フロー・タイプを作成するためのメカニズムです。タスク・フロー・テンプレートから作成したバインド・タスク・フローには、タスク・フロー・テンプレートと同じタスク・フロー・アクティビティ、制御フロー、入力パラメータおよびマネージドBeanがセットで定義されています。新しいバインド・タスク・フローの作成時に、タスク・フロー・テンプレートをユーザー自身または他のアプリケーションの開発者のために作成し、出発点として使用できます。

また、タスク・フロー・テンプレートを実行時に使用できます。テンプレートに基づいてタスク・フロー(または別のタスク・フロー・テンプレート)を作成する場合、新規作成のフローまたはテンプレートと基本テンプレートの間のアソシエーションを保持するには、「テンプレートの変更時にタスク・フローを更新」チェック・ボックスを選択します。こうすることで、基本テンプレートに加えたそれ以降の変更(新しいビュー・アクティビティの追加など)が実行時に子フロー(またはテンプレート)に伝播されます。(子と親の間に競合がある場合、子が親をオーバーライドします。)子バインド・タスク・フローまたはタスク・フロー・テンプレートの親タスク・フロー・テンプレートは、子の開発中のどの段階でも変更、更新、関連付けの解除が可能です。

5.4.5 セーブポイント

特定のインスタンスでFusion Webアプリケーションの状態を取得するために、セーブポイントをタスク・フローに追加できます。これにより、たとえばユーザーがページを完了せずにそのページから移動する場合などに、アプリケーションの状態を保存できるようになります。アプリケーションの状態は、後でリストアできます。保存される情報には、次のものがあります。

- 選択したタブ、選択したチェック・ボックス、選択した表の行、表の列のソート順など、現在のページのUIの状態。

- セッション・スコープやページ・フロー・スコープなど、メモリー有効範囲に保存される状態の情報。

- シリアライズ可能なマネージドBeanの状態。

- ナビゲーションの状態。タスク・フロー・コール・スタックから導出され、アプリケーション内のエンド・ユーザーの位置、およびそこに至るまでのナビゲーション・パスが追跡されます。

- ADFモデルの状態。現在のバインド・タスク・フローの開始以降に行われたすべてのデータ・モデルの更新で構成されています。

5.4.6 pageFlowScope、backingBeanScopeおよびviewScopeとの統合

ADF Facesでは、pageFlowScope、backingBeanScope、viewScopeの共有メモリー有効範囲が提供され、標準JSFメモリー有効範囲が拡張されます。

タスク・フローに特に関連があるのはpageFlowScopeであり、これはタスク・フローの各インスタンスに対して一意の記憶域を定義します。pageFlowScopeスコープは、タスク・フローの開始時に始まり、タスク・フローの終了時に終わります。

たとえば、pageFlowScopeを持つマネージドBeanは、アクティビティが他のページにわたって広がっていても、そのタスク・フロー内でアクセスできます。ただし、これは、そのタスク・フローの外側にあるすべてのもの(そのタスク・フローをコールする他のタスク・フローや、同じページに存在していても異なるタスク・フローに含まれているリージョンにあるUIコンポーネントなど)については当てはまりません。

これらの範囲に関する詳細は、「ADF Facesの主要概念」を参照してください。

5.4.7 ADF Facesトレイン・コンポーネントとの統合

タスク・フローを作成する際に、そのタスク・フローでADF Faces trainコンポーネントおよびtrainButtonBarコンポーネントを使用して、ユーザーにそのタスク・フローで指定された手順を示すように指定できます。図は、これらのコンポーネントをレンダリングするADFタスク・フローのSummitサンプル・アプリケーションのページ・フラグメントを示しています。

図5-3 ADFトレイン・コンポーネント

5.4.8 ADF Facesリージョン・コンポーネントとの統合

バインド・タスク・フローをJSFページやページ・フラグメントに追加すると、regionタグ内で折り返されます。

5.5 ADF Controllerのプロセス・フローの概要

ADF Controllerの使用方法は、次の基本的な手順で構成されます。

1. JDeveloperで、そのアプリケーション用のアプリケーション・ワークスペースを作成します。

2. JDeveloperの「新規ギャラリ」でウィザードを使用し、タスク・フロー・ファイルを作成します。

3. JDeveloperのダイアグラム・エディタをタスク・フローに使用し、タスク・フロー・アクティビティ(ビュー・アクティビティ、メソッド・コール・アクティビティなど)と制御フロー・ケースを追加してタスク・フローを設計します。
この処理の過程で、タスク・フローで使用するページを最初から作成したり、既存のJSFページまたはページ・フラグメントをダイアグラム・エディタにドラッグ・アンド・ドロップしてタスク・フローでビュー・アクティビティを作成したりできます。

4. 統合WebLogic ServerをJDeveloper内から使用して、タスク・フローのテストを実行します。

5.6 ADF Controllerの詳細について

次のリソースで、アプリケーションでのADF Controllerの使用に関する詳細が提供されています。

- 『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』の「ADFタスク・フローの作成」

- ADF ControllerのJDeveloperチュートリアル

- タスク・フロー設計の基礎ホワイト・ペーパー

第III部 Oracle ADFビュー・テクノロジ

第III部は、次の章で構成されています。

- ADF Faces

- ADFデスクトップ統合

6 ADF Faces

この章では、ADF Facesフレームワークおよびコンポーネントの機能の概要を示します。ここでは、データの視覚化(DVT)コンポーネントを含むコンポーネント・セット、およびAjaxサポート、クライアント側のイベント、ユーザー・パーソナライズ、その他のメモリー有効範囲などの機能に関する情報について説明します。

この章の内容は次のとおりです。

- ADF Facesについて

- ADF Facesのコアな利点

- ADF Facesの主要概念

- ADF Facesの主要コンポーネント

- ADF Facesのプロセス・フローの概要

- ADF Facesに関する詳細

6.1 ADF Facesについて

ADF FacesはJSF Webコンポーネントの実装であり、高度なWebアプリケーションの開発者およびユーザーに強化機能を提供します。ADF Facesコンポーネントは、アプリケーション内でADFモデルやADF Controllerなど他のOracle ADF機能の有無にかかわらず使用できます。図6-1は、ADF Facesがエンタープライズ・アプリケーションにどのように適合しているかを示しています。

図6-1 ADF Facesの全体のアプリケーション・アーキテクチャ

6.2 ADF Facesのコアな利点

ADF Facesには、Webアプリケーション開発者に対する次の利点が用意されています。

- 機能豊富なコンポーネントの大規模なセット
ライブラリには、ジオメトリ管理レイアウト・コンポーネント、テキストおよび選択コンポーネント、ソート可能な階層データ表およびツリー、メニュー、ページ内ダイアログ、チャートやツリーマップなどのデータ視覚化コンポーネント、一般コントロールなど、150を超えるリッチ・インターネット・アプリケーション(RIA)コンポーネントが用意されています。

- 組込みAjaxサポート
多くのADF Facesコンポーネントには、ネイティブに実装されたAjaxスタイルの機能が備わっており、応答ユーザー・インタフェースの開発を簡易化します。たとえば、ADF Facesの表コンポーネントでは、表のスクロール、列ヘッダーのクリックによる表のソート、1つまたは複数の行の選択マークおよび表の特定の行の拡張を実行でき、すべてサーバーへのページ送信を必要とせずコーディングも不要です。

- 開発者がJavaScriptを記述する必要性の限定
ADF Facesは、複雑なJavaScriptの大部分をユーザーから隠します。かわりに、コンポーネントの動作は宣言的に制御します。ADF Facesを使用して、リッチで機能的、魅力的なユーザー・インタフェースを、JavaScriptの使用をまったく必要としない宣言的な方法で実装できます。

- サーバーとクライアント両方で拡張されたライフサイクル
ADF Facesは、標準JSFページのリクエスト・ライフサイクルを拡張します。この例として、クライアント側の値のライフサイクル、複数のフォームを使用する必要なしに独立して送信可能な領域をページに作成できるサブフォーム・コンポーネント、処理用に送信されるページの部分を限定できる最適化されたライフサイクルなどがあります。

- ユーザー駆動のパーソナライズ
多くのADF Facesコンポーネントで、ユーザーは実行時にコンポーネントの表示を変更できます。デフォルトでは、これらの変更はページ・リクエストの間有効です。ただし、変更がユーザーのセッションの間永続するようアプリケーションを構成できます。

- エンドユーザーのドラッグアンドドロップ
ADF Facesフレームワークでは、ユーザーは、1つのコンポーネントを別のコンポーネントにドラッグ・アンド・ドロップすることで、データを別の場所に移動できます。

- 他のOracle ADFテクノロジとの統合
ADF Facesは、ADFビジネス・コンポーネント、ADFコントローラ、ADFデータ・バインディングなどの他のOracle ADFテクノロジと組み合せて使用できます。ADFテクノロジ・スタックでのADF Facesの使用の詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のOracle ADFでのFusion Webアプリケーションの構築の概要に関する項を参照してください。

- Oracle JDeveloperとの統合された宣言的開発
JDeveloperには、ビジュアル・レイアウト・エディタ、ADF Facesコンポーネントをページにドラッグ・アンド・ドロップできる「コンポーネント」ウィンドウ、コンポーネント機能を宣言的に構成する「プロパティ」ウィンドウなどのADF Facesコンポーネントの組込み宣言的サポートが用意されています。

6.3 ADF Facesの主要概念

この項では、ADF Facesの重要事項の概要、およびそれらがADFアプリケーション内でどのように機能するかについて説明します。

ADF Facesフレームワークは、次の原理と機能に基づいています。

- JavaServer Faces (JSF)仕様に従った構造
ADF Facesでは、FaceletなどのJSF機能がサポートされます。JSF 2.0に導入された一部のJSF機能は、ADF Facesでも並行して機能します。ADF FacesとJSFの間に存在する機能の重複を理解するには、http://www.oracle.com/technetwork/developer-tools/adf/learnmore/adffaces-jsf20-190927.pdfでOTNのJavaServer Faces 2.0 Overview and Adoption Roadmap in Oracle ADF Faces and Oracle JDeveloper 11gホワイトペーパーを参照してください。

- 部分ページ・レンダリング(PPR)
ADF Facesの多くのコンポーネントには、AJAXスタイルの機能がネイティブで実装されている、部分ページ・レンダリングが備わっています。たとえば、別のコンポーネントにおけるユーザーのページへの入力に基づいてチャートを更新できます。ページをサーバーに送信したり、コーディングを行ったりする必要はありません。

- 部分ページ・ナビゲーション
ADF Facesアプリケーションは、ナビゲーションにPPRを使用できるため、ページ間をナビゲートする際にJavaScriptライブラリおよびスタイルシートを繰り返しロードする必要がなくなります。

- クライアント側の検証、変換およびメッセージング
ADF Facesバリデータは、クライアント側とサーバー側の両方で動作できます。クライアント側バリデータはJavaScriptで記述され、クライアント側で捕捉された検証エラーはサーバーとの間をラウンドトリップしなくても処理できます。

- 追加のメモリー有効範囲
ADF Facesフレームワークには、ページ・フラグメント、ADFタスク・フローなど、その他の機能を補完する追加の共有メモリー有効範囲が備わっています。

- pageFlowScope: オブジェクトは、ユーザーが特定のタスク・フロー内で、あるページから別のページへのナビゲートを続行している間は使用できます。ユーザーが新たなブラウザ・ウィンドウを開いてナビゲートを始めた場合、そのウィンドウではウィンドウ独自のpageFlowScopeスコープが指定されます。

- backingBeanScope: ページ・フラグメントと宣言コンポーネントの場合にのみ、マネージドBeanに使用します。オブジェクトは、HTTPリクエストが送信されてから、レスポンスがクライアントに返るまでの間使用できます。このスコープは、複数のページ・フラグメントと宣言コンポーネントがページにある場合があり、値の競合を避けるために別々のスコープ・インスタンスに値を保持するために必要です。

- viewScope: オブジェクトは現在のビューのIDが変更されるまで使用できます。JSF viewScopeとは異なり、ADF FacesのviewScopeに格納されるオブジェクトは、ページのリフレッシュや同じビューIDへのリダイレクト後も残ります。

- サーバー側プッシュおよびストリーミング
ADF Facesフレームワークには、ADF Facesコンポーネントのリアルタイム・データ更新を提供できるようにするサーバー側プッシュが含まれます。

- アクティブなジオメトリ管理
ADF Facesには、使用可能なスクリーン領域をどの程度利用できているかをコンポーネントが判断できるようにするクライアント側ジオメトリ管理機能が用意されています。フレームワークで、レイアウト・コンポーネントにブラウザのサイズ変更アクティビティが通知され、これによってコンポーネントで子のサイズ変更が可能になります。これによって、特定のコンポーネントを拡大または縮小し、ブラウザの使用可能な領域を満たすことができます。

- 高度なテンプレートおよび宣言コンポーネント
ページ・テンプレートやページ・フラグメント、複数のコンポーネントで構成され、アプリケーション全体で使用できるコンポジット・コンポーネントを作成できます。

- 高度な視覚化コンポーネント
ADF Facesには、動的チャート、ゲージ、および基礎となるデータをリアルタイムで表示するその他のグラフィックをレンダリングできる、データ視覚化(DVT)のコンポーネントが含まれます。図6-2は、特定の製品の現在の在庫レベル(ゲージ中央のラベル0.650Kで表示)をグラフで表すゲージ・コンポーネントを示しています。

図6-2 ADF DVTのゲージ・コンポーネント

- イベント処理
ADF Facesは標準JSFイベント処理手法に準拠し、完全なクライアント側イベント・モデルを提供します。

- ADFスキン
ADF Facesコンポーネントのルック・アンド・フィールを決定する一種のCSSファイルである、ADFスキンは宣言的に作成または変更することが可能です。Oracleは、JDeveloper内でスキンの作成および編集に使用できるエディタを提供しています。

- メッセージングおよびヘルプ
フレームワークには、ツールチップ、メッセージ、入力コンポーネントのヘルプを表示する機能、およびアプリケーションに対するグローバル・メッセージを表示する機能が用意されています。ヘルプ・フレームワークを使用すると、アプリケーション全体で再使用可能なメッセージを作成できます。Javaクラス、マネージドBean、XLIFFファイルまたは標準プロパティ・ファイルを使用して、ヘルプ・プロバイダを作成します。または、外部HTMLベースのヘルプ・システムにリンクを設定できます。

- 国際化
ローカライズ可能なテキスト・リソースの作成および保持のプロセスを簡素化するために、JDeveloperではリソース・バンドルを使用して、ビジュアル・エディタや「プロパティ」ウィンドウを使用して追加または編集できるコンポーネント・テキストが保存されます。さらに、ADFスキンでは、特定の地域でのアプリケーションのレンダリングを変更するために使用できる擬似クラスをサポートしています。また、異なるロケールを使用するようJSFページまたはアプリケーションを構成し、ユーザーのブラウザの言語設定に基づいて適切な言語を表示することもできます。

- アクセシビリティ
ADF Facesコンポーネントには、スクリーン・リーダーなどの一連のアシスティブ・テクノロジと連携するビルトイン・アクセシビリティが備わっています。ADF Facesのアクセシビリティ監査ルールにより、アクセス可能なHTMLマークアップを使用して、アクセス可能なイメージ、表、フレーム、フォーム、エラー・メッセージおよびポップアップ・ウィンドウの作成が指示されます。

ADF Facesテクノロジの使用に関する詳細なガイドは、『Oracle ADF FacesによるWebユーザー・インタフェースの開発』の「ADF Facesの概要」を参照してください。

6.4 ADF Facesの主要コンポーネント

ADF Facesコンポーネントは、次のカテゴリに分類できます。

- 一般コントロール
一般コントロールには、次のタイプのコンポーネントが含まれます。

- ナビゲーション・コンポーネント: ユーザーのあるページから次のページへの移動を可能にします。ADF Facesナビゲーション・コンポーネントには、ボタンとリンク、および異なるメニューのレベルを介してアクセスされる、より複雑な階層型のページ・フローを作成する機能が含まれます。さらに、ADFには、ユーザーがマルチステップ・プロセスをナビゲートする順序を構造化できるトレイン・コンポーネントが備わっています。

- イメージおよびアイコン・コンポーネント: アイコンからビデオにわたる複雑なイメージを表示できます。

- テキストおよび選択コンポーネント
これらのコンポーネントを使用すると、出力テキストを表示し、入力テキストを受け入れ、事前移入されたリストからのユーザーによる選択を有効にできます。これらのコンポーネントは、次のサブカテゴリに分類されています。

- 出力コンポーネント: テキストおよびグラフィックを表示し、ビデオや音楽クリップも再生できます。

- 入力コンポーネント: ユーザーによるデータの入力と、色の選択や日付の選択などのその他の情報の入力を可能にします。ADF Facesには、ユーザーが処理するデータを選択できる簡単なリストやファイル・アップロード・コンポーネントも用意されています。

- 値リスト(LOV)コンポーネント: 特定の値の検索やお気に入りとしてマークされている値の表示などの機能を含むモデルによって駆動されるリストからのユーザーによる選択を可能にします。このLOVコンポーネントは、あるオブジェクトの属性の移入に使用されるフィールドが、実際はデータベースの外部キー関係のように他のオブジェクトのリスト内に含まれる場合に有用です。

- データ・ビュー
ADF Facesには、次のような複雑なデータを表示する多数の様々な方法が用意されています。

- 表およびツリー・コンポーネント: 表または展開可能なツリー形式で構造化されたデータを表示します。ADF Facesの表には、列データのソート、データのフィルタリング、行の詳細コンテンツの表示/非表示などの機能があります。ツリーには、展開/縮小動作が組み込まれています。ツリー表は、表の機能をツリーのデータ階層機能と組み合せたものです。

- データ視覚化コンポーネント: ユーザーは、複雑なデータをリアルタイムで表示および分析できます。ADFデータ視覚化コンポーネントには、グラフ、ゲージ、ピボット・テーブル、地理マップ、ガント・チャート、階層ビューア、ツリーマップ、サンバーストタイムラインがあります。

- 問合せコンポーネント: ユーザーによるデータの問合せを可能にします。問合せコンポーネントでは、複数の検索基準、基準の動的な追加と削除、選択可能な検索演算子、すべてに一致/いずれかに一致の選択、シード済または保存済の検索、基本または拡張モードおよび検索のパーソナライズがサポートされます。

- 特殊表示コンポーネント: Calendarコンポーネントでは、アクティビティが日、週、月またはリスト表示に表示されます。ユーザーがアクティビティを作成、編集、削除できるポップアップ・コンポーネントを実装できます。カルーセル・コンポーネントを使用すると、スクロール可能な方法でイメージのコレクションを表示できます。

- メニューとツールバー
ADF Facesには、階層式のページをナビゲートするためのタブやブレッドクラムなどのアイテムをレンダリングするナビゲーション・コンポーネントが用意されています。フレームワークで、メタデータ・ファイルとともに使用し、各ページに適切な数の階層レベルを生成するためのすべての情報と、各レベルに属するナビゲーション・アイテムを含むXMLベースのメニュー・モデルが提供されます。

- レイアウト・コンポーネント
レイアウト・コンポーネントはページのレイアウトを決めるコンテナとして機能し、ADF Facesレイアウト・コンポーネントには、コンテンツを表示または非表示にできたり、セクション、リストまたは空の領域を提供するインタラクティブなコンテナ・コンポーネントも含まれます。JDeveloperにはビルトインのクイックスタート・レイアウトが用意されており、希望するページの外観に基づいて宣言的にレイアウト・コンポーネントをページに追加できます。

標準のレイアウト・コンポーネントに加えて、ADF Facesは次の特殊なレイアウト・コンポーネントも提供します。

- エクスプローラ・タイプのメニューおよびツールバー・コンテナ: メニュー・バーとツールバーを作成できます。ユーザーは、メニューやツールバーを使用して、指定されたオプションのリスト(メニューの場合)またはボタン(ツールバーの場合)を選択し、アプリケーションへ変更を加えることができます。

- セカンダリ・ウィンドウ: ポップアップ・ウィンドウまたはダイアログにデータを表示します。さらに、ADF Facesには、親ページから分離したポップアップ・ブラウザ・ウィンドウの作成、およびJavaScriptを使用しないそれらの相互作用の管理をサポートするダイアログ・フレームワークが用意されています。

- コア構造コンポーネントおよびタグ: ドキュメント、フォーム、サブフォーム、リソースなどのページおよびレイアウトを作成するために必要なタグを提供します。

- 操作タグ
これらのタグはコンポーネントと連動して、ドラッグ・アンド・ドロップ、検証、各種イベント・リスナーなどの追加機能を提供します。

6.5 ADF Facesのプロセス・フローの概要

ADF Facesビューの作成は、次の基本的な手順で構成されます。

- JDeveloperで、「新規ギャラリ」のテンプレートの1つからアプリケーション・ワークスペースを作成します。
別の方法として、アプリケーションと統合するビジネス・サービスやその他のコードが含まれる既存のアプリケーション・ワークスペースを開いて、ADF Facesコンポーネントのそのワークスペースに新規プロジェクトを追加します。

- ADF Facesプロジェクトで、ページ・フローを作成します。これらを、基本JSFページ・フローまたはADF Controllerタスク・フローのいずれかにできます。

- JavaServer Pages (JSP)またはFaceletsテンプレートのいずれかを使用してページを作成し、それらをページ・フローに挿入します。

- 「コンポーネント」ウィンドウからJSFページにADF Facesコンポーネントをドラッグ・アンド・ドロップしてページを設計し、「Properties」ウィンドウを使用してその属性を調整します。
このプロセスの一部には、コンポーネントの動作の種々の面を定義するための式言語(EL)式の作成と、その際にEL式から参照するマネージドBeanの作成が含まれる可能性があります。

- JDeveloper内から統合WebLogic Serverを使用してアプリケーションのテストを実行します。

6.6 ADF Facesの詳細について

次のリソースには、アプリケーションでのADF Facesの使用に関する詳細が記載されています。

- 『Oracle ADF FacesによるWebユーザー・インタフェースの開発』の「ADF Facesの概要」

- 『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』の「データバインドされたWebユーザー・インタフェースの作成」

- 『Oracle Fusion Middleware Oracle ADFスキンの開発』の「Webアプリケーションのスキニングについて」

- ADF Facesに関するJDeveloperチュートリアル

- Oracle ADF Facesタグ・リファレンス

- Oracle ADF Facesデータ視覚化ツール・タグ・リファレンス

- Oracle Technology Network上のOracle ADF Facesのページ: http://www.oracle.com/technetwork/developer-tools/adf/overview/index-092391.html

- OTN (http://www.oracle.com/technetwork/developer-tools/adf/learnmore/adffaces-jsf20-190927.pdf)のJavaServer Faces 2.0 Overview and Adoption Roadmap in Oracle ADF Faces and Oracle JDeveloper 11gホワイトペーパー

7 ADFデスクトップ統合

この章では、Microsoft Excelワークブックを使用してFusion Webアプリケーションを統合できる、ADFデスクトップ統合のテクノロジについて概説します。

この章の内容は次のとおりです。

- ADFデスクトップ統合について

- ADFデスクトップ統合のコアな利点

- ADFデスクトップ統合の主要な概念

- ADFデスクトップ統合の主要なコンポーネント

- ADFデスクトップ統合のプロセス・フローの概要

- ADFデスクトップ統合に関する詳細

7.1 ADFデスクトップ統合について

ADFデスクトップ統合には、Oracle ADF開発者が、Fusion Webアプリケーションによって提供される機能をMicrosoft Excelワークブックの形式でデスクトップ・アプリケーションに拡張するためのフレームワークが備わっています。

図7-1に示すように、ADFデスクトップ統合は、ADFモデル、ADFビジネス・コンポーネントなど、ADFテクノロジ・スタックの他の部分とともに使用できます。

図7-1 ADFデスクトップ統合のADFアーキテクチャ

7.2 ADFデスクトップ統合のコアな利点

ADFデスクトップ統合のコアな利点は、次のとおりです。

- Oracle ADFベースのアプリケーションをオフラインにして作業できます。

- 多くのユーザーが使い慣れているMicrosoft Excelのユーザー・インタフェース内で作業できます。

- 大容量のデータのエントリや更新が、スプレッドシート・スタイルのインタフェースから簡単に行えます。

- マクロ、計算、検証、スタイルなどのネイティブなExcel機能を使用できます。

7.3 ADFデスクトップ統合の主要な概念

この項では、ADFデスクトップ統合の主要概念について概説します。

7.3.1 Microsoft Excelとの統合

ADFデスクトップ統合コンポーネントを使用すると、エンド・ユーザーは統合されたExcelワークブックのFusion Webアプリケーションから取得されたデータを管理できます。ADFコンポーネントおよびそれらをホストするワークシートを構成して、エンド・ユーザーがワークシートのデータに加えた変更をFusion Webアプリケーションにアップロードできるようにします。

ワークシートをADFデスクトップ統合コンポーネントとともに使用すると、次のような標準Excel機能を活用できます。

- 検証。Excelのデータ検証機能を使用して、エンド・ユーザーがセルに入力したデータの型や値を制御できます。これらの機能によって、データ・エントリを一定の日付範囲に制限したり、リストを使用して選択内容を限定したり、正の整数のみをセルに入力したりすることができます。

- スタイル。アプリケーションのデータの外観を構成するには、ADFデスクトップ統合により提供された一部の事前定義済スタイルを含めて、Excelのスタイルを使用して機能の書式設定を行います。また、EL式を使用して、スタイルを動的に適用することも可能です。

- 計算式および計算済セル。統合Excelワークブックで値の計算を実行するExcel式を記述できます。計算式は、Oracle ADFバインディングを参照するセルと参照しないセルの両方に入力できます。
また、EL式を使用して、ADFコンポーネントの値としてExcel式を生成できます。

- マクロ。統合ExcelワークブックのExcelイベントに基づいて、マクロを定義して実行できます。

7.3.2 ADFページ定義ファイルとの統合

ADFデスクトップ統合コンポーネントは、Fusion Webアプリケーションのページ定義ファイルにリンクされています。ページ定義ファイルは、実行時にOracle ADFコンポーネントにデータを移入するバインディングを定義します。また、このデータに使用する操作やアクションを定義するアクション・バインディングおよびメソッド・アクション・バインディングも参照します。ページ定義ファイルは、Fusion Webアプリケーションと統合するExcelワークシートごとに個別に定義する必要があります。統合Excelワークブックには、ページ定義ファイルを参照しないワークシートを含めることができます。

ページ定義ファイルとのリンクにより、統合されたワークシートはバインディング・レイヤーに設定したどの検証からも利点を受けることもできます。エンド・ユーザーがADFデスクトップ統合コンポーネントの1つに入力または編集したデータ(ADF表コンポーネントなど)は、Fusion Webアプリケーションのサーバー側で設定されたルールおよび条件に対して検証できます。

7.3.3 Fusion Webアプリケーションとの実行時の同期

ADFデスクトップ統合で統合されたワークブックは、ADF Fusion Webアプリケーションのコンテキスト内で拡張および実行されます。ADFデスクトップ統合で統合されたワークブックはオフラインで使用できますが、データの同期と一部のユーザー・インタフェースの相互作用には、ある時点でベースとなるWebアプリケーションとの間に有効なユーザー・セッションが確立されている必要があります。ADFデスクトップ統合は、Webアプリケーションが認証を実施するように構成されているかいないかにかかわらず、ADF Fusion Webアプリケーションとのすべての相互作用について、HTTP Cookieベースのセッション管理に依存しています。

ADFデスクトップ統合が有効になっているFusion WebアプリケーションをJDeveloperからデプロイする際は、ADFデスクトップ統合の共有ライブラリへの参照が適切なディスクリプタ・ファイルに追加されます。ADFデスクトップ統合のモデルAPIライブラリまたはADFデスクトップ統合ランタイム・ライブラリを参照する1つ以上のプロジェクトを含むすべてのFusion Webアプリケーションについて、プラットフォームに依存するADFデスクトップ統合モデルAPIの共有ライブラリへの参照がデプロイメント中に追加されます。

ADFデスクトップ統合ランタイム・ライブラリへの参照を含むすべてのWebアプリケーション・モジュール(WAR)プロジェクトの場合は、プラットフォームに依存しないADFデスクトップ統合ランタイム共有ライブラリへの参照がデプロイメント中に追加されます。

ADFデスクトップ統合フレームワークは、Microsoft .NETで実行するクライアント側部分と2つのサーバー・コンポーネント(ADFデスクトップ統合リモート・サーブレットおよびADFデスクトップ統合ダウンロード・フィルタ)で構成されています。サーバー・コンポーネントは、ADF Fusion Webアプリケーションのコンテキスト内で実行されます。クライアント・コンポーネントはビューおよびコントローラとして機能し、データを同期してWebアプリケーションのモデル・プロジェクトでビジネス・ロジックを実行する際に、サーブレットと通信します。クライアントとサーバーの間の通信はHTTPリクエストと応答という形を取ります。

7.3.4 統合Excelワークブックのセキュリティ

統合ExcelワークブックがFusion Webアプリケーションに接続されると、統合ワークブックではデータのダウンロードの前に有効な認証済のユーザー・セッションが確立されていることが必ず確認されます。認証を実施していないFusion Webアプリケーションを使用する場合でも、統合ExcelワークブックではFusion Webアプリケーションに接続されると、有効なユーザー・セッションが検証され作成されます。

対応するFusion WebアプリケーションでADFセキュリティが有効化されている場合、ADFデスクトップ統合では統合ワークブックに対応するページ定義に設定されたセキュリティ・ポリシーが実施されます。実行時、ページ定義(バインディング・コンテナ)に対する適切な権限のないエンド・ユーザーは、関連する統合Excelワークシートとの対話が禁止されます。認可されていないバインディング・コンテナを使用した対話の試行(データのダウンロード、送信など)は中断され、エンド・ユーザーには認可エラーが通知され、ワークシート上のすべてのADFデスクトップ統合アクティビティは無効になります。新しいユーザー・セッションが確立されるまで、ADFデスクトップ統合が無効になっているワークシートとこれ以上の対話を行うことはできません。エンド・ユーザーが統合Excelワークシートと対話できるようにするには、ページ定義へのアクセスを許可されたロールをエンド・ユーザーに割り当てます。

Fusion Webアプリケーションからダウンロードしたデータを含むExcelワークブックを、他のユーザーがそのExcelワークブックにアクセスできるネットワーク・ディレクトリなどの場所に保存する場合、他のユーザーはExcelワークブックに保存されているデータにアクセスできます。

ワークブックにパスワードを設定するExcelの機能を使用して、統合Excelワークブックのセキュリティを強化できます。これにより、許可されていないユーザーは、ワークブックを開いたり変更することができなくなります。Excelのセキュリティ機能の詳細は、Excelのドキュメントを参照してください。

7.4 ADFデスクトップ統合の主要なコンポーネント

ADFデスクトップ統合の機能は、この項で概説するMicrosoft ExcelへのAdd-In機能で構成されています。

7.4.1 表タイプ・コンポーネント

ADFデスクトップ統合には表と読取り専用の表コンポーネントが備わっており、それを使用するとデータベース表全体などの大型の構造化情報を表示して編集できます。これらのコンポーネントは、同じ名前が付けられているが、Excelワークブック環境に固有のプロパティを備えたADF Facesコンポーネントに似ています。これらのコンポーネントには、関連付けられたFusion Webアプリケーションに対するダウンロードやアップロードなどを実行できる、関連付けられたアクションも備わっています。

ワークシートにADF表コンポーネントを追加した後は、ADF表コンポーネントがFusion Webアプリケーションからデータをダウンロードするように、コンポーネントおよびそれをホストするワークシートを構成できます。これを実行するには、ADFボタンやワークシート・リボン・ボタン、ワークシート・イベントなどのOracle ADFコンポーネントを構成して、アクション・セットを起動します。起動されるアクション・セットには、起動されるアクションの中からADF表コンポーネントDownloadアクションを含める必要があります。

7.4.2 フォームタイプ・コンポーネント

ADFデスクトップ統合には、入力テキスト・フィールド、出力テキスト・フィールド、ラベル、ボタン、および値リスト用(LOV)の基本UIコンポーネントが用意されており、それを使用してデータを表示して入力するフォームを作成できます。これらのコンポーネントは、同じ名前が付けられているが、Excelワークブック環境に固有のプロパティを備えたADF Facesコンポーネントに似ています。

ユーザーがそれらの変更をFusion Webアプリケーションに戻して実行できるようにするには、変更内容をWebアプリケーションに戻すための転送およびデータ・ソースでの実行を処理するアクション・セットを起動するように、ADFコンポーネントを構成します。

7.4.3 アクション・セット

起動できる複数のアクションをワークブック内の単一のユーザー・ジェスチャとつなぎ合せることができるようにするために、ADFデスクトップ統合にはaction setsが用意されています。アクション・セットとは、特定の順序で実行される1つまたは複数のアクションからなる、順序付けされたリストです。アクション・セットをワークシート内のUI要素、またはStartupやShutdownなどのワークシート・イベントと関連付けることができます。

次のタイプのアクションを使用できます。

- ADFmAction: 基礎となるページ定義ファイルのアクション・バインディングまたはメソッド・アクション・バインディング。

- ComponentAction: ワークシートのコンポーネントが公開するアクション。ADFデスクトップ統合のコンポーネントの中では、ADF表コンポーネントおよびADF読取り専用表コンポーネントのみがアクションを公開します。

- WorksheetMethod: ワークシート内のデータおよびFusion Webアプリケーション内のデータ間のコーディネーションを処理するADFデスクトップ統合により提供されるアクション。使用できるアクションは、UpSync、DownSyncおよびDisplayWorksheetErrorsです。

- Confirmation: 確認のダイアログを起動します。

- Dialog: ポップアップ・ダイアログまたはExcelの作業ウィンドウでWebページを起動します。

7.5 ADFデスクトップ統合のプロセス・フローの概要

ADFデスクトップ統合を使用した開発は、次の手順で構成されます。

1. Microsoft Windowsのシステム上で、Internet Explorerがインストールされており、Microsoft ExcelおよびJDeveloperがインストールされていることを確認します。

2. VBAプロジェクトのオブジェクト・モデルへのアクセスを信頼するようにMicrosoft Excelインストールを構成し、ADFデスクトップ統合からプロジェクトのオブジェクト・モデルにアクセスできるようにします。

3. JDeveloperで、ADFデスクトップ統合Add-Inをインストールします。
ADFデスクトップ統合のアドインには、デザイナ・エディションとランタイム・エディションの2つがあります。統合Excelワークブックを作成してテストするにはデザイナ・エディションを、エンド・ユーザーがADFデスクトップ統合および統合Excelワークブックを使用できるようにするにはランタイム・エディションをそれぞれ使用します。ただし、同じシステムに両方のエディションのADFデスクトップ統合をインストールしないでください。

4. Fusion Webアプリケーションを作成します。

5. アプリケーションのモデル・プロジェクトで、Microsoft Excelで必要な要素を公開するデータ・コントロールを追加します。

6. アプリケーションのユーザー・インタフェース・プロジェクトで、Oracle ADFバインディングで公開してExcelで使用するページ定義ファイルを作成します。

7. Oracle ADF機能で構成するExcelワークブックを作成します。

8. ページ定義ファイルで公開したOracle ADFバインディングと、ADFデスクトップ統合で提供されるOracle ADFコンポーネントを使用して、Excelワークブックを構成します。

9. Fusion Webアプリケーションに統合Excelワークブックがパッケージ化されていない場合には、JDeveloperプロジェクトに追加します。こうすることで、最終のFusion Webアプリケーションをデプロイする際に、Fusion Webアプリケーションと統合するExcelワークブックが確実にデプロイされます。

10. 完了したワークブックを公開して、アプリケーションがデプロイされたときにユーザーが使用できるようにします。

11. Fusion Webアプリケーションに1つまたは複数のWebページを構成して、エンド・ユーザーが統合Excelワークブックにアクセスできるようにします。

12. 統合ワークブックが含まれているFusion Webアプリケーションをデプロイします。

13. 開発者が統合Excelワークブックで構成した機能を使用するエンド・ユーザーが、確実にADFデスクトップ統合のランタイム・エディションをインストールする必要があります。

7.6 ADFデスクトップ統合の詳細について

ADFデスクトップ統合の詳細は、次のリソースを参照してください。

- 『Oracle ADFデスクトップ統合によるアプリケーションの開発』の「ADFデスクトップ統合の概要」

- OTNのADFデスクトップ統合ページ: http://www.oracle.com/technetwork/developer-tools/adf/overview/index-085534.html

第IV部 Oracle ADFセキュリティ、カスタマイズ、およびデプロイメント

第4部の章の内容は次のとおりです。

- ADFセキュリティ・フレームワーク

- Oracle Metadata Services

- Oracle ADF機能が備わったアプリケーションのデプロイメント

8 ADFセキュリティ・フレームワーク

この章では、Oracle Platform Security Services (OPSS)アーキテクチャとの統合、宣言的リソース権限によるADFアプリケーションの保護など、ADFセキュリティ・フレームワークについて概説します。

この章の内容は次のとおりです。

- ADFセキュリティ・フレームワークについて

- ADFセキュリティのコアな利点

- ADFセキュリティの主要概念

- ADFセキュリティの主要コンポーネント

- ADFセキュリティのプロセス・フローの概要

- ADFセキュリティに関する詳細

8.1 ADFセキュリティ・フレームワークについて

アプリケーション・セキュリティ全体での確認プロセスを簡易化するために、Oracle Application Development Framework (Oracle ADF)にはADFセキュリティのフレームワークが用意されています。ADFセキュリティはOracle Platform Security Services (OPSS)アーキテクチャ上に構築され、OPSSアーキテクチャにはJava Authentication and Authorization Service (JAAS)およびJava EEコンテナ管理のセキュリティが組み込まれます。

図8-1に示すように、ADFセキュリティには、ADF Faces、ADF Controller、ADFモデル、ADFビジネス・コンポーネントなど、ADFテクノロジ・スタック内のその他の一連のコンポーネントが含まれます。

図8-1 ADFセキュリティのADFアーキテクチャ

OPSSは基礎となるプラットフォームであり、Oracle Fusion Middleware (WebLogic ServerやOracle ADFアプリケーションなど)に対してセキュリティを提供します。OPSSは、サード・パーティのアプリケーション・サーバーに移植できるように設計されているので、OPSSを使用すれば1つのセキュリティ・フレームワークでOracle環境とサード・パーティ環境の両方に対応できます。これにより、アプリケーションの開発、管理およびメンテナンスに要する費用を削減できます。

図8-2は概念上、ADFセキュリティのフレームワークのアーキテクチャを説明しています。最上位レイヤーは実行中のADFアプリケーションで構成されています。その下には、OPSS APIを実装し、アプリケーションからリソースの権限チェックをプログラム上で実行できるADFセキュリティ・レイヤーがあります。OPSS APIレイヤーは、認証、認可、資格証明ストア・フレームワーク・サービスのプロバイダにアクセスするための抽象化レイヤーとして機能します。

図8-2 ADFセキュリティ・アーキテクチャ

8.2 ADFセキュリティのコアな利点

ADFセキュリティには次のコアな利点が用意されています。

- ADFのセキュリティ意識の高いリソースに対する宣言的で承認ベースの保護。これには、ADFバインド・タスク・フロー、ADFバインディングを使用するトップレベルのWebページ、ADFエンティティ・オブジェクトおよびそれらの属性で定義された属性などがあります。

- 動的ユーザー認証。ADFセキュリティを使用する場合、まだ認証されていないユーザーがanonymous-roleロールを付与されていないページにアクセスしようとすると、ユーザーにはログインのプロンプトが動的に表示されます。アプリケーションのweb.xmlファイルで、セキュリティ制約がADF認証サーブレットに適用されるため、保護されたリソースにアクセスできるようになる前に、Java EE Webコンテナを介してログインがトリガーされます。ユーザーが正常にログインした後、そのユーザーがリクエストしたページの表示アクセス権を付与されているかどうかを確認するために、ADF認証サーブレットが起動します。

- Webページ内での権限チェック。実行時には、ADFリソースに対して定義したセキュリティ・ポリシーが標準のJAAS権限認証を使用して施行され、ユーザーのアクセス権が決定されます。アプリケーションで必要とされる場合、式言語(EL)を使用してWebページ内でランタイム権限チェックを実行し、ユーザーに対して表示する必要がないコンポーネントを非表示にできます。

- アプリケーションと各種セキュリティ・プロバイダの間に抽象化レイヤーを用意することで、アプリケーションの保護を簡易化します。アプリケーションから保護レイヤーへのコールは、標準ベースのAPIを介して実行できるため、開発者がセキュリティ・プロバイダの実装の詳細を処理する必要はありません。

8.3 ADFセキュリティの主要概念

ADFセキュリティ・フレームワークは、OPSSと、JDeveloperにより追加されるデザインタイムの機能(保護アプリケーションの作成を容易にする)とのランタイム統合で構成されています。この項では、組み込まれているOPSS機能やその他のADF固有の機能なども含めて、ADFセキュリティの主要な面について概説します。

8.3.1 認証と認可

認証は、ユーザーの資格証明をログイン画面を通して実行するような、検証プロセスです。ADFセキュリティには認証サーブレットが用意されているため、(OPSSにより)認証をJava EE Webコンテナに委任し、ユーザーに対してログインのプロンプト画面を動的に表示できます。

認可は、認証されたユーザーのアクセス権と許可を判断するプロセスです。ADFセキュリティ(OPSSによる)では、きめの細かい権限ベースの認可モデルが提供され、リソース(ADFタスク・フローなど)をJAASベースのcheckPermissionコールにより保護します。OPSSを使用すると、さらにきめの粗い認可モデルを提供している、Java EEのコンテナ管理セキュリティも使用できるようになります。

8.3.2 アプリケーション・ロール

個々のユーザーにアクセス権を付与するかわりに、ユーザーをアプリケーション・ロールにグループ化し、そのロールに権限を付与します。

8.3.3 セキュリティ・ポリシー

ユーザー(またはロール)のアクセス権限を特定のリソースに付与します。セキュリティ・ポリシーとは、特定のリソースに付与するアクセス権です。タスク・フローの入力やWebページの表示を行うユーザー権限を制御するのは、最終的にはADFリソースにおけるセキュリティ・ポリシーになります。

管理を簡単にするために、セキュリティ・グループ内の複数のリソースを集約する権限を作成することも可能です。これにより、複数のリソースに対するセキュリティ・ポリシーを1か所で設定できるようになります。

8.3.4 ADFリソースにおけるセキュリティの認識

ADFセキュリティ・フレームワークに備わっている権限クラスにより、ADFリソースを保護できます。そのような権限クラスが存在するリソースをセキュリティ認識リソースと言います。ADFセキュリティ認識リソースに関連付けられたWebページは、そのリソースにアクセス権を付与するセキュリティ・ポリシーを明示的に設定したる場合を除いて、デフォルトで保護されます。

ADFセキュリティ認識リソースのリストの種類は、「ADFセキュリティ認識リソース」を参照してください。

8.4 ADFセキュリティの主要コンポーネント

この項では、ADFセキュリティ・フレームワークの中核をなす機能と物理的アーティファクトについて概説します。

8.4.1 OPSSとのデザインタイム統合

あるアプリケーション向けの、OPSSとのデザインタイム統合は、複数のメタデータ・ファイルにより宣言的に構成されます。この構成は、JDeveloperのセキュリティ・ウィザードとビジュアル・エディタを使用すると自動的に行われます。影響を受ける主要なファイルは、次のとおりです。

- ユーザー・インタフェース・プロジェクトのweb.xmlファイル。次の事項を指定します。

- JpsFilter。これにより、OPSSポリシー・プロバイダを設定します。

- oracle.adf.share.security.authentication.AuthenticationServletサーブレットに対するWebリソース、およびユーザーがアプリケーションに最初にアクセスしてログインし、ユーザー認証を動的にトリガーするために適切なセキュリティ制約を設定する際に必要なマッピング。

- ログインの構成に対する認証メソッド。

- valid-usersロールなど、必須セキュリティ・ロール。動的認証を有効化するセキュリティ制約をトリガーするために使用されます。

- アプリケーション・ワークスペースのadf-config.xmlファイル。このファイルでは、JAASセキュリティ・コンテキストが設定され、ADFセキュリティのセキュリティ・ポリシーの使用が有効化されています。

- アプリケーション・ワークスペースのjps-config.xmlファイル。このファイルには、OPSSセキュリティ・プラットフォームの構成がデザインタイムに保持されます。(このファイルはアプリケーションEARファイルの一部としてデプロイできますが、ランタイムには使用されません。そのかわり、サーバー・インスタンスのドメインに保存されたファイルのバージョンが使用されます。)

- アプリケーションのjazn-data.xmlファイル。これは、デザインタイムにアプリケーションのアイデンティティおよびポリシー・ストアとして機能します。アプリケーションをOracle WebLogic Serverにデプロイすると、デフォルトで、サーバーはjazn-data.xml内のユーザーとグループをサーバーのアイデンティティ・ストアにコピーし、ポリシーをサーバーのポリシー・ストア(統合WebLogic Serverにあるsystem-jazn-data.xml)にマージします。
本番サーバーにデプロイする前に、jazn-data.xmlファイルに作成するすべてのユーザーとグループを削除して、悪意のあるユーザーがそれらの資格証明を使用してアプリケーションへのアクセス権限を取得するリスクを避けます。

- アプリケーションのweblogic.xmlファイル。このファイルでは、valid-usersセキュリティ・ロールがusers(すべてのユーザーに対するWebLogic Serverの暗黙的なロール)にマップされています。
図8-3は、JDeveloperで作成および構成されるセキュリティ・アーティファクトと、それらをOracle WebLogic Serverのランタイム・セキュリティ・アーキテクチャへマップする方法を示しています。

図8-3 ADFセキュリティの構成とデプロイメント

8.4.2 ADFセキュリティ認識リソース

ADFアプリケーション内の次のタイプのリソースは、セキュリティ認識タイプであるため、個々のセキュリティ・ポリシーを使用して構成されます。

- ADFバインド・タスク・フローセキュリティ・ポリシーを設定して、バインド・タスク・フローのエントリ・ポイントを保護し、それによりそのフローに含まれるページへのユーザーのアクセスが制御されます。セキュリティ・ポリシーをすべてのバインド・タスク・フローに設定するようお薦めします。
バインド・タスク・フローによって追加されるページに直接アクセスできないようにするために、それらに関連付けられたページ定義ファイルを介して追加されたページにアクセス権限を付与しないでください。バインド・タスク・フローのコンテキスト内でページに追加のセキュリティが必要な場合は、それらのページをサブタスク・フローに含めて、このネストされたタスク・フローに対する権限の定義を追加します。

- ADFページ定義ファイル。Webページにバインディングを追加し、個々のページにマップします。ページ定義ファイルのページがバインド・タスク・フローに含まれていない場合、ページ定義ファイルにセキュリティ・ポリシーを設定する必要があります。対応するページ定義ファイルが含まれないページを保護する場合には、そのページに空のページ定義ファイルを作成できます。

- ADFビジネス・コンポーネント・エンティティ・オブジェクトとエンティティ・オブジェクトの属性。それらのエンティティ・オブジェクトは、データの行を参照し、ユーザー・インタフェースの表示のコレクションを定義できます。エンティティ・オブジェクトがそのデータ・ソース上で開始する、読取り、更新および削除の操作に権限を設定できます。
エンティティ・オブジェクトに対して認可を有効化すると、そのエンティティ・オブジェクトで定義されたすべての行が権限により保護されます。このレベルの粒度では、表コンポーネントがWebページにレンダリングされるとき、ユーザーのアクセス権に応じて、すべてのデータが表示されるかデータがまったく表示されないかのどちらかになります。コレクション全体を保護するかわりに、個々の属性ごとにセキュリティ・ポリシーを提供できます。

8.4.3 ADF認証サーブレット

ADFセキュリティの認可を有効化すると、そのアプリケーションとユーザーの相互作用はすべて、oracle.adf.share.security.authentication.AuthenticationServletサーブレットで仲介されます。このサーブレットでは、アプリケーションのいずれかの保護されたリソースにアクセスできるようにするには、ユーザーが正常にログインしている必要があります。それは、ユーザー・インタフェース・プロジェクトのweb.xmlファイルでリソースとして指定され、フィルタ・マッピングとセキュリティ制約タグによって参照されています。

8.4.4 ADFセキュリティ・コンテキスト

認証されたユーザーに関する情報は、Javaコード、Groovy式、またはELを介したユーザー・インタフェース・コンポーネントを使用して、ADFセキュリティ・コンテキストへのコールによりアクセスできます。ユーザーが認証されているかどうか、特定のリソースへの権限を付与されているかどうかなどを判断できます。次にこの情報を使用して、どのコンテンツとコントロールをそのユーザーに表示するかを判断できます。セキュリティ・コンテキストは、JavaでSecurityContextオブジェクト、ELでsecurityContextネームスペース、およびGroovyでSecurityContextオブジェクトによって表されます。

8.5 ADFセキュリティのプロセス・フローの概要

ADFセキュリティのフレームワークの使用方法は、次の基本的な手順で構成されます。

1. JDeveloperで、「ADFセキュリティの構成」ウィザードを実行して、アプリケーションのセキュリティを構成します。この手順により、セキュリティ・モデルの設定、Webプロジェクトの認証タイプの構成、test-allロールに対する表示アクセスの付与、正常に認証されたユーザーに対するようこそページの設定が可能になります。
このウィザードを開発サイクルの早い時期に実行して、繰り返しセキュリティをテストし、最善のセキュリティを取り入れる設計上の決定を実践できるようにすることをお薦めします。

2. 1つまたは複数のアプリケーション・ロールを作成します。
作成するアプリケーション・ロールはアプリケーションに固有であり、これを使用すると、同じレベルのアクセス権を一連のユーザー(またはメンバー・ユーザー)に付与できます。テスト・フェーズではユーザーをいくつか作成し、作成したアプリケーション・ロールのメンバーとして追加します。

3. セキュリティ・ポリシーを設定して任意のADFセキュリティ認識リソース(バインド・タスク・フローなど)を、1つまたは複数のアプリケーション・ロール(作成済のロールで、アクセス権限を設定してある)に関連付けます。

4. 各種のロールにテスト・ユーザーを作成します。

5. JDeveloperでアプリケーションを実行し、作成したテスト・ユーザーを使用して様々なリソースへのアクセスをテストします。

6. アプリケーションをデプロイする前に、アプリケーションをテストするために追加したポリシー付与とユーザーを削除します。

7. 完成したポリシー・ストアと資格証明ストアをターゲット・サーバーに移行します。アプリケーションがOracle WebLogic Serverにデプロイされると、アプリケーションのポリシーと資格証明が自動的にドメイン・ストアに移行されます。

8.6 ADFセキュリティの詳細について

ADFセキュリティ・フレームワークとOPSSの使用の詳細は、次を参照してください。

- 『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』の「Fusion WebアプリケーションでのADFセキュリティの有効化」

次のリソースでは、OPSSについて詳しく説明します。

- 『Oracle Fusion Middleware Oracle WebLogic Serverセキュリティの理解』の「概要とロードマップ」

- 『Oracle Fusion Middleware Oracle WebLogic Serverセキュティの管理』の「概要とロードマップ」

- 『Oracle Fusion Middleware Oracle WebLogic Serverロールおよびポリシーによるリソースの保護』の「概要とロードマップ」

- OTNのOracle Platform Security Servicesのページ: http://www.oracle.com/technetwork/middleware/id-mgmt/index-100381.html

9 Oracle Metadata Services

この章では、Oracle Metadata Services (MDS)フレームワークをシード・カスタマイズで使用して、ADFアプリケーションで永続性を変更する方法について概説します。

この章の内容は次のとおりです。

- Oracle Metadata Services (MDS)について

- MDSのコアな利点

- MDSの主要概念

- MDSの主要コンポーネント

- MDSプロセス・フローの概要

- MDSに関する詳細

9.1 Oracle Metadata Services (MDS)について

Oracle Metadata Services (MDS)フレームワークを使用すると、顧客が自社のユーザーや顧客に対してさらにカスタマイズでき、エンドユーザーもカスタマイズできるアプリケーションを作成できます。

図9-1に示すように、MDSは、ADF Faces、ADF Controller、ADFモデル、ADFビジネス・コンポーネントなど、ADFテクノロジ・スタック内のその他の一連のコンポーネントに適用できます。

図9-1 Metadata Servicesに関するADFアーキテクチャ

MDSを使用して、次のタイプのカスタマイズをアプリケーションで有効化できます。

- シード・カスタマイズ
アプリケーションのシード・カスタマイズとは、汎用化されたアプリケーションを特定のグループ(特定の産業やサイトなど)のニーズにあわせて変更するプロセスです。シード・カスタマイズはデプロイされたアプリケーションの一部として存在し、特定のデプロイ期間中保持されます。

- ユーザー・カスタマイズ(変更永続性)
ユーザー・カスタマイズを使用すると、エンド・ユーザーは実行時に個々のプリファレンス(表にどの列を表示するかなど)に合せてアプリケーションのコンテンツを変更して、その変更内容をそのユーザーのセッション間で一貫させることができます。

9.2 MDSのコアな利点

MDSのアーキテクチャと機能には、次の利点があります。

- 顧客の要望に合せてさらにカスタマイズできる、実用的なアプリケーションを顧客に提供できます。

- 単一のアプリケーションに、様々なユーザーやユーザー・セグメントを対象にした各種のカスタマイズを設置できます。

- アプリケーションへのパッチ適用や更新の際に、カスタマイズを変更または削除する必要がありません。

9.3 MDSの主要概念

MDSを理解するための中心となる概念は、次のとおりです。

- カスタマイズ・レイヤーおよびカスタマイズ値。
図9-2に示すように、カスタマイズされたアプリケーションはベース・アプリケーション(ベース・ドキュメント)と、カスタマイズを備えた1つまたは複数のレイヤーで構成されます。各レイヤーには複数のカスタマイズ・レイヤー値を設定できますが、通常、実行時には、そのうちの1つのレイヤー値のみが適用されます。カスタマイズ済アプリケーションが起動されると、カスタマイズの内容がベース・アプリケーションに適用されます。

図う9-2 ベース・アプリケーションおよびカスタマイズ・レイヤー

カスタマイズ・レイヤーには、業種やサイトなどがあります。industryレイヤーに対応するサンプル値は、financialおよびhealthcareです。

カスタマイズはベースから個別に保存されているので、カスタマイズは安全にアップグレードでき、ベースへの新しいパッチはカスタマイズを分割せずに適用できます。

- 静的カスタマイズおよび動的カスタマイズ。
カスタマイズは、静的なものと動的なものに分類できます。静的カスタマイズにはアプリケーションの実行すべてに有効なレイヤー値が1つのみ設定されており、動的カスタマイズにはアプリケーションの実行コンテキスト(ユーザーなどの)に応じて変化する値が設定されています。

ADFビジネス・コンポーネント・オブジェクトおよびその他のビジネス・サービス用データ・コントロール・オブジェクトのカスタマイズは、静的カスタマイズのみに設定されています。これらのオブジェクトはアプリケーションに対して1回だけロードされ、アプリケーションの継続中再利用されるためです。

コントローラ・レベルまたはビュー・レベルのカスタマイズは、ユーザー・ロール(職責)またはその他のアプリケーション固有の基準に基づいて、実行時にレイヤー値を決定できるため、静的にも動的にも設定できます。たとえば、組織が異なるユーザーには画面上で異なるフィールドを表示するように、アプリケーションを設計できます。

- カスタマイズ開発者ロール
JDeveloperにはカスタマイズ開発者に特別の開発ロールが用意されているため、アプリケーションのカスタマイズ・レイヤーでの作業はベース・アプリケーション・コードから独立しています。「JDeveloper」ロールを「カスタマイズ開発者」ロールに切り替えると、アプリケーションのカスタマイズ可能な部分のみが編集できるようになり、新規オブジェクトは作成できません。

- 変更永続性
ADF Facesには変更永続性の機能が組み込まれており、ユーザーは表内で表示する列の選択などUIコンポーネントに変更を加え、その変更内容をセッションがアクティブの間、永続させることができます。MDSを使用すると、変更永続機能をセッション全体で機能するように拡張できるため、あるUIが含まれるアプリケーションを特定の状態で終了した後、そのアプリケーションを再起動したときに、以前の状態でUIを表示させることができます。

9.4 MDSの主要コンポーネント

MDSの主要コンポーネントは、次のとおりです。

- MDSメタデータ・リポジトリ。
MDSは、カスタマイズをメタデータ・リポジトリに格納し、実行時にこのカスタマイズを取得してベース・メタデータにマージし、カスタマイズ済アプリケーションを公開します。

MDSリポジトリはファイル・ベースまたはデータベース・ベースのいずれかです。本番環境には、データベース・ベースMDSリポジトリをお薦めします。これには、効率的な設定ベースの問合せ、原子性トランザクション・セマンティック、バージョニング、および実行環境で選択したユーザーへのメタデータ変更を分離してテストする機能などの利点があります。メタデータ・リポジトリ設定の詳細は、『Oracle Fusion Middlewareの管理』の「メタデータ・リポジトリの管理」を参照してください。

- カスタマイズ・クラス。
カスタマイズ・クラスとは、ベース定義メタデータに適用するカスタマイズを定義するためにMDSが使用するインタフェースです。各カスタマイズ・クラスでカスタマイズ・レイヤー(industryやsiteなど)を定義して、複数のレイヤー値を含めることができます。

- メタデータ・アーカイブ(MAR)。
MARファイルは、選択したメタデータの圧縮済アーカイブで、アプリケーションのカスタマイズをMDSリポジトリにデプロイする際に使用します。

9.5 MDSプロセス・フローの概要

アプリケーションでMDS使用する一般的な手順は、次のとおりです。

1. デザイン・タイムにJDeveloperで使用し、アプリケーションで使用可能にするカスタマイズ・クラスを作成します。

2. 任意のページに対するシード・カスタマイズまたはカスタマイズ可能にするその他のアーティファクトを有効化します。

3. adf-config.xmlファイルでカスタマイズ・クラスを指定します。

4. オプションで、アプリケーションのランタイム・カスタマイズに制限を設定します。

5. オプションで、エンドユーザーのカスタマイズを有効化し、カスタマイズできるコンポーネントやそのプロパティを指定します。さらに、ページ固有のカスタマイズの構成を設定し、子コンポーネントの並替えなどに対応するプログラム上のカスタマイズを実装できます。

6. カスタマイズ・レイヤーとその値をCustomizationLayerValues.xmlファイルで指定します(レイヤー値を決定し、カスタマイズ開発者が「カスタマイズ・コンテキスト」ウィンドウで使用できるようにします)。

7. JDeveloperで、Studio開発者ロールまたはカスタマイズ開発者ロールを使用して、追加するシード・カスタマイズを実装します。

8. カスタマイズ可能なアプリケーションをデプロイするサーバーで、MDSリポジトリを構成していない場合には、構成します。

9. MARファイル内のカスタマイズをパッケージ化し、そのMARをアプリケーション・サーバーにデプロイするアプリケーションのEARファイルの一部として追加します。

9.6 MDSの詳細について

次のリソースには、MDSの使用に関する詳細が記載されています。

- 『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』の「MDSによるアプリケーションのカスタマイズ」

- 『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』の「実行時のユーザー・カスタマイズの許可」

- 『Oracle ADF FacesによるWebユーザー・インタフェースの開発』のJSFページでのユーザー・カスタマイズの許可に関する項

- 『Oracle Fusion Middlewareの管理』のメタデータ・リポジトリの管理に関する項

10 Oracle ADF機能が備わったアプリケーションのデプロイメント

この章では、Oracle ADFアプリケーションをアプリケーション・サーバーにデプロイする際の概念とプロセスについて説明します。

この章の内容は次のとおりです。

- Oracle ADF機能が備わったアプリケーションのデプロイメントについて

- ADFアプリケーションのデプロイの主要概念

- ADFアプリケーションのデプロイの主要コンポーネント

- ADFアプリケーション・デプロイメント・プロセス・フローの概要

- ADFアプリケーションのデプロイに関する詳細

10.1 Oracle ADF機能が備わったアプリケーションのデプロイメントについて

デプロイは、アプリケーション・ファイルをアーカイブ・ファイルとしてパッケージ化し、ターゲット・アプリケーション・サーバーに転送するプロセスです。JDeveloperを使用して、ADFアプリケーションをアプリケーション・サーバーに直接デプロイするか、またはデプロイ・ターゲットとしてアーカイブ・ファイルに間接的にデプロイし、このアーカイブ・ファイルを対象のサーバーにインストールできます。

10.2 ADFアプリケーションのデプロイの主要概念

この項では、ADFアプリケーションのデプロイの準備から完了までのプロセスについて主要面を概説します。

10.2.1 統合WebLogic Serverでのテスト・デプロイ

開発の際にアプリケーションの実行テストをする場合は、JDeveloperを使用して、統合WebLogic Serverでアプリケーションを実行できます。統合WebLogic Serverでアプリケーションを実行する場合、スタンドアロン・サーバーへのデプロイに必要な多くの手順を手動で完了する必要はありません。たとえば、デプロイメント・プロファイルやEARファイルを作成する必要はなく、ADFランタイム・ライブラリは、自動的に統合WebLogic Serverインスタンスに追加されます。

10.2.2 デプロイメント・ツール

スタンドアロン・サーバーへのデプロイメントの場合、次のツールおよび方法から選択できます。

- Oracle Enterprise Manager Fusion Middleware Control。

- WebLogic Scripting Tool (WLST)など特定のアプリケーション・サーバーに固有のスクリプト・ツール

- Oracle WebLogic管理コンソールなどの管理コンソール

- コマンド・スクリプトおよびAntスクリプト

- JDeveloper

10.2.3 スタンドアロン・サーバーでのテスト・デプロイメント

アプリケーションを本番サーバーにデプロイする前に、本番環境にはないスタンドアロン・サーバー・インスタンスでアプリケーションをテストする必要がある場合があります。そのテストにより、アプリケーションがリモート環境で想定どおりにデプロイされることを確認できます。統合WebLogic Serverインスタンスでアプリケーションを実行しても明らかにならないような、デプロイメントにおける潜在的な問題を特定して解決するために、この手順をお薦めします。この場合、大半の手順は、開発ワークフローにとってプラスとなるように自動的に実行され、本番のサーバー環境を対象としていません。

10.3 ADFアプリケーションのデプロイの主要コンポーネント

この項では、ADFアプリケーションをアプリケーション・サーバーにデプロイするために必要な主要要素について概説します。

10.3.1 エンタープライズ・アーカイブ(EAR)ファイル

ADFアプリケーションは、通常、EARファイルとしてアプリケーション・サーバーにデプロイされます。EARファイルはコンポジット・アーカイブであり、EARファイルにはWARファイル、JARファイル、MARファイルなど1つまたは複数の他のアーカイブ、および1つまたは複数のデプロイメント・ディスクリプタが含まれています。

10.3.2 ADFランタイム・ライブラリ

ADFコンポーネントや機能を使用するアプリケーションには、実行するためにアプリケーション・サーバーにADFランタイム・ライブラリがインストールされている必要があります。そのようなコンポーネントや機能には、ADFビジネス・コンポーネント、ADFモデル・データ・バインディング、ADFタスク・フロー、ADF Facesコンポーネントがあります。

10.4 ADFアプリケーション・デプロイメント・プロセス・フローの概要

アプリケーションを開発したら、次の手順に従って、そのアプリケーションをスタンドアロン・サーバーにデプロイします。これらの手順には、JDeveloperからのIntegrated WebLogic Serverにおけるアプリケーションの実行が含まれていません。

1. デプロイメント・プロファイルを作成して、対象となる環境にデプロイするアーカイブ・ファイルに、アプリケーション・コンテンツをパッケージ化する方法を定義します。アーカイブ・ファイルの形式とコンテンツを指定する以外に、デプロイメント・プロファイルには依存性の情報、プラットフォーム固有の手順などの情報が含まれています。

2. 対象となるサーバーに必要なデプロイメント・ディスクリプタを作成または編集します。デプロイメント・ディスクリプタは、アプリケーションのデプロイ構成を定義するXMLサーバー構成ファイルで、必要に応じてアプリケーションとともにデプロイされます。
JDeveloperでアプリケーションを開発すると、Oracle WebLogic Serverに必要なデプロイメント・ディスクリプタ・ファイルが生成されます。JDeveloperには、これらのファイルに対するビジュアル・エディタも用意されていて、プロパティを表示および編集する際に使用できます。

3. スタンドアロン・サーバーへの移行には、アプリケーションのセキュリティ・ポリシーと資格証明を準備します。これには、テストの目的で設定したポリシーおよび資格証明がアプリケーション構成ファイルから削除されていることの確認、およびターゲット・サーバーで標準ロールにマップするアプリケーション・ロールの設定があります。

4. ユーザー・インタフェース・プロジェクトのweb.xmlファイルに、使用するADF MBeansを登録します。
ADF MBeansは各種構成ファイルに対応します。アプリケーションがデプロイされたら、Enterprise Manager Fusion Middleware ControlのMBeanブラウザを使用してADF MBeanにアクセスし、構成プロパティを変更することができます。

5. JDeveloperで、デプロイメント・プロファイルからEARファイルを生成します。

6. テスト・デプロイ用のターゲット・アプリケーション・サーバーのスタンドアロン・インスタンスを設定し、そのインスタンスにADFを実行時にインストールします。

7. アプリケーションのポリシー・ストアをスタンドアロン・サーバー・インスタンスのドメイン・レベルに移行します。
通常、移行タスクは、JDeveloperの外部で、Oracle Enterprise Manager Fusion Middleware Controlのようなツールを使用して処理します。JDeveloper外部のツールを使用してポリシー・ストアを本番環境のドメインレベルに移行する方法の詳細は、『Oracle Platform Security Servicesによるアプリケーションの保護』のテスト環境から本番環境への移行に関する項を参照してください。

8. 「デプロイメント・ツール」に記載された方法のいずれかを使用してアプリケーションをテスト・デプロイし、発生した問題を解決します。

9. ターゲット・サーバーで、ADFランタイム・ライブラリがインストールされていることを確認し、アプリケーションのポリシー・ストアを追加します。

10. アプリケーションをターゲット・サーバーにデプロイします。

10.5 ADFアプリケーションのデプロイに関する詳細

デプロイメントに向けたアプリケーションの準備の詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』の「Fusion Webアプリケーションのデプロイ」を参照してください。

アプリケーションをデプロイするスタンドアロン・サーバーの設定、アプリケーションのデプロイ、およびデプロイしたアプリケーションの構成と管理の詳細は、『Oracle ADFアプリケーションの管理』の「第II部 基本的な管理」を参照してください。

ターゲット・サーバーへのセキュリティ・ポリシーと資格証明の移行の詳細は、『Oracle Platform Security Servicesによるアプリケーションの保護』のテスト環境から本番環境への移行に関する項を参照してください。

GlassFishへのOracle ADF Essentialsアプリケーションのデプロイの詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』の「GlassFishへのADFアプリケーションのデプロイ」を参照してください。

付録

この部は、次の付録で構成されています。

- ADFビジネス・コンポーネントおよび使い慣れた4GLツール

A ADFビジネス・コンポーネントおよび使い慣れた4GLツール

この付録では、ADFビジネス・コンポーネントの主要コンポーネントをエンタープライズ4GLツールPeopleTools、Siebel ToolsおよびADO.NETで提供されている概念的に類似した機能と比較します。

この付録の内容は次のとおりです。

- PeopleToolsとの比較

- Siebelツールとの比較

- ADO.NETとの比較

A.1 PeopleToolsとの比較

PeopleToolsを使用したソリューションの開発経験者は、PeopleToolsコンポーネントの構造をよく理解しています。ADFビジネス・コンポーネントには、PeopleToolsで使い慣れているデータ・アクセス機能が実装されています。

表A-1 PeopleTools開発者が理解しやすい概念

概念

Oracle ADFへのマッピング

類似点

ヘッドレス・コンポーネント

アプリケーション・モジュール

Oracle ADFはMVCパターンに従い、ビューからモデルを分離します。PeopleToolsコンポーネントで使い慣れているページは、WebベースのアプリケーションのためのJSFコンポーネントやADF Facesコンポーネント、またはデスクトップ・フィデリティ・クライアント表示のためのSwingなどの標準テクノロジを使用し、ビュー・レイヤーで定義されます。

ADFアプリケーション・モジュールは、PeopleToolsコンポーネント・バッファと同様にデータ構造を定義します。データの行セットを生成するADF問合せコンポーネントとの間にマスター/ディテール関係を定義することにより、データと連携するすべてのアプリケーション・モジュールは、必要に応じて、コンポーネント・バッファのスクロール・レベルに類似した自然な階層を再使用できます。

使い慣れたコンポーネント・インタフェースと同様に、アプリケーション・モジュールは、標準メソッドおよび追加的な開発者定義ビジネス・ロジックへのアクセスを提供するサービス・オブジェクトです。特定のユーザー・インタフェースに対して「ヘッドレス」なデータ・サービスを提供するために、コンポーネント・インタフェースでは、UIの対話に関連するPeopleToolsのファンクションの数が制限されます。アプリケーション・モジュールは、「ヘッドレス」なデータ・サービスを提供するという点ではコンポーネント・インタフェースと類似していますが、既存のユーザー・インタフェースの制限されたビューをラップする手法ではデータを提供していません。かわりに、アプリケーション・モジュールはビジネス・ロジックとデータ・アクセスのみを処理するよう設計されています。ADFビジネス・コンポーネントでは、コンポーネント上にコンポーネント・インタフェースを構築するのではなく、まずユーザー・インタフェースとは別のアプリケーション・モジュール・サービスを構築し、次にこのサービス上に1つまたは複数のページを構築して、アプリケーションのエンド・ユーザー・タスクを処理します。

アプリケーション・モジュールは、PeopleToolsコンポーネント・バッファと同じ方法でトランザクション・オブジェクトに関連付けられています。アプリケーション・モジュールは、自身に含まれているコンポーネントに対し、データベース接続を提供します。現在、コンポーネントPeopleCodeとしてトランザクションと関連付けているすべてのロジックは、ADFビジネス・コンポーネントではアプリケーション・モジュールのロジックとして定義します。

トランザクション内のレコードと関連付けられた、現在コンポーネント・レコードPeopleCodeまたはコンポーネント・レコード・フィールドPeopleCodeとして記述しているロジックは、アプリケーション・モジュール内では定義されない可能性があります。ADFビジネス・コンポーネントには、複数のコンポーネントに同じレコードが使用されている場合に再使用しやすくするためのビュー・オブジェクトがあります。

つまり、PeopleToolsでは、コンテナの概念に対応したコンポーネントを使用しますが、ADFビジネス・コンポーネントでは、アプリケーション・モジュールを使用します。類似点はその部分のみです。コンポーネント・コードのすべてがアプリケーション・モジュールに移行するとは考えないでください。最初に、エンティティ・オブジェクトとアプリケーション・モジュール間のレイヤーであるビュー・オブジェクトの概念について理解します。次に、アプリケーション・モジュールに適したコンポーネント・コードの部分と、ビュー・オブジェクトに適した部分を決定します。

レコード定義

エンティティ・オブジェクト

エンティティ・オブジェクトは、PeopleToolsレコード定義が基礎となる表やビューへのマッピングであるのと同様に、基礎となるデータ構造に対するマッピングです。一般的には、アプリケーション操作が必要な表ごとにエンティティ・オブジェクトを1つ作成します。

PeopleToolsの変換値を使用して「Customer Status」などのフィールドに有効な一連の値を宣言するのと同様に、ADFビジネス・コンポーネントではエンティティ・オブジェクトのそれぞれの属性に対し、宣言的な検証を追加できます。現在レコードPeopleCodeやレコード・フィールドPeopleCodeとして記述している、アプリケーション全体に適用されるレコードと関連付けられるすべてのロジックは、ADFビジネス・コンポーネントではエンティティ・オブジェクトとして定義できます。

行セット

ビュー・オブジェクト

PeopleToolsの行セットのように、ビュー・オブジェクトはSQL問合せにより移入できます。行セットと異なるのは、ビュー・オブジェクトの定義にはビジネス・ロジックを含めることができる点です。

コンポーネント・レコードPeopleCodeのロジックは、いずれもビュー・オブジェクトで定義される可能性があります。コンポーネント・レコードPeopleCodeはコンポーネントに直接関連付けられていますが、ビュー・オブジェクトは異なるアプリケーション・モジュールに関連付けることができます。多くのPeopleToolsコンポーネントでは同じレコード定義を使用できますが、Oracle ADFでは複数のアプリケーションにわたってビジネス・ロジックを再使用できます。

ビュー・オブジェクトは、現在のアプリケーションで使用しやすい形でデータの問合せを正確に行います。多くのビュー・オブジェクトは、同じエンティティ・オブジェクト上に構築できます。

PeopleToolsコンポーネントにおけるスクロール・レベルと同様に、マスター/ディテール構造を作成するため、ビュー・オブジェクト間の関係を定義できます。

A.2 Siebel Toolsとの比較

Siebel Toolsバージョン7.0以前のバージョンを使用したソリューションの開発経験者には、使い慣れたすべてのデータ・アクセス機能が、多数の拡張機能とともに、ADFビジネス・コンポーネントに実装されていることがわかります。

表A-2 Siebel Tools開発者が理解しやすい概念

概念

Oracle ADFへのマッピング

類似点

表オブジェクト

エンティティ・オブジェクト

Siebel表オブジェクトと同様に、ADFエンティティ・オブジェクトは、列名や物理的なデータ型など、1つの表の物理特性を表します。両方のオブジェクトには、データベース内の物理表を作成するデータ定義言語(DDL)を生成するために十分な情報が含まれています。ADFビジネス・コンポーネントでは、基礎となる表内の外部キーを反映した、エンティティ・オブジェクト間のアソシエーションを定義します。これらのアソシエーションは、ユーザー・インタフェース・ページで使用されるビュー・オブジェクト問合せにおいて、ビジネス情報を自動的に結合するために使用されます。データ列から参照する値リスト(LOV)オブジェクトは、宣言的なエンティティ・レベルの検証規則とビュー・オブジェクトの属性レベルのLOV定義の組合せによってADFビジネス・コンポーネントで処理されます。また、他の宣言またはプログラムによるビジネス・ロジックを、作成するすべてのデータ・ビューで自動的に再使用される表のハンドラ・エンティティ・オブジェクトとともにカプセル化することもできます。

ビジネス・コンポーネント

ビュー・オブジェクト

Siebelビジネス・コンポーネントのように、ADFビュー・オブジェクトは基礎となる物理表表現上に、論理マッピングを設定します。Siebelビジネス・コンポーネントとADFビュー・オブジェクトは、どちらもユーザー・インタフェースの要件を満たす、論理フィールド名、データ、計算済フィールドの提供を可能にします。Siebelビジネス・コンポーネントと同様、ADFビュー・オブジェクトでは、基礎となる様々な表の情報を結合するビュー・オブジェクトを定義できます。関連するADFビュー・リンクは、Siebelリンク・オブジェクトに類似しており、マスター/ディテール関係を定義できます。ADFビジネス・コンポーネントでは、データをユーザー・インタフェースで必要とされる形にするために、SQL言語の特性を十分に生かすようビュー・オブジェクトを定義できます。

ビジネス・オブジェクト

アプリケーション・モジュール

Siebelビジネス・オブジェクトでは、ビジネス・コンポーネントのコレクションを定義できます。ADFアプリケーション・モジュールでも同様のタスクが実行され、関連するユーザー・インタフェースのページの「データ・モデル」の役割を果すマスター/ディテール・ビュー・オブジェクトのコレクションを作成できます。さらに、アプリケーション・モジュールはこのデータ・ビュー・グループに対し、トランザクションおよびデータベース接続のコンテキストを提供します。アプリケーション・モジュールから取得したオブジェクトに対し複数のリクエストを行うことでき、これらは同じトランザクション内に含まれます。

A.3 ADO.NETとの比較

Visual Studio 2003または2005を使用したソリューションの開発経験者は、ADO.NETフレームワークを使用したデータ・アクセスをよく理解しています。ADFビジネス・コンポーネントには、ADO.NETで使い慣れているすべてのデータ・アクセス機能が、様々な拡張機能とともに実装されています。

表A-3 ADO.NET開発者が理解しやすい概念

概念

Oracle ADFへのマッピング

類似点

データ・セット

アプリケーション・モジュール

アプリケーション・モジュール・コンポーネントは、ADO.NETデータセットと同じ役割を果します。これは、ビュー・オブジェクト・インスタンスと呼ばれる行セットのコレクションを表す、強く型付けされたサービス・コンポーネントで、ADO.NETデータ表と類似しています。アプリケーション・モジュールによって、開発者による構成が可能な一連のビュー・インスタンスのデータの行を表すサービス・インタフェースが、SDOと互換性のあるサービス(Webサービス、またはSCAコンポジットとしてアクセス可能)として公開されます。アプリケーション・モジュールは、関連するトランザクション・オブジェクトと連携し、ビュー・オブジェクトが実行するSQL問合せのコンテキストを提供します。また、アプリケーション・モジュールは、ADO.NETデータ・アダプタの役割を果す、エンティティ・オブジェクトによってデータベースに保存された変更のコンテキストを提供します。

データ・アダプタ

エンティティ・オブジェクト

エンティティ・オブジェクト・コンポーネントは、強い型指定のADO.NETデータ・アダプタに類似しています。これは特定の表における行を表し、その行の主キーによる検索、挿入、更新、削除およびロックの操作を処理します。ADFビジネス・コンポーネントでは、これらの文を自分で記述する必要はありませんが、必要に応じてオーバーライドできます。エンティティ・オブジェクトは、属性や基礎となる表の行全体に関連する、検証や他のビジネス・ロジックをカプセル化します。検証は、エンド・ユーザーが基礎となるエンティティ・オブジェクトを参照するすべてのビュー・オブジェクト問合せを使用してデータを更新および保存したときに実行されます。ADFビジネス・コンポーネントの相違点としては、任意の柔軟な問合せがSQL文によってビュー・オブジェクト・インスタンス・レベルで実行されますが、ビュー・オブジェクトとエンティティ・オブジェクトが実行時に自動的に連携するという点があります。

データ・ブロック

ビュー・オブジェクト

ビュー・オブジェクト・コンポーネントは、データ・ブロック機能のうち、データの取得を実行します。各ビュー・オブジェクトではSQL問合せをカプセル化し、実行時にはそれぞれの問合せ結果セットを管理します。マスター/ディテール関連で2つ以上のビュー・オブジェクトを接続する場合、その調整は自動的に処理されます。ビュー・オブジェクトを定義する際、すべての問合せ列を、基礎となるエンティティ・オブジェクトにリンクさせることができます。この情報を取得することにより、ビュー・オブジェクトとエンティティ・オブジェクトは実行時に自動的に連携し、ユーザーのタスクで必要となるビジネス・データの形態にかかわらず、ドメインのビジネス・ロジックを実行します。