Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド 11gリリース1 (11.1.1.7.0) B52028-05 |
|
前 |
次 |
この章では、Fusion Webアプリケーション・テクノロジ・スタックを使用して、Webショッピング・ストアフロントに必要なトランザクションベースのWebアプリケーションを作成する例を示すために、サンプルとして構築されたFusion Order Demo (FOD)アプリケーションのStoreFrontモジュールを実行する方法について説明します。Fusion Order Demoアプリケーションを実装するスキーマと機能に関する説明も記載されています。このデモ・アプリケーションは、要点やコード・サンプルを説明する例として、このガイド全体を通して使用されます。
各コンポーネントとそれらのソース・コードについて深く考察する前に、Fusion Order Demoアプリケーションをインストールしてその機能に慣れておくことをお薦めします。
この章の内容は次のとおりです。
このサンプル・アプリケーションでは、オンライン・ショッピング用のWebアプリケーションを通して電子デバイスが販売されています。顧客は、Webサイトにアクセスして登録し、製品の注文が可能です。顧客の登録と注文を実行するために、現時点では単一のアプリケーションのみが実装されています。将来のリリースでは、複数のアプリケーションが連携する予定です。実行時のアプリケーションの動作の詳細は、2.5項「Fusion Order Demoアプリケーションの考察」を参照してください。
デモの表示と実行には、Oracle JDeveloper 11gをインストールする必要があります。このデモには、アプリケーションをダウンロードする必要があります。これらのタスクを完了する手順は、この章で説明します。詳細は、2.2項「Fusion Order Demoアプリケーションの設定」を参照してください。
アプリケーションをインストールして実行すると、Oracle JDeveloperを使用してコードを表示できます。既存の顧客としてログインして注文を行うと、実行時にアプリケーションを表示できます。
Fusion Order Demoアプリケーションは、OracleデータベースとOracle JDeveloper 11gを使用して実行されます。サポートされるプラットフォームは、JDeveloperによってサポートされるプラットフォームと同じです。
環境を準備してFusion Order Demoアプリケーションを実行するには、次を実行する必要があります。
Oracle JDeveloper 11gをインストールし、インストールの前提条件を満たします。Fusion Order Demoアプリケーションには、既存のOracleデータベースが必要です。詳細は、2.2.1項「アプリケーション・リソースのダウンロード方法」を参照してください。
Oracle Technology NetworkからFusion Order Demoアプリケーションをインストールします。詳細は、2.2.2項「Fusion Order Demoスキーマのインストール方法」を参照してください。
Mozilla FireFoxバージョン2.0以上またはInternet Explorerバージョン7.0以上をインストールします。
画面解像度1024×768以上をサポートするモニターでアプリケーションを実行します。詳細は、2.3項「Fusion Order DemoアプリケーションStoreFrontモジュールの実行」を参照してください。
Fusion Order Demoアプリケーションには、既存のOracleデータベースが必要です。Oracle JDeveloper 11gを使用して、Fusion Order Demoアプリケーションを実行します。
Fusion Order Demoアプリケーションをインストールする前に、次の手順に従います。
Oracle JDeveloperをインストールします。アプリケーションのプロジェクトを表示して、JDeveloper統合サーバーでアプリケーションを実行するには、Oracle JDeveloper 11g Studio Editionが必要です。Oracle JDeveloperは、次の場所からダウンロードできます:
http://www.oracle.com/technetwork/developer-tools/jdev/overview/index.html
注意: 11gをダウンロードしてインストールし、その製品がJava EditionではなくStudio Editionであることを確認してください。これらの詳細をOracle JDeveloperで確認するには、「ヘルプ」→「バージョン情報」メニュー・オプションの順に選択します。 |
Fusion Order DemoアプリケーションZIPファイル(FusionOrderDemo_R1PS
x
.zip
)をダウンロードします。このZIPファイルは次の場所からダウンロードできます:
http://www.oracle.com/technetwork/developer-tools/jdev/learnmore/fod1111-407812.html
Oracleデータベースをインストールします。Fusion Order Demoアプリケーションには、そのデータ用のデータベースが必要です。
Oracleデータベース用にSQLスクリプトが作成されているため、11gやXEなどのOracle RDBMSの特定のバージョンが必要になります。スクリプトはOracle Liteにはインストールされません。Oracle Liteやその他のデータベースを使用する場合は、データベース・スクリプトを適宜変更する必要があります。Oracleデータベースは、次の場所からダウンロードできます:
http://www.oracle.com/technetwork/index.html
特に、ローカル・マシンにデータベースを設定するには、容量を節約できるOracle Express Edition (XE)が最適です。これは、次の場所からダウンロードできます:
http://www.oracle.com/technetwork/database/express-edition/overview/index.html
Fusion Order Demoアプリケーションは、Oracle Technology Network (OTN)のWebサイトからダウンロードできます。
FODスキーマをデータベースにダウンロードしてインストールするには:
http://www.oracle.com/technetwork/developer-tools/jdev/learnmore/fod1111-407812.html
に移動し、ZIPファイルをローカル・ディレクトリにダウンロードします。
Oracle JDeveloper 11gを起動し、メイン・メニューから「ファイル」→「開く」を選択します。
「開く」ダイアログで、手順1でZIPファイルを抽出した場所を参照し、infrastructureディレクトリからInfrastructure.jwsを選択します。「開く」をクリックします。
アプリケーション・ナビゲータで、MasterBuildScript→「リソース」を展開し、build.propertiesをダブルクリックします。
表2-1に示すように、各自の環境に合せてエディタでプロパティを変更します。
表2-1 Fusion Order Demoアプリケーションのインストールに必要なプロパティ
プロパティ | 説明 |
---|---|
|
Oracle JDeveloper 11gをインストールしたルート・ディレクトリ。例:
|
|
データベースのベースJDBC URL(書式は
|
|
データベースのポート。例:
|
|
データベースのSID。例:
|
|
データベースの管理ユーザー。例:
|
|
FODユーザーがインストールされる表領域名。例:
|
JDeveloperのメイン・メニューから、「ファイル」→「すべて保存」の順に選択します。
「アプリケーション・ナビゲータ」で、「リソース」ノードの「build.xml」を右クリックし、「Antターゲットの実行」→「buildAll」の順に選択します。
「プロパティの入力」ダイアログに、データベース・システム・ユーザーのパスワードを入力し、「続行」をクリックします。
パスワードを入力すると、Antビルド・スクリプトによってFODユーザーが作成され、FODスキーマの表に移入されます。「Apache Ant - ログ」ウィンドウに、一連のSQLスクリプトが表示され、最終的に次のようになります。
buildAll:
BUILD SUCCESSFUL
Total time: nn minutes nn seconds
デモ・スキーマおよびスクリプトの詳細は、MasterBuildScript
プロジェクトのREADME.txt
ファイルを参照してください。
図2-1は、Fusion Order Demoアプリケーションのスキーマの概要を示しています。ダイアグラム内の青色の図形は、中核となる4つの表を表しています。それ以外の表とビューは黄色の図形で示されていますが、その一部はダイアグラムの簡略化のために複数の表を表しています。一部の表は順序を使用しますが、ここでは中核の表によって使用されるもののみを示しています。
青色のダイアグラム要素で示されている中核の表には、次のものがあります。
PERSONS
: この表には、システムと対話するすべてのユーザー(顧客、スタッフ、サプライヤ)が格納されます。各ユーザーの姓と名、電子メール・アドレス、住所、各ユーザーのタイプ・コードが格納されます。各ユーザーは、IDによって一意に識別されます。他のIDにより、住所情報を含む(顧客の場合はメンバーシップ情報を含む)表に外部キーを提供します。
ORDERS
: この表は、特定の顧客のアクティビティを示します。注文が作成されると、注文日、注文の合計額、その作成者の顧客ID、注文のステータスがすべて記録されます。注文が履行されると、注文のステータスと注文の出荷日が更新されます。すべての注文は、順序の割り当てられたIDによって一意に識別されます。
ORDER_ITEMS
: 各注文では、多くの注文品目が記録される場合があります。各注文品目の単価と数量が記録されます。注文の明細品目とその注文IDにより、各注文品目が一意に識別されます。
PRODUCTS_BASE
: この表には、店舗で入手可能なすべての商品が格納されます。製品ごとに、名前とコストが記録されます。すべての製品は、順序の割り当てられたIDによって一意に識別されます。製品の画像とその説明は別々の表に格納され、それぞれが製品IDを参照します。ATTRIBUTE
x
列は、将来の使用のために予約されており、(通常Oracle E-Business Suiteスキーマに必要とされる)宣言的フィールドを持ちます。
中核の表で使用される順序には、次のものがあります。
PERSON_SEQ
: 各新規ユーザーのIDを移入します。
ORDER_SEQ
: 各新規注文のIDを移入します。
ORDERS_ITEMS_SEQ
: 各新規注文品目のIDを移入します。
PRODUCTS_SEQ
: 各製品のIDを移入します。
PL/SQLパッケージUSER_CONTEXT_PKG
には、プロシージャset_app_user_lang()
が含まれており、これはアプリケーション・モジュールの内部から、ユーザーごとのデータベースの状態を設定するための簡単な例を示すために使用されます。
SHIPPING_OPTIONS
ビューは将来の使用のために予約されており、Fusion Order Demoでは現在使用されていません。
Fusion Order Demoの変更履歴の追跡をサポートするため、図2-2に示すように、各表には履歴に関する列CREATED_BY
、CREATION_DATE
、LAST_UPDATED_BY
、LAST_UPDATED_DATE
およびOBJECT_VERSION_ID
が含まれています。
Fusion Order Demoのローカライズをサポートするために、AVAILABLE_LANGUAGES
表には利用可能なすべての言語が一覧表示されます。この表では、現在のユーザーの言語に対応する1つの列のみ、DEFAULT_FLAG
がY
に設定されます。
翻訳は、ベース表PRODUCTS_BASE (PRODUCT_TRANSLATIONS)
、PRODUCT_CATEGORIES_BASE (CATEGORY_TRANSLATIONS)
、SHIPPING_OPTIONS_BASE (SHIPPING_OPTION_TRANSLATIONS)
、MEMBERSHIPS_BASE (MEMBERSHIP_TRANSLATIONS)
およびDISCOUNTS_BASE (DISCOUNT_TRANSLATIONS)
に存在します。
図2-3に示したShipping Optionsグループを例に取ると、各製品が言語ごとに1つの列を持つように、SHIPPING_OPTION_TRANSLATIONS
にはデータが完全に移入されます。列LANGUAGE
には、翻訳言語IDが保持されます。エントリ自体が翻訳されていない場合には、列SOURCE_LANGUAGE
に現在のエントリの言語が保持されます。値が翻訳されると、SOURCE_LANGUAGE
とLANGUAGE
に同じ値が保持されます。PL/SQLパッケージUSER_CONTEXT_PKG
では、カスタムUSERENV('CLIENT_INFO')
変数を作成し、SHIPPING_OPTION_TRANSLATIONS
からSHIPPING_OPTIONS_BASE
表のデータとSHIPPING_OPTIONS
ビューに正しい翻訳を取り込むために使用する実行時ロケールを指定します。各注文には、1セットのShipping Optionsが関連付けられます。
コード参照表であるLOOKUP_CODES
表には、Fusion Order Demoアプリケーション全体で使用されるコードが含まれています。たとえば、PERSONS
表には、列person_type_code
、marital_status_code
およびgender
が含まれています。これらのコードは、LOOKUP_CODES
表に対応する行を持ち、lookup_type
列が識別されます。外部キーは、これらの行に対しては定義されていませんが、特定の参照タイプのLOOKUP_CODES
値をユーザー・インタフェース・コンポーネントに移入することにより、ユーザー・インタフェースで提供されます。たとえば、ユーザー・インタフェースに新しい登録(ユーザー)を作成する場合、person_type_code
に対して使用できる値は、lookup_type=person_type_code
であるlookup_code
の値からドロップダウン・リストに移入されます。
LOOKUP_CODES
表は、ユーザー・インタフェースのローカライズもサポートしています。この表では、コードおよび言語を組み合せたキー(実行時ロケールまたはプリファレンスから取得)を使用してコードの意味が決定されます。各コードは、2.2.3.1項「Fusion Order Demoスキーマの翻訳のサポート」で説明されているように、サポートされている言語ごとにエントリを持ちます。
図2-4に示した住所を例として使用すると、PERSONS
は、交差表ADDRESS_USAGES
を使用して複数の住所情報に対応します。また、ADDRESS_USAGES
はLOOKUP_CODES
を使用してOWNER_TYPE_CODE
およびUSAGE_TYPE_CODE
の両方の情報を格納し、MEANING
を返します(図2-5の表抽出を参照)。ADDRESSES
は、COUNTRY_CODES
に直接アクセスし、ADDRESSES
に格納されているCOUNTRY_ID
に関連するCOUNTRY_NAME
を参照して使用します。PERSONS
表もADDRESSES
を直接参照し、PRIMARY_ADDRESS_ID
を直接格納します。
適切な翻訳は、実行時ロケール/プリファレンスとともに、LOOKUP_CODES
およびCOUNTRY_CODES
両方のLANGUAGE
列を使用することによって適用されます。
参照表DEMO_OPTIONS
では、オンにされているFusion Order Demoアプリケーション内の様々なオプションが定義されます。また、電子メール・アドレスや電話番号などの一般的な構成情報がキャッシュされ、このデモ・シナリオで(たとえば電子メール・アドレスが架空のものの場合などに)オーバーライドとして使用されます。この表は将来使用するために予約されています。
Fusion Order Demoアプリケーションは、Webユーザー・インタフェースとビジネス・コンポーネント・レイヤーで構成されます。特に、次のプロジェクトはFusion Order Demoアプリケーションの一部です。
StoreFrontService
: 店舗データにアクセスし、顧客情報および注文データを更新するためのトランザクションをサポートします。
StoreFrontUI
: 店舗の参照、注文の実行、サイトへの登録、注文情報の表示、およびユーザー・プロファイルの更新に顧客が使用するWebページを提供します。
StoreFrontUI
プロジェクトでhome.jspx
ページを実行し、JDeveloperでFusion Order DemoのStoreFrontモジュールを実行します。StoreFrontUI
プロジェクトでは、ビュー・テクノロジとしてJavaServer Faces (JSF)を使用し、StoreFrontService
プロジェクトのADFビジネス・コンポーネントと対話するためにADFモデル・レイヤーを使用します。Fusion Order Demoアプリケーションおよびその実装の詳細は、2.5項「Fusion Order Demoアプリケーションの考察」を参照してください。
StoreFrontモジュールを使用して発注した注文を処理するために、Fusion Order Demoアプリケーションの2つ目のモジュールを使用できます。たとえば、WebLogic Fusion Order Demoモジュールでは、様々な内部アプリケーションと外部アプリケーション(顧客サービス・アプリケーション、与信検証システム、および内部ベンダーと外部ベンダーの両方)が使用されます。これらの複合サービスは、他の開発者ガイドの対象となる内容であるため、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』では説明されません。Oracle SOA Suiteの機能を示すために使用されるWebLogic Fusion Order Demoモジュールの詳細は、『Oracle Fusion Middleware Oracle SOA Suite開発者ガイド』を参照してください。
JDeveloperでは、WebLogic Fusion Order Demoモジュールを実行できません。このアプリケーションのストアフロント部と複合サービス部を統合するには、Fusion Order DemoアプリケーションをSOA対応のOracle WebLogic Serverにデプロイする必要があります。SOA WebアプリケーションをOracle WebLogic Serverにデプロイする方法は、OTNのFusion Order Demoホームページ(http://www.oracle.com/technetwork/developer-tools/jdev/index-095536.html
)を参照してください。
Fusion Order Demoアプリケーションは、JDeveloperでFusion Order DemoのStoreFrontモジュールのみを開き、StoreFrontUI
プロジェクトでhome.jspx
ページを実行すると非常に簡単に実行できます。
Fusion Order DemoアプリケーションのStoreFrontモジュールを実行するには:
Oracle JDeveloperでアプリケーションを開きます。
JDeveloperのメイン・メニューから、「ファイル」→「開く」を選択します。
ZIPファイルを抽出した場所に移動し、StoreFrontModuleディレクトリからStoreFrontModule.jwsアプリケーション・ワークスペースを選択します。「開く」をクリックします。
図2-6に、アプリケーション・ワークスペースのファイルを開いた状態の「アプリケーション・ナビゲータ」を示します。ワークスペースの各プロジェクトの詳細は、2.5項「Fusion Order Demoアプリケーションの考察」を参照してください。
アプリケーション・ナビゲータで、「アプリケーション・リソース」アコーディオン・タイトルをクリックし、パネルを展開します。
「アプリケーション・リソース」パネルで、「接続」→「データベース」ノードを展開します。
FOD接続を右クリックし、「プロパティ」を選択します。
「データベース接続の編集」ダイアログで、表2-2のように各自の環境に合せて接続情報を変更します。
表2-2 Fusion Order Demoアプリケーションの実行に必要な接続プロパティ
プロパティ | 説明 |
---|---|
ホスト名 |
データベースのホスト名。例:
|
JDBCポート |
データベースのポート。例:
|
SID |
データベースのSID。例:
|
ユーザー名とパスワード(fod/fusion)は変更しないでください。これらはそのままにしておきます。「OK」をクリックします。
アプリケーション・ナビゲータで、StoreFrontServiceを右クリックして「再ビルド」を選択します。
「アプリケーション・ナビゲータ」で、「StoreFrontUI」を右クリックして「実行」を選択します。
アプリケーションを初めて実行し、新しいドメインを統合WebLogic Serverで開始する際に、「デフォルト・ドメインの構成」ダイアログが表示されます。ダイアログを使用して新しいドメインの管理者パスワードを定義します。入力するパスワードは8文字以上で、数字が含まれている必要があります。
StoreFrontUI
プロジェクト内のhome.jspx
ページがデフォルトの実行ターゲットになります。デフォルトのターゲットを実行すると、JDeveloperによってブラウザが起動され、Fusion Order Demoアプリケーションのホームページが表示されます。
ホーム・ページが表示されたら、匿名ユーザーとしてWebサイトを参照したり、ログインして発注したりできます(まず顧客としの登録が必要になる場合があります)。Fusion Order Demoアプリケーションには、Oracle Application Development Framework (Oracle ADF)リソースへのアクセスを管理するためのOracle ADFセキュリティが実装されているため、認証されたユーザーのみがカート内の注文を表示できます。表2-3に、Fusion Order Demoアプリケーションにログインできるfod-users
ロールを持つメンバーとして承認されているユーザーを示します。
注意: Fusion Order Demoアプリケーションには、事前定義済のユーザー・データが付属しています。このアプリケーションのスキーマでは、顧客、サプライヤ、スタッフを含む様々なタイプのユーザーが定義されています。すべてのユーザーは、 |
表2-3 Fusion Order Demoアプリケーションの事前登録済ユーザー
ユーザー名 | パスワード | アプリケーション・ロール | メモ |
---|---|---|---|
|
|
|
カートへの品目の追加、チェックアウト、注文情報の表示を行えます。Fusion Order DemoのStoreFrontモジュールで顧客として事前登録されている唯一のユーザーです。 |
|
|
|
カートに品目を追加できますが、チェックアウトと注文情報の表示を行うには、顧客として登録する必要があります。このユーザーは、Fusion Order DemoのMasterPriceListモジュールで、管理権限( |
|
|
|
カートに品目を追加できますが、チェックアウトと注文情報の表示を行うには、顧客として登録する必要があります。このユーザーは、Fusion Order DemoのMasterPriceListモジュールで、読取り専用権限( |
|
|
|
カートに品目を追加できますが、チェックアウトと注文情報の表示を行うには、顧客として登録する必要があります。これらのユーザーは、Fusion Order Demoの将来のバージョンの他のロールをサポートするために追加されている場合があります。 |
Fusion Order Demoアプリケーションには、StoreFrontモジュールで確認できないOracle ADF機能を検証できるように、一連のサンプル・アプリケーションが含まれています。これらのサンプル・アプリケーションの総称をスタンドアロン・アプリケーションと言います。スタンドアロンのサンプル・アプリケーションは、それぞれ複数のプロジェクトで構成される5つのアプリケーション・ワークスペースに表示され、デモZIPファイルを抽出したStandaloneExamplesディレクトリに格納されています。
ほぼすべてのスタンドアロン・アプリケーションは、ADFビジネス・コンポーネントとデータ・モデル・プロジェクトの概念を示します。これらのスタンドアロン・アプリケーションへの参照は、この開発者ガイドの第II部「ビジネス・サービスの構築」および第VI部「高度なトピック」に含まれる章全体にわたって登場します。このガイドを読み進めるうちに、概念をさらに詳しく検証するために、対応するスタンドアロン・アプリケーションを実行する必要が生じる場合があります。各アプリケーション・ワークスペースの概要とドキュメンテーションのリンクは、2.4.2項から2.4.5項に記載されている表を参照してください。
JDeveloperを使用してスタンドアロン・アプリケーションを実行する方法は、各アプリケーションによって異なります。一部のアプリケーションは、JDeveloperがADFビジネス・コンポーネント・データ・モデル・プロジェクトに提供する対話型のテスト・ツール(ビジネス・コンポーネント・ブラウザと呼ばれます)を使用するように設定されています。それ以外のアプリケーションは、ADFビジネス・コンポーネントAPIを使用して問合せを実行し、結果を表示するJavaテスト・クライアント(TestClient
Xxx
.java
のようなファイル名を持ちます)を提供します。ビジネス・コンポーネント・ブラウザの場合は、ツール内ですべての操作を行い、ビジネス・コンポーネントと対話するための便利なユーザー・インタフェースが提供されます。Javaクライアントの場合は、プログラム・ファイルによって結果が出力され、JDeveloperの「ログ」ウィンドウに文が表示されます。
次に示すスタンドアロン・アプリケーション実行方法の一般的な手順を覚えるようにしてください。最初の手順では、提供されるテスト・クライアントからアプリケーションを実行する方法を説明します。次に、データ・モデル・プロジェクトのADFアプリケーション・モジュールでビジネス・コンポーネント・ブラウザを起動する方法を説明します。その後、2.4.2項から2.4.5項で説明されている各スタンドアロン・アプリケーションの詳細を確認してください。
作業を始める前に、次のようにします。
データベース・ナビゲータで、2.3項「Fusion Order DemoアプリケーションStoreFrontモジュールの実行」で説明されているように、ご使用の環境の接続情報に合せてFODデータベース接続の接続情報を変更します。
一部のスタンドアロン・アプリケーションは、変更されたバージョンのFODスキーマと連携します。スキーマの変更を必要とするスタンドアロン・アプリケーションの場合、JDeveloper内で実行する必要があるSQLスクリプトがアプリケーション・プロジェクトに含まれています。
スタンドアロン・アプリケーションの検証が終了したら、このスクリプトを使用してスキーマの変更を取り消すことができます。
提供されるテスト・クライアントからスタンドアロン・アプリケーションを実行するには:
Oracle JDeveloperでアプリケーションを開きます。
JDeveloperのメイン・メニューから、「ファイル」→「開く」を選択します。
DemoのZIPファイルを抽出した場所に移動し、StandaloneExamplesディレクトリを開いたら、該当のスタンドアロン・アプリケーション・ディレクトリを開き、フォルダからアプリケーション・ワークスペース(.jws)を選択します。「開く」をクリックします。
「アプリケーション・ナビゲータ」でプロジェクト・フォルダを展開し、テスト・クライアント(.java
)・ファイルを特定します。テスト・クライアントは、Application Sourcesフォルダにあるパッケージ内に追加されている場合があります。それ以外の場合は、Resourcesフォルダ内にあります。
たとえば、図2-7は、ApplicationModulesプロジェクトを展開し、Javaファイル・ノードTestClientCustomInterface.javaを選択した例を示しています。
テスト・クライアントを右クリックし、「実行」を選択します。
スタンドアロン・アプリケーションで提供されているテスト・クライアントの名前と場所の詳細は、2.4.2項から2.4.5項の表を参照してください。
アプリケーションを初めて実行し、新しいドメインを統合WebLogic Serverで開始する際に、「デフォルト・ドメインの構成」ダイアログが表示されます。ダイアログを使用して新しいドメインの管理者パスワードを定義します。入力するパスワードは8文字以上で、数字が含まれている必要があります。
JDeveloperの「ログ」ウィンドウでテスト・クライアントの出力を検証します。
予期される結果の詳細は、参照ドキュメントを参照してください。
スタンドアロン・アプリケーションで、プログラム的にADFビジネス・コンポーネントAPIを実行するテスト・クライアントが提供されない場合は、ビジネス・コンポーネント・ブラウザと呼ばれる対話式のテスト・ツールを使用します。
でスタンドアロン・アプリケーションを実行するには:
Oracle JDeveloperでアプリケーションを開きます。
JDeveloperのメイン・メニューから、「ファイル」→「開く」を選択します。
DemoのZIPファイルを抽出した場所に移動し、StandaloneExamplesディレクトリを開いたら、該当のスタンドアロン・アプリケーション・ディレクトリを開き、フォルダからアプリケーション・ワークスペース(.jws)を選択します。「開く」をクリックします。
「アプリケーション・ナビゲータ」でプロジェクト・フォルダを展開し、Application Sourcesフォルダのパッケージ内のアプリケーション・モジュールを特定します。
たとえば、図2-8は、ConditionalDeleteプロジェクトを展開してアプリケーション・モジュールAppModuleを選択し、ノードのツールチップが表示された例を示しています。
アプリケーション・モジュール・ノードを右クリックし、「実行」を選択します。
実行可能なアプリケーション・モジュール名は、2.4.2項から2.4.5項の表を参照してください。
アプリケーションを初めて実行し、新しいドメインを統合WebLogic Serverで開始する際に、「デフォルト・ドメインの構成」ダイアログが表示されます。ダイアログを使用して新しいドメインの管理者パスワードを定義します。入力するパスワードは8文字以上で、数字が含まれている必要があります。
ビジネス・コンポーネント・ブラウザを使用して、スタンドアロン・アプリケーションのビュー・インスタンスを操作します。
アプリケーションの詳細は、参照ドキュメントを参照してください。ビジネス・コンポーネント・ブラウザを使用してデータ・モデルを操作する方法の詳細は、6.3項「ビジネス・コンポーネント・ブラウザを使用したビュー・オブジェクト・インスタンスのテスト」を参照してください。
DevGuideExamples
アプリケーション・ワークスペースの2つのスタンドアロン・アプリケーションは、テスト・クライアントを使用して、プログラム的にADFビジネス・コンポーネント・フレームワークに関連する概念を示します。3つ目のアプリケーションは、ビジネス・コンポーネント・ブラウザで実行されたときに、フレームワークの機能を示します。
図2-9に、DevGuideExamples
アプリケーション・ワークスペースを開いた状態の「アプリケーション・ナビゲータ」を示します。
DevGuideExamples
スタンドアロン・アプリケーションのテスト・クライアントは、ADFビジネス・コンポーネントAPIのメソッドの実行方法を理解するための第一歩として最適です。また、データ・モデル・プロジェクトのビジネス・コンポーネント問合せをテストするために作成するテスト・クライアントの有益なサンプルにもなります。テスト・クライアントの操作の詳細は、6.4項「ビュー・オブジェクト・インスタンスのプログラムによるテスト」を参照してください。
注意: ADFビジネス・コンポーネントAPIは、ビジネス・コンポーネントのデフォルトの実行時動作を拡張するカスタム・クラスを生成する必要がある場合に使用できます。ADFビジネス・コンポーネント・フレームワークの詳細は、3.5項「実装アーキテクチャの概要」を参照してください。 |
表2-4に、DevGuideExamples
アプリケーション・ワークスペースのスタンドアロン・アプリケーションの説明を示します。これらのアプリケーションは、このガイドの第II部「ビジネス・サービスの構築」に含まれる章全体にわたって登場します。
表2-4 DevGuideExamplesアプリケーション・ワークスペースのスタンドアロン・アプリケーション
プロジェクト名 | 実行可能クラスまたはプロジェクト・ターゲット | ドキュメント |
---|---|---|
|
Application Sourcesフォルダの StoreFrontServiceアプリケーション・モジュールのクライアント・インタフェースのカスタム・メソッドを実行し、JDeveloperの「ログ」ウィンドウに結果を出力します。 |
テスト・クライアントの詳細は、9.10.1項「アプリケーション・モジュールのクライアント・インタフェースのプログラム的な操作方法」を参照してください。 クライアント・インタフェースのメソッドの詳細は、4.12項「エンティティ・オブジェクトおよびアソシエーションのプログラム的操作」を参照してください。 |
|
Application SourcesフォルダのAppModuleでビジネス・コンポーネント・ブラウザを起動します。 条件によってエンティティ行の削除を防止する生成済エンティティ・クラスのメソッドをオーバーライドします。ビジネス・コンポーネント・ブラウザで、「現在の行の削除」をクリックし、例外文を確認します。次に「新規行の挿入」をクリックし、新しい行を挿入します。 |
エンティティ実装クラス・ファイルで作成する |
|
ResourcesフォルダのTestClient.javaを実行します。 ビジネス・コンポーネントAPI |
コレクションの反復処理の詳細は、6.4.5項「行セットにおける行数計算の方法」を参照してください。 テスト・クライアントの作成方法の詳細は、6.4項「ビュー・オブジェクト・インスタンスのプログラムによるテスト」を参照してください。 |
ResourcesフォルダのTestClient2.javaを実行します。
|
ディテール・コレクションの反復処理の詳細は、5.6.6項「ビュー・リンク・アクセッサを使用したディテール・コレクションのアクセス方法」を参照してください。 テスト・クライアントの詳細は、6.4.6項「ビュー・リンク・アクセッサを使用したディテール・コレクションのアクセス方法」を参照してください。 |
|
ResourcesフォルダのTestClient3.javaを実行します。 強く型付けされた |
ビュー行アクセッサ属性を使用してコレクションを反復処理する方法の詳細は、39.3.1.3項「クライアントへのビュー行アクセッサの公開」を参照してください。 |
|
ResourcesフォルダのTestClientBindVars.javaを実行します。 バインド変数を使用して |
バインド変数設定の詳細は、5.10.6項「実行時に既存バインド変数値を設定する方法」を参照してください。 テスト・クライアントの詳細は、5.10.5項「実行時に名前付きバインド変数を含むWHERE句を追加する方法」を参照してください。 |
|
ResourcesフォルダのTestClientViewCriteria.javaを実行します。
|
ADFビジネス・コンポーネントのビュー基準APIの詳細は、5.11.9項「ビュー基準APIについて」を参照してください。 テスト・クライアントの詳細は、5.11.7項「プログラムによるビュー基準の作成方法」を参照してください。 |
AdvancedExamples
アプリケーション・ワークスペースで作成されたスタンドアロン・アプリケーションは、ADFビジネス・コンポーネント・フレームワーク全体に適用される高度な概念を示します。
図2-10に、AdvancedExamples
アプリケーション・ワークスペースを開いた状態の「アプリケーション・ナビゲータ」を示します。
表2-5に、AdvancedExamples
アプリケーション・ワークスペースのスタンドアロン・アプリケーションの説明を示します。このアプリケーション・ワークスペースの例は、第37章「ビジネス・コンポーネントの高度な手法」で説明されています。
表2-5 AdvancedExamplesアプリケーション・ワークスペースのスタンドアロン・アプリケーション
プロジェクト名 | 実行可能クラスまたはプロジェクト・ターゲット | ドキュメント |
---|---|---|
|
Application SourcesフォルダのTestClient.javaを実行します。 |
ビジネス・コンポーネントを拡張してオリジナルのカスタマイズ・バージョンを作成する方法の詳細は、37.8項「継承を使用する拡張コンポーネントの作成」を参照してください。 |
|
Application Sourcesフォルダの Application SourcesフォルダのProductModuleでビジネス・コンポーネント・ブラウザを起動します。 |
カスタム・メッセージ・バンドルでビルドイン・エラー・コードにかわりのメッセージ文字列を提供する方法の詳細は、37.7項「ビジネス・コンポーネントのエラー・メッセージのカスタマイズ」を参照してください。 |
|
実行できません。 ビジネス・コンポーネントAPI |
ビジネス・コンポーネントを置き換える方法の詳細は、37.9項「提供されるアプリケーションでの拡張コンポーネントの置換え」を参照してください。 |
|
実行できません。 独自に生成したADFビジネス・コンポーネント・クラスの変更に使用できるテンプレート・クラス・ファイルを提供します。 |
フレームワーク拡張の詳細は、37.1項「ADFビジネス・コンポーネント・フレームワークの拡張」を参照してください。 |
|
Application SourcesフォルダのTestClient.javaを実行します。 |
ビジネス・コンポーネントに関するカスタム宣言情報をフレームワーク拡張クラスの汎用コードに伝える方法の詳細は、37.2項「拡張クラスによるフレームワークの動作のカスタマイズ」を参照してください。 |
|
Application Sourcesフォルダの Application SourcesフォルダのTestClient.javaを実行します。 |
データベースのストアド・プロシージャとストアド・ファンクションを呼び出すビジネス・コンポーネント用のカスタムJavaクラスのコード記述方法の詳細は、37.4項「ストアド・プロシージャとストアド・ファンクションの呼出し」を参照してください。 |
AdvancedEntityExamples
アプリケーション・ワークスペースで作成されたスタンドアロン・アプリケーションは、ADFビジネス・コンポーネント・エンティティ・オブジェクトに適用される高度な概念を示します。
図2-11に、AdvancedEntityExamples
アプリケーション・ワークスペースを開いた状態の「アプリケーション・ナビゲータ」を示します。
表2-6に、AdvancedEntityExamples
アプリケーション・ワークスペースのスタンドアロン・アプリケーションの説明を示します。このアプリケーション・ワークスペースの例は、第38章「エンティティ・オブジェクトの高度な手法」で説明されています。
表2-6 AdvancedEntityExamplesアプリケーション・ワークスペースのスタンドアロン・アプリケーション
プロジェクト名 | 実行可能クラスまたはプロジェクト・ターゲット | ドキュメント |
---|---|---|
|
Application SourcesフォルダのProductsModuleでビジネス・コンポーネント・ブラウザを起動します。 |
関連するエンティティ・オブジェクト数の変更を保存するためにDML操作に起因するポスト順序を制御する方法の詳細は、38.8項「制約違反を防ぐためのエンティティ・ポスト順序の制御」を参照してください。 |
|
Application Sourcesフォルダの Application SourcesフォルダのProductsModuleでビジネス・コンポーネント・ブラウザを起動します。 |
基礎となる表に対する挿入、更新、および削除のアクセスをカプセル化するPL/SQL API PL/SQLパッケージのメソッドを呼び出すために、エンティティ・オブジェクトに対するデフォルトのDML処理イベントをオーバーライドする方法の詳細は、38.5項「PL/SQLパッケージAPIに基づくエンティティ・オブジェクト」を参照してください。 |
|
Application Sourcesフォルダの ResourcesフォルダのTestEntityPolymorphism.javaを実行します。ResourcesフォルダのTestViewRowPolymorphism.javaも実行します。 |
エンティティ・オブジェクト継承階層の作成の詳細は、38.7項「ビジネス・ドメイン・レイヤーでの継承の使用」を参照してください。 |
|
Application Sourcesフォルダの Application SourcesフォルダのPersonModuleでビジネス・コンポーネント・ブラウザを起動します。 |
カスタム・データ・タイプ作成の詳細は、38.1項「ドメインを使用したカスタム検証済データ型の作成」を参照してください。 |
AdvancedViewObjectExamples
アプリケーション・ワークスペースで作成されたスタンドアロン・アプリケーションは、ADFビジネス・コンポーネント・ビュー・オブジェクトに適用される高度な概念を示します。
図2-12に、AdvancedViewObjectExamples
アプリケーション・ワークスペースを開いた状態の「アプリケーション・ナビゲータ」を示します。
表2-4に、AdvancedViewObjectExamples
アプリケーション・ワークスペースのスタンドアロン・アプリケーションの説明を示します。このアプリケーション・ワークスペースの例は、第39章「ビュー・オブジェクトの高度な手法」で説明されています。
表2-7 AdvancedViewObjectExamplesアプリケーション・ワークスペースのスタンドアロン・アプリケーション
プロジェクト名 | 実行可能クラスまたはプロジェクト・ターゲット | ドキュメント |
---|---|---|
|
Application SourcesフォルダのAppModuleでビジネス・コンポーネント・ブラウザを起動します。 |
ビュー・オブジェクトへの挿入、更新および削除を制御するカスタム・メタデータ・プロパティの使用方法の詳細は、39.11項「挿入、更新および削除の宣言による禁止」を参照してください。 |
|
Application SourcesフォルダのAppModuleでビジネス・コンポーネント・ブラウザを起動します。
|
データベースへの不必要なトリップを避けるために、ビュー・オブジェクトを使用してメモリー内で検索とソートを実行する方法の詳細は、39.5項「行セットのメモリー内でのソート処理とフィルタ処理の実行」を参照してください。 |
|
Application SourcesフォルダのAppModuleでビジネス・コンポーネント・ブラウザを起動します。 |
新しい行の作成をサポートするために複数の更新可能エンティティを持つビュー・オブジェクトを作成する方法の詳細は、39.9項「複数の更新可能エンティティによるビュー・オブジェクトの作成」を参照してください。 |
|
Application SourcesフォルダのTestClientMultipleViewCriteria.javaを実行します。 |
プログラムによる問合せ結果のフィルタ方法の詳細は、39.4項「複数の名前付きビュー基準のプログラム的処理」を参照してください。 |
|
ResourcesフォルダのTestClientReadXML.javaを実行します。次に、ResourcesフォルダのTestClientWriteXML.javaを実行します。 |
問い合せたデータからXMLを作成する方法の詳細は、39.7項「XMLの読取りと書込み」を参照してください。 |
|
Application Sourcesフォルダの Application SourcesフォルダのOrdersModuleでビジネス・コンポーネント・ブラウザを起動します。 |
PL/SQLを使用し、カーソルを開いて問合せの結果を反復処理する方法の詳細は、39.8.4項「REF CURSORでのビュー・オブジェクトの作成方法」を参照してください。 |
Oracle JDeveloperでプロジェクトを開くと、各プロジェクト内のアーティファクトの確認を開始できます。Fusion Order Demoアプリケーションの開発環境は、StoreFrontService
とStoreFrontUI
の2つのプロジェクトに分けられています。
StoreFrontService
プロジェクトには、Webアプリケーションに製品データを表示できるようにするクラスが格納されます。図2-13は、StoreFrontService
プロジェクトおよびその関連ディレクトリを示しています。
StoreFrontService
プロジェクトには、次のディレクトリが格納されています。
アプリケーション・ソース
: 製品データのアクセスに使用するファイルが格納されます。格納されるのは、ビューへのデータバインドに使用するメタデータ・ファイルで、Oracle Application Development Framework (Oracle ADF)によって使用されます。
META-INF
: デプロイに使用するファイルが格納されます。
StoreFrontUI
プロジェクトには、バッキングBean、デプロイメント・ファイル、JSPXファイルなど、Webインタフェース用のファイルが格納されます。図2-14は、StoreFrontUI
プロジェクトおよび関連するディレクトリを示しています。
StoreFrontUI
プロジェクトには、次のディレクトリが格納されています。
アプリケーション・ソース
: マネージドBeanおよびバッキングBean、国際化に使用するプロパティ・ファイル、Oracle ADFによってバインド・データの表示に使用されるメタデータなど、Webクライアントで使用されるコードが格納されます。
Webコンテンツ
: JSPファイル、イメージ、スキン・ファイル、デプロイメント・ディスクリプタ、ライブラリなどのWebファイルが格納されます。
Fusion Order Demoアプリケーションを起動するには、StoreFrontUI
プロジェクトのhome.jspx
ページを実行します。デフォルトのターゲットのhome.jspx
ページを使用したアプリケーションの実行の詳細は、2.3項「Fusion Order DemoアプリケーションStoreFrontモジュールの実行」を参照してください。
店舗サイトに入ると、サイトを匿名で参照できます。このページを使用して、アカウントにログインせずに製品のカタログを参照できます。最初のビューには、サイトがお薦めする注目の商品が表示され、ここからすべての品目のカタログにアクセスできます。各製品は、製品名とともにイメージとして表示されます。ページ・リージョンは、サイトが提供する他の注目商品と製品カタログの領域に分割されています。
図2-15は、ホームページを示しています。
実装の詳細の検索場所
『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』で、データバインドされたWebページの作成方法を説明する項は次のとおりです。
Webページの構造の提供
ホームページでは、サイトの機能がリージョンに分割されており、ADF FacesテンプレートとJavaServer Faces (JSF)ページ・フラグメントの組合せを使用して実装されています。ADF Facesテンプレートとフラグメントにより、ADFデータバインド・コンポーネントを追加できます。データバインドされたユーザー・インタフェース・コンポーネントをWebページに追加する前に実行する手順の詳細は、20.1項「ADF Facesを使用したWebアプリケーション開発の概要」を参照してください。
Webページでの情報の表示
データ・バインディングをサポートするために、ホームページのタブ付きリージョンの注目商品の項目では、式言語(EL)式を使用して、宣言的なADFページ定義ファイルのADFデータ・コントロールの使用を参照します。ページ定義ファイルは、データバインドされたADF Facesコンポーネントを「データ・コントロール」パネルを使用してドラッグ・アンド・ドロップするとJDeveloperよって作成され、Webページまたはページ・フラグメントごとに一意です。ADFデータ・コントロールの使用により、データベースへの問合せが可能になり、PRODUCT_IMAGES
表からイメージを表示するために使用されるADF Facesイメージ・コンポーネントなど、データバインドされたADF FacesコンポーネントをJSFランタイムを使用して最終的にレンダリングできます。ADFページ定義ファイルを参照するデータバインドされたWebページの作成の詳細は、22.1項「データバインドされた基本的なページの作成の概要」を参照してください。
アプリケーションのエントリ・ポイントの管理
ホームページは、ADF無制限タスク・フローによってサポートされます。一般的に、Fusion Webアプリケーションでは、ADFコントローラのこの機能を利用してアプリケーションへのエントリ・ポイントを定義します。ホームページ全体およびそのページ・フラグメントの無制限タスク・フローでは、ホームページ、注文ページおよびユーザー登録のページを表示するためのビュー・アクティビティを記述し、チェックアウト・プロセスを管理するためのタスク・フロー参照を定義します。JDeveloperでは、コンポーネント・パレットからビジュアル設計要素をドラッグ・アンド・ドロップしてタスク・フローを作成できます。無制限タスク・フローを作成すると、各要素によってアプリケーションのアクティビティ間で制御を渡す方法を識別できます。ビュー・アクティビティはWebページまたはページ・フラグメントに関連付ける必要があるため、JDeveloperでは、Webページまたはフラグメント用のファイルをタスク・フロー・ダイアグラムから直接作成することもできます。タスク・フローの作成プロセスでは、宣言的な定義がADFタスク・フローの構成ファイルに追加されます。生成されるダイアグラムにより、アプリケーションのページおよび参照タスク・フローのビジュアル制御フロー・マップを操作できます。ADF無制限タスク・フローを使用してアプリケーションのエントリ・ポイントを指定する方法の詳細は、14.1項「ADFタスク・フローの概要」を参照してください。
製品の詳細情報を表示するには、ホームページの任意の製品の製品名のリンクをクリックします。製品情報は、折りたたみ可能なノードでカテゴリ別に並べて表示されます。
図2-16は、製品について表示できる詳細ダイアログを示しています。
ホームページの「統計」サブタブを選択すると、顧客による注目商品の注文数をグラフで表示することもできます。数量を簡単に比較できるように、グラフでは注文数の多い順に製品が並べられます。
図2-17は、注目商品の現在の注文状況の詳細を表示する棒グラフを示しています。
実装の詳細の検索場所
『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』で、製品詳細の参照をサポートするために使用されるコンポーネントの開発方法を説明する項は次のとおりです。
データ表示アクションのトリガー
データ・モデルからのデータを表示するため、Webページのユーザー・インタフェース・コンポーネントは、JSF式言語(EL)式を使用してADFモデル・レイヤー・バインディング・オブジェクトにバインドされます。たとえば、ユーザーがリンクをクリックすると、情報ダイアログが表示され、JSFランタイムによってダイアログのUIコンポーネントのEL式が評価され、ADFモデル・レイヤーから値が取得されます。設計時に「データ・コントロール」パネルを使用してデータ・コレクションの項目の属性をWebページにドラッグし、ADF Facesコンポーネントを選択して値を表示すると、関連データを表示および更新するために必要なすべてのJSFタグとバインディング・コードがJDeveloperによって作成されます。「データ・コントロール」パネルおよび宣言的なバインディング機能の詳細は、12.1項「ADFデータ・バインディングの概要」を参照してください。
グラフィカル形式でのデータの表示
JDeveloperでは、データバインドされたコンポーネントをJSFページ用に宣言的に作成できるため、ページのほとんどの内容をコードを見ずに設計できます。「データ・コントロール」パネルから項目をドラッグ・アンド・ドロップすることで、JDeveloperはADFバインディングを使用してADF Faces UIコンポーネントとADFデータ視覚化グラフ・コンポーネントをデータ・コントロールの属性に宣言的にバインドします。詳細は、26.1項「ADFデータ視覚化コンポーネントの作成の概要」を参照してください。
参照を開始するには、ホームページの「ショッピングの開始」タブをクリックします。このアクションにより、注目商品の詳細の表示に使用されるページのリージョンが製品のカテゴリ・ツリーを表示するリージョンに変更されます。ツリーのブランチ・ノードを閉じたり展開することで、製品カタログを構成する様々な製品カテゴリを表示できます。ツリーには、カテゴリ名のアルファベット順で製品カテゴリが表示されます。特定のカテゴリの製品をすべて表示するには、ツリーのカテゴリ・ノード(Electronics、Media、オフィスなど)をクリックします。サイトで製品情報のリージョンをリフレッシュすると、データベースに格納されている順で製品のリストが表示され、商品の画像と説明も表示されます。
図2-18は、Electronicsのカテゴリのすべての製品が表示されたホームページを示しています。
実装の詳細の検索場所
『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』で、表とフォームを使用してマスター/ディテール関係にあるオブジェクトを表示する方法を説明する項は次のとおりです。
マスター・コンポーネントとディテール・コンポーネントのドラッグ・アンド・ドロップ
「データ・コントロール」パネルを使用して、マスター/ディテール・データを表示するページを作成できます。「データ・コントロール」パネルに表示される、マスター/ディテール関係にあるオブジェクトの階層には、ADFアプリケーション・モジュールのデータ・モデルでの定義が反映されており、ディテール・オブジェクトがマスター・オブジェクトの子となります。そのために必要な操作は、コレクションをページにドロップして、使用するコンポーネントのタイプを選択することのみです。たとえば、Fusion Order Demoアプリケーションのhome.jspx
ページでは、af:tree
コンポーネントに製品カテゴリのマスター・リストが表示され、af:table
コンポーネントに製品のディテール・リストが表示されます。データ・モデルの詳細は、3.4項「UI対応データ・モデルの概要」を参照してください。マスター/ディテール関係にあるデータを表示する様々なタイプのページの詳細は、24.1項「マスター/ディテール・データの表示の概要」を参照してください。
表に表示されるデータのソート
ADF Faces表コンポーネントを作成する場合は、表をコレクション全体にバインドするか、データ・オブジェクトの範囲にコレクションからバインドします。これにより、列にデータを表示する特定のコンポーネントがコレクションの属性にバインドされます。イテレータ・バインディングによって各オブジェクトの適切なデータが表示され、表コンポーネントによって各オブジェクトが1行で表示されます。イテレータでorder-by問合せを実行して順序を決定する場合は、任意の列に対して「ソート」プロパティを設定できます。データ・モデル・プロジェクトのビュー・オブジェクトで定義されている問合せに対して、ORDER BY
句を指定することもできます。表コンポーネントをコレクションにバインドする方法の詳細は、23.1項「表の追加の概要」を参照してください。データ・モデルのデータをソートする問合せを作成する方法の詳細は、5.2項「単一のデータベース表からのビュー・オブジェクト行の移入」を参照してください。
製品カタログを検索するには、複数の方法があります。アコーディオン・パネルの 「検索」タブの選択アイコン(+記号)をクリックするか、メイン・リージョンの「取引の検索」タブをクリックすると開始できます。これらのいずれかをクリックすると、ホームページに両方のリージョンが同時に表示され、検索基準を入力して検索結果を表示できます。製品名や製品の説明など、すべての製品に共通の属性に対して簡易キーワード検索を実行するには、アコーディオン・パネルの 「検索」タブを使用します。ドロップダウン・リストから属性を選択して検索する場合、パネルには、検索基準を指定できる適切な入力コンポーネントを使用した検索フィールドが表示されます。たとえば、デフォルトの検索可能属性のProductIdの場合は、数値であることが予期されるため、検索フィールドでは製品IDを返すためのスピンボックス(ADF FacesコンポーネントinputNumberSpinBox
)を使用します。
図2-19は、IDが7の製品で戻される検索結果が表示されたホームページを示しています。
簡易検索を入力するかわりに、拡張検索機能を使用し、検索可能フィールドの組合せに基づいて、選択した製品の検索基準を定義して保存することができます。「拡張」リンクをクリックすると、「拡張検索」ダイアログが開きます。開発者が定義した「名前で製品を検索」などの保存済検索は、「保存済の検索」ドロップダウン・リストに表示されます。
図2-20は、簡易検索基準の「名前」が表示された「拡張検索」ダイアログを示しています。この検索基準は、保存済の検索の「名前で製品を検索」で定義しています。
「拡張検索」ダイアログで使用可能な開発者定義の保存済の検索に加えて、セッション中に有効な保存済検索をエンド・ユーザーが作成することもできます。「拡張検索」ダイアログに製品の検索基準を入力し、「保存」ボタンをクリックすると、「保存済の検索の作成」ダイアログが表示されます。
図2-21は、「拡張検索」ダイアログに入力した検索基準の保存方法を指定するために使用する「保存済の検索の作成」ダイアログを示しています。たとえば、検索名をTreo product name searchにすると、この検索名は「拡張検索」ダイアログの「保存済の検索」ドロップダウン・リストに表示されます。
保存済の検索は、パーソナライズ機能(「拡張検索」ダイアログの「保存済の検索のパーソナライズ」ドロップダウン・リスト)を選択して管理することもできます。
図2-22は、「保存済の検索」ドロップダウン・リストに検索基準の「名前で製品を検索」が表示されるように、「検索リストに表示」を有効にした「保存済の検索のパーソナライズ」ダイアログを示しています。これはユーザー定義の保存済基準ではないため、パーソナライズ・オプションは無効になっています。
実装の詳細の検索場所
『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』で、問合せの定義および問合せ検索フォームの作成方法を説明する項は次のとおりです。
表示する問合せ検索フォームの定義
問合せは、データベースに対して特定の問合せを定義するためにデータ・モデル・プロジェクトで作成するADFビジネス・コンポーネント・ビュー・オブジェクトに関連付けられています。特に、問合せコンポーネントは、ビュー・オブジェクトに定義されたビュー基準を図示したものです。ビュー基準が複数定義されている場合、各ビュー基準は「保存済の検索」ドロップダウン・リストから選択できます。これらの保存済の検索は、開発者によって設計時に作成されます。たとえば、Fusion Order Demoアプリケーションでは、ProductsVO
ビュー・オブジェクトに2つのビュー基準が定義されています。このビュー・オブジェクトに関連付けられている問合せを実行すると、両方のビュー基準が選択可能になります。詳細は、27.1項「検索フォームの作成の概要」を参照してください。
クイック検索フォームの作成
クイック問合せ検索フォームには、関連するデータ・コレクションから利用可能な検索可能属性のドロップダウン・リストとともに検索基準フィールドが1つ含まれます。デフォルトでは、関連するビュー・オブジェクトのすべての属性が検索可能属性となります。ビュー・オブジェクトで属性の「表示」コントロール・ヒントを「非表示」に設定すると、属性を除外できます。ユーザーは、選択された属性または表示されるすべての属性に対して検索を実行できます。検索基準フィールド・タイプは対応する属性タイプに自動的に一致します。詳細は、27.1.2項「クイック問合せ検索フォーム」を参照してください。
検索フォームの作成
問合せ検索フォームは、名前付きビュー基準項目を「データ・コントロール」パネルからページにドロップして作成します。ドロップするものとして、検索パネルのみ、検索パネルと結果表、検索パネルとツリー表のいずれかを選択できます。詳細は、27.2項「問合せ検索フォームの作成」を参照してください。
問合せ検索の結果の表示
通常は、問合せ検索パネルとともに結果表またはツリー表をドロップします。JDeveloperは自動的に結果表またはツリー表を問合せパネルと関連付けます。問合せパネルのみをドロップし、独立した結果コンポーネントが必要な場合は、問合せコンポーネントのresultComponentId
属性を結果コンポーネントの相対表現に設定できます。たとえば、Fusion Order Demoアプリケーションでは、home.jspx
ページにID searchT
を持つaf:table
が表示され、「拡張検索」ダイアログの結果IDにこのIDが割り当てられます。詳細は、27.2.2項「問合せ検索フォームを作成した後で結果コンポーネントを追加する方法」を参照してください。
店舗サイトのセキュアなリソースにアクセスするまで、製品カタログの参照とショッピング・カートの更新は匿名ユーザーとして自由に行うことができます。ただし、ホームページの上部に表示されている注文リンクまたは「チェックアウト」リンクをクリックすると、サイトを実行しているWebコンテナによってログイン資格証明を入力するように求められます。リンク先のページを表示するリクエストをサイトが完了する前に、有効なユーザー名とパスワードを入力する必要があります。
注意: 新規顧客の登録プロセスはFusion Order Demoアプリケーションでサポートされますが、ユーザーはセキュリティ実装に追加されません。このため、表2-3に示している事前定義済の顧客のユーザー名とパスワードを使用してログインする必要があります。 |
図2-23は、注文の詳細または店舗での購入品目を表示する前に表示されるログイン・ページ・フラグメントを示しています。デモでは、「ユーザー名」と「パスワード」にngreenbe
とwelcome1
をそれぞれ入力し、顧客としてログインします。
「ログイン」ボタンをクリックすると、入力内容とアイデンティティ・ストアに格納されている資格証明情報がWebコンテナによって照合されます。(登録済のユーザー名とパスワードを入力したため)Webコンテナによって認証できた場合は、選択したリンクで指定されたWebページにリダイレクトされ、認証できなかった場合は、アカウントを作成するか、認証されていないユーザーとして参照を続行するかを選択するように求められます。
実装の詳細の検索場所
『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』で、Oracle ADFリソースを保護するために、これらのリソースへのアクセスの際にログインを必須にする方法を説明する項は次のとおりです。
Oracle ADFリソースを保護するためのきめ細かいセキュリティ設定
ADFセキュリティは、Java Authentication and Authorization Service (JAAS)に基づくセキュリティ実装を提供するフレームワークです。JAASのOracle ADF実装は、ロールに基づいています。JDeveloperでは、これらのロールを定義して各ロールに基づいて権限を付与し、Oracle ADFリソースのセキュリティをきめ細かく設定します。JDeveloperでは、ADFバインド・タスク・フロー、またはADFページ定義に関連付けられている個々のWebページに対して、ポリシー・ストアを宣言的に定義できます。Oracle ADFリソースの保護の詳細は、30.5項「ADFセキュリティ・ポリシーの定義」を参照してください。
動的ユーザー認証のトリガー
ADFセキュリティを使用する場合、まだ認証されていないユーザーがanonymous-role
ロールに付与されていないページにアクセスしようとすると、認証が自動的にトリガーされます。ログインに成功すると、リクエストしたページの表示アクセス権を認証済ユーザーが持っているかどうかを確認するためのチェックが別に実行されます。詳細は、30.3.5項「ADF認証について」を参照してください。
Webページ内での権限チェックの実行
実行時には、ADFリソースに対して定義したセキュリティ・ポリシーが標準のJAAS権限認証を使用して施行され、ユーザーのアクセス権が決定されます。アプリケーションで必要とされる場合、式言語(EL)を使用してWebページ内でランタイム権限チェックを実行し、ユーザーに対して表示する必要がないコンポーネントを非表示にできます。たとえば、Fusion Order DemoアプリケーションのmyOrders.jpx
ページでは、式と値userGrantedPermission
を使用してユーザーの権限をテストしてから、アカウント番号を表示します。詳細は、30.11.1項「ADFセキュリティでの式言語(EL)の使用」を参照してください。
注文プロセスを開始するには、製品カタログを参照します。製品の横にある「追加」をクリックすると、サイトのショッピング・カート・リージョンが更新され、品目が表示されます。
図2-24は、単一品目を追加したカートの合計を示しています。合計には、カートに表示される品目の小計が表示されます。
カート内の品目を確認したら、ホームページ上部の「チェックアウト」リンクをクリックすると注文を完了できます。チェックアウトして注文を完了するには、2.5.2項「ログイン・プロセス」で説明されているように、認証ユーザーになる必要があります。
ログインすると、登録時に使用したユーザー名前や住所などの注文の詳細が記載されたチェックアウト・ページが表示されます。注文は、実行時に生成され、注文に割り当てられる注文情報番号で識別されます。注文の合計リージョンには、新しい注文に含まれる注文品目が表示されます。このリージョンは、ホームページのカートの合計と似ていますが、配送料が追加され、注文に適用される割引額が差し引かれて合計購入金額が算出される点が異なります。
図2-25は、4点の品目を合計した注文のチェックアウト・ページを示しています。
チェックアウト・ページでは、注文情報の詳細をカスタマイズできます。たとえば、注文の支払い方法の情報を表示して編集するには、支払いオプション・コード・フィールドの横の「編集」アイコンをクリックします。
図2-26は、支払いオプション・コード・フィールドの詳細ダイアログを示しています。
支払いオプション・ダイアログの多くのフィールドには、情報入力のためのユーザー・インタフェース・ヒントが表示されます。
図2-27は、「有効期限」フィールドに対してフォーマット・マスク(mm-yy)で定義されている日付入力の例(01/15)を示しています。
カード・タイプ・フィールドには、ドロップダウン・リストが表示され、クレジット・カード・タイプの有効な値リストから選択できます。
図2-28は、カード・タイプのフィールドの値リストを示しています。
支払いオプション・ダイアログを閉じて、チェックアウト・ページの「注文の送信」ボタンをクリックすると、注文書が作成され、プロセス・フローに送信されます。
StoreFrontモジュールを使用して発注したら、2つ目のFusion Order Demoアプリケーション・モジュールを使用して注文を処理できます。Oracle SOA Suiteの機能を示すために使用されるWebLogic Fusion Order Demoモジュールの詳細は、『Oracle Fusion Middleware Oracle SOA Suite開発者ガイド』を参照してください。Fusion Order Demoアプリケーションのこの部分の実行の詳細は、2.3項「Fusion Order DemoアプリケーションStoreFrontモジュールの実行」を参照してください。
実装の詳細の検索場所
『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』で、注文のチェックアウト・プロセスなどで使用されるフォームを開発する方法を説明する項は次のとおりです。
データバインドされた編集フォームの作成
ユーザーが入力した値を取得する基本フォームを作成する場合、JDeveloperでは、属性を個別にドロップする必要はなく、オブジェクトのすべての属性を入力フォームとして一度にドロップできます。値を表示するフォーム、ユーザーが値を編集できるフォームおよび値を収集するフォームを作成できます。たとえば、Fusion Order Demoアプリケーションでは、チェックアウト・ページorderSummary.jspx
の1つのフォームにはユーザー情報が表示され、もう1つのフォームにはユーザーの注文の出荷情報が収集されます。詳細は、22.6項「入力フォームの作成」を参照してください。
入力フォームのフォーマット・マスクの定義
フォーマット・マスクにより、ユーザーは必要なフォーマットに属性値を指定できます。このタスクを容易にするために、ADFビジネス・コンポーネントでは、データ・モデル・プロジェクトの属性に対してコントロール・ヒントと呼ばれる宣言的サポートを提供します。たとえば、Fusion Order Demoアプリケーションでは、ユーザーのクレジット・カード有効期限の割当てに使用されるCustomerPaymentOptionVO
ビュー・オブジェクトの属性は、フォーマット・マスク・ヒントとともに構成され、Payment Optionsページ・フラグメントpaymentOptionsDetails.jsff
で施行されます。入力フォーム・コンポーネントのフォーマット・マスク定義の詳細は、5.13項「ビュー・オブジェクトのコントロール・ヒントの定義」を参照してください。
選択リストの値リストの定義
ユーザー・インタフェースに表示される入力フォームでは、データバインドADF Faces選択コンポーネントを使用して、データ・コレクションの個々の属性の値リスト(LOV)を表示できます。この一般的な設計タスクを容易にするために、ADFビジネス・コンポーネントでは、データ・モデル・プロジェクトの属性のLOVの使用法を指定する宣言的な方法をサポートしています。たとえば、Fusion Order Demoアプリケーションでは、Payment Optionsページ・フラグメントpaymentOptionsDetails.jsff
に表示される3つのaf:selectOneChoice
コンポーネントは、CustomerPaymentOptionVO
ビュー・オブジェクトに対して設定されたLOV有効属性にバインドされます。属性に対するLOV構成の詳細は、5.12項「ビュー・オブジェクト属性の値リスト(LOV)での作業」を参照してください。
一時的なセッション情報の追跡
基礎となる表内の列に属性がマップされるデータ・モデル・プロジェクトを作成する場合、ADFビュー・オブジェクトには、(JavaやGroovy式などを使用して)計算された値を表示する一時属性や値ホルダーである一時属性を組み込むことができます。たとえば、Fusion Order Demoアプリケーションでは、注文の合計ページorderSummary.jspx
に、OrderVO
ビュー・オブジェクトで定義された式によって計算されたInvoiceTotal
属性の値が表示されます。一時属性をデータ・モデル・プロジェクトで定義する方法の詳細は、4.14項「エンティティ・オブジェクトへの一時属性および計算属性の追加」を参照してください。
サイトでは、チェックアウト・ページを表示する前に認証ユーザーになるように求められます。新規顧客が注文プロセスを完了できるように、サイトで顧客登録の方法をガイドする必要があります。開始するには、ホームページの登録用リンクをクリックし、顧客として登録をクリックします。
顧客の登録は、各ステップに専用の画面に従って進めます。各ステップの進行状況を表すために、登録ページには「基本情報」、「住所」、「支払いオプション」および「確認」のラベルが付いた一連のトレイン・ストップが表示されます。顧客登録の各プロセスを移動するには、トレイン・ストップをクリックするか、「次へ」ボタンをクリックします。
図2-29は、顧客の登録プロセスの最初の画面を示しています。「基本情報」トレイン・ストップは、選択されて有効になっており、現在のストップを示しています。次のトレイン・ストップ・アイコンの「住所」は有効になっていますが強調表示されておらず、「支払いオプション」および「確認」のトレイン・ストップ・アイコンは無効でグレー表示されています。これらのトレイン・ストップは、フローの順序に従ってアクティビティを完了する必要があることを示しています。
「基本情報」フォームに情報を入力する前に、「住所」トレイン・ストップをクリックします。ページには、次のステップに進む前に指定のフィールドに値を入力する必要があることを示すエラー・ダイアログが表示されます。
図2-30は、「基本情報」フォームでユーザー名と電子メール・アドレスを入力する必要がある旨のメッセージが表示されたエラー・ダイアログを示しています。
「OK」をクリックして、エラー・ダイアログを閉じます。ユーザー名と電子メール・アドレスを入力します。フォームに入力した電子メール・アドレスを確認します。
「次へ」をクリックし、次のタスクに進みます。住所画面が表示され、データベースに新しい住所レコードを作成するアイコン・ボタン(既存の顧客の場合は、既存の住所レコードを更新するアイコン・ボタン)を選択できます。
図2-31は、住所ラベル列のみがあり、行情報のない住所画面を示しています。ここでは新規顧客として情報を入力するので、現時点で住所レコードは存在していないため、これらの列の下に行は表示されません。
「新規」をクリックします。登録ページが変更されて住所入力フォームが表示されますが、現在のトレイン・ストップは「住所」のままです。
図2-32は、空の住所入力フォームを示しています。
アスタリスク記号(*)の付いたフィールドに、指定された住所情報を入力します。アスタリスク記号は、値の入力が必須であることを示しています。国情報もデータベースで必要になるため、ドロップダウン・リストから選択する必要があります。「保存して戻る」をクリックすると、新しい住所レコードがデータベースに作成されます。
図2-33は、新しい住所レコードの行情報が表示された住所画面を示しています。
これで、Fusion Order Demoアプリケーションのツアーを終了します。
実装の詳細の検索場所
『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』で、登録プロセスで使用されるADF Facesトレイン・コンポーネントなどの複雑なコンポーネントの使用方法を説明する項は次のとおりです。
バインドされたタスク・フローを使用したアクティビティのグループ化
すべてのFusion Webアプリケーションには、無制限タスク・フローが組み込まれており、アプリケーションへのエントリ・ポイントが含まれます。このため、アプリケーションでは、無制限タスク・フロー内のアクティビティからバインド・タスク・フローをコールできます。たとえば、Fusion Order Demoアプリケーションでは、バインド・タスク・フローcheckout-task-flow
がチェックアウト・プロセスのフローを制御し、登録プロセスのフローを制御する別のバインド・タスク・フローcustomer-registration-task-flow
をコールします。バインド・タスク・フローの詳細は、14.1項「ADFタスク・フローの概要」を参照してください。
バインド・タスク・フローと関連付けるトレイン・コンポーネントを使用した関連アクティビティの進行の表示
ADFバインド・タスク・フローで選択するアクティビティに基づいてトレイン・ストップを構成してから、JSFページにaf:train
コンポーネントを追加します。たとえば、Fusion Order Demoアプリケーションでは、バインド・タスク・フローcustomer-registration-task-flow
でページ・フラグメントbasicInformation.jsff
、defineAddresses.jsff
、paymentOptions.jsff
およびreviewCustomerInfo.jsff
の4つのトレイン・ストップを定義します。ページregister.jspx
にはフラグメントが表示され、各ページ・フラグメントには4つのストップを定義するアクティビティにバインドされたトレイン・コンポーネントが表示されます。バインド・タスク・フローとトレイン・ストップ定義のためのその使用方法の詳細は、18.10.3項「トレインの作成方法」を参照してください。
入力フォームで値入力を必須にする方法
入力フォームには、「データ・コントロール」パネルからドロップしたデータ・コレクションの属性が表示されます。このフォームで個々のコンポーネントのrequired
プロパティを設定し、属性値を必須にするかどうかを制御できます。required
プロパティのカスタマイズ方法の詳細は、22.2項「属性を使用したテキスト・フィールドの作成方法」を参照してください。または、表示コントロール・ヒント・プロパティを属性に直接設定し、ADFビジネス・コンポーネント・エンティティ・オブジェクトによって定義できます。エンティティ・オブジェクトは、データベース内の特定の表の行を表し、関連付けられた属性の変更を簡略化するためのデータ・モデル・コンポーネントです。コントロール・ヒントを使用して属性を必須にする方法の詳細は、4.10項「属性プロパティの設定」を参照してください。