個別のWebページやそのソース・コードを詳細に検討する前に、Oracle ADFサービス・リクエスト・デモ(SRDemo)・アプリケーションの機能について理解しておくと役に立ちます。
この章には、次の項が含まれます。
SRDemoアプリケーションは、家電製品販売会社の顧客がWeb上でサービス関連の問題を解決する際に役立つ、シンプルかつ完全なカスタマ・リレーションシップ・マネジメント対応のサンプル・アプリケーションです。16のWebページで構成されるこのアプリケーションは、次のフローに基づいて顧客の提出するサービス・リクエストを管理します。
顧客は、Web上のサービス・リクエスト・ポータルにアクセスしてログインします。
マネージャがログインしてリクエストを技術者に割り当てます。
また、ログイン中のマネージャは、サービスを提供するのに適した技術者が存在する製品のリストを参照および調整できます。
技術者がログインして割り当てられたリクエストを確認し、解決策を提示するか、顧客により詳しい情報の提供を求めます。
顧客がサイトに再度アクセスして自分のサービス・リクエストをチェックし、より詳しい情報を提供するか、技術者が問題を解決したことを確認します。
技術者はリクエストの表示に戻り、未解決のサービス・リクエストを参照し、顧客によって解決済であると確認されたリクエストを終了できます。
リクエストが未解決の間、マネージャは技術者の既存のリクエストを確認し、必要に応じてそのリクエストを別の技術者に割り当てます。
ログイン後の顧客、マネージャまたは技術者には、その役割に合ったアプリケーション機能のみが表示されます。
技術的には、このアプリケーションの設計はModel-View-Controller(MVC)アーキテクチャ・デザイン・パターンに準拠しており、その実装には次のような既存のJ2EEアプリケーション・フレームワークが使用されます。
ビジネス・サービス・インタフェースとデータ・モデルをカプセル化するOracle ADF Business Componentsアプリケーション・モジュール
データベース表を表すOracle ADF Business Componentsエンティティ・オブジェクト
JavaServer Facesのナビゲーション・ハンドラと宣言的なナビゲーション・ルール
標準的なJSF WebページにおけるOracle ADF Facesのユーザー・インタフェース・コンポーネント
データ・バインディングを提供するOracle ADF Modelレイヤー・コンポーネント
MVCスタイルのすべてのWebアプリケーションと同様に、SRDemoアプリケーションは、第1章「Oracle ADFアプリケーションの概要」で説明した基本的なアーキテクチャに基づいています。
このガイドでは、各レイヤーにおける実装を詳細に説明します。それぞれの章で、Oracle JDeveloper 10gの機能と、エンタープライズ4GL開発者がよく理解している技術を使用して、J2EE Webアプリケーションを構築するには、この機能をどのように活用すればよいかについて説明します。
SRDemoアプリケーションには、次の基本的な要件があります。
サンプル・スキーマ用に任意のエディションのOracleデータベースが必要です。
SRDemoのアプリケーション・スキーマに接続するため、SRDemoという名前のデータベース接続を作成する必要があります。更新センターを使用してSRDemoアプリケーションをインストールする場合、この接続は自動的に作成されます(3.2.3項「Oracle JDeveloperでのデータベース接続の作成」を参照)。
JDeveloperにJUnit拡張機能をインストールする必要があります。更新センターを使用してSRDemoアプリケーションをインストールする場合、この拡張機能も自動的にインストールされます(3.2.5項「JDeveloperでのOracle ADFサービス・リクエスト・デモのユニット・テストの実行」を参照)。
図3-1は、SRDemoアプリケーションのスキーマを示しています。
このスキーマは、次の5つの表と3つのデータベース順序および1つのPL/SQLパッケージで構成されています。表には、次のものが含まれます。
USERS: この表には、システムと対話するすべてのユーザー(顧客、技術者およびマネージャ)が格納されます。各ユーザーの電子メール・アドレス、姓と名、番地、市区町村、都道府県、郵便番号、国も格納されます。各ユーザーは、IDによって一意に識別されます。
SERVICE_REQUESTS: この表は、特定の製品に関する内部および外部のアクティビティ・リクエストを示します。すべての場合において、リクエストは、製品に関する問題の解決策に対応します。サービス・リクエストが作成されると、リクエストの日付、リクエストを提出した個人の名前、および関連製品がすべて記録されます。問題の短い説明も格納されます。リクエストが技術者に割り当てられると、技術者の名前と割当て日も記録されます。すべてのサービス・リクエストは、順序の割り当てられたIDによって一意に識別されます。
SERVICE_HISTORIES: 通常、サービス・リクエストごとに多くのイベントが記録されます。リクエストの作成日、リクエストを作成した個人の名前、およびイベントに関する特別な注意がすべて記録されます。サービス・リクエストに関連する内部的なやり取りも追跡されます。各サービス履歴は、サービス・リクエストとその順序番号によって一意に識別されます。
PRODUCTS: この表には、企業によって扱われるすべての製品が格納されます。製品ごとに、名前と説明が記録されます。製品の画像が使用可能であれば、それも格納されます。すべての製品は、順序の割り当てられたIDによって一意に識別されます。
EXPERTISE_AREAS: この表では、各技術者の専門技術の特定領域が定義されます。専門技術領域により、技術者の専門技術に基づいてサービス・リクエストが割り当てられます。
順序は、次のとおりです。
USERS_SEQ: 新規ユーザーのIDを移入します。
PRODUCTS_SEQ: 各製品のIDを移入します。
SERVICE_REQUESTS_SEQ: 各新規サービス・リクエストのIDを移入します。
PL/SQLパッケージCONTEXT_PKG
には、1つのプロシージャSET_APP_USER_NAME()
と1つのファンクションAPP_USER_NAME()
が含まれます。これは、アプリケーション・モジュールの内部から、ユーザーごとのデータベースの状態を設定するための簡単な例を示すために使用されます。
この項の手順では、Oracle JDeveloper 10g, Studio Editionのリリース10.1.3.xを実行していると仮定しています。アプリケーションは、これより前のリリースのJDeveloperでは動作しません。JDeveloperは、Oracle Technology Network(OTN)の次のURLでダウンロードできます。
http://www.oracle.com/technology/software/products/jdev/index.html
後述の手順を完了するには、Oracleデータベースにアクセスする権限と、新規ユーザー・アカウントを作成してサンプル・データを設定する権限を保持している必要があります。
SRDemoアプリケーションは、JDeveloperの拡張機能としてインストールできます。JDeveloperの更新の確認ウィザードを使用して、拡張機能をインストールするプロセスを開始します。
更新センターからSRDemoアプリケーションをインストールする手順:
JDeveloperを使用中の場合は、作業内容を保存して閉じます。後で、更新を完了するためにJDeveloperを再起動するよう求められます。
JDeveloperを起動して、「ヘルプ」→「更新の確認」を選択します。
ウィザードで、「次へ」をクリックし、「更新センターの検索」と内部自動更新が両方とも選択されていることを確認します。「次へ」をクリックします。
使用可能な更新の中から、Oracle ADF SRDemo Application(ADF BCバージョン)を見つけて選択します。「次へ」をクリックしてダウンロードを開始します。
更新センターには2つのバージョンのSRDemoアプリケーションが表示されている場合があります。「ADF BC」というラベルのあるアプリケーションのみが、このガイドで説明するテクノロジ・スタックを使用します。
プロンプトが表示されたら、JDeveloperを再起動します。
JDeveloperを再起動し、「はい」を選択してアプリケーション・ナビゲータでSRDemoアプリケーション・ワークスペースを開きます。
JDeveloperには、サンプル・データに使用するデータベースを識別するSRDemoアプリケーション・スキーマのインストール・ダイアログが表示されます。
SYSTEM DBAアカウントへのアクセス権限を保持しており、サンプル・データをインストールする場合は、サンプルのインストール・ダイアログに接続情報を入力します。
注意: 入力する接続情報の対象は、ローカル・データベースでもリモート・データベースでもかまいません。また、そのデータベースに既存のSRDemoスキーマが含まれているかどうかも無関係です。
SRDemoアプリケーションは、<JDEV_INSTALL>
/jdev/samples/SRDemoSampleADFBC
ディレクトリに配置されます。JDeveloperがSRDemoアプリケーション・ワークスペースを作成できるように、更新センターによって拡張機能JARファイル<JDEV_INSTALL>
/jdev/extensions/oracle.jdeveloper.srdemo.bc.10.1.3.jar
もインストールされます。
SRDemoスキーマは、<JDEV_INSTALL>/jdev/samples/SRDemoSampleADFBC/DatabaseSchema/scripts
ディレクトリに格納された一連のSQLスクリプトにより定義されます。スキーマは、更新センターを使用してアプリケーションをインストールすると自動的に作成されますが、手動での操作によりスキーマをインストールまたは再インストールする方法もいくつか用意されています。
注意: JDeveloperの更新センターを使用してSRDemoアプリケーションをインストールし、スキーマ・インストーラを実行した場合、次の手順は省略できます。詳細は、3.2.1項「Oracle ADFサービス・リクエスト・アプリケーションのダウンロードとインストール」を参照してください。 |
手動でSRDemoスキーマを作成するには、次の手順を実行します。
SRDemoスキーマを手動でインストールする手順:
JDeveloperで、SRDemoSampleADFBCワークスペースのBuildAndDeployプロジェクトのANTビルド・ファイルbuild.xml
を開き、タスクのポップアップ・メニューから「Antターゲットの実行」を選択し、setupDBOracle
タスクを実行します。
または
SQL*Plusで、SYSTEMなどのDBAとして接続し、build.sql
スクリプトを実行します。
SRDemoスキーマ内のデータを手動でリフレッシュする手順:
JDeveloperで、SRDemoSampleADFBCワークスペースのBuildAndDeployプロジェクトのANTビルド・ファイルbuild.xml
を開き、タスクのポップアップ・メニューから「Antターゲットの実行」を選択し、resetData
タスクを実行します。
スキーマがすでに存在する場合、前述のタスクを使用してSRDemoサンプル・データをリフレッシュできます。(setupDBOracleを使用して)スキーマとデータを完全に再作成するか、スキーマを再作成せずに、SRDemoデータ(resetDataタスク)のみを再移入できます。スキーマの再移入は、SYSユーザーとしてログインする必要がないため、サンプル・データをリフレッシュする最も簡単な方法です。スキーマを手動で再インストールする場合、タスクによるスキーマの再作成の前に、SYSTEM DBAアカウントのパスワードを入力する必要があります。
setupDBOracleタスクを使用してスキーマを手動でインストールすると、次の情報および質問が表示されます。
----------------------------------------------------------- SRDemo Database Schema Install 10.1.3 (c) Copyright 2006 Oracle Corporation. All rights reserved. ----------------------------------------------------------- This script installs the SRDemo database schema into an Oracle database. The script uses the following defaults: Schema name: SRDEMO Schema password: ORACLE Default tablespace for SRDEMO: USERS Temp tablespace for SRDEMO: TEMP DBA account used to create the Schema: SYSTEM If you wish to change these defaults update the file BuildAndDeploy/build.properties with your values -----------------------------------------------------------
この次の処理は、デモがどのようにインストールされているかと、JDeveloperのインストールの種類が完全と基本のどちらであるかに応じて変化します。
SRDemoアプリケーションが手動インストールされており、デフォルトの<JDEV_HOME>
/jdev/samples/SRDemoSample
ディレクトリに存在しない場合、JDeveloperのホーム・ディレクトリを尋ねるプロンプトが表示されます。
JDeveloperが基本インストール(JDKなしのインストール)である場合、JDK(1.5)の場所を尋ねるプロンプトが表示されます。
SRDemoアプリケーションが更新センターの使用により完全インストールのJDeveloperにインストールされている場合、作業はそのまま続行します。
次に、データベース情報の入力を求めるプロンプトが表示されます。2つのデフォルト・オプションのいずれかを選択するか、明示的に情報を指定します。
Information about your database: --------------------------------------------- Select one of the following database options: 1. Default local install of Oracle Personal, Standard or Enterprise edition Host=localhost, Port=1521, SID=ORCL 2. Default local install of Oracle Express Edition Host=localhost, Port=1521, SID=XE 3. Any other non-default or remote database install Choice [1]:
1または2を選択すると、インストールは最後まで自動的に進みます。3を選択した場合は、次の情報を入力する必要があります(大カッコ内はデフォルト値)。
Host Name or IP Address for your database machine [localhost]: Database Port [1521]: Database SID [orcl]:
最後に、DBAアカウントのパスワードを尋ねられます。
Enter password for the SYSTEM DBA account [manager]:
インストールはそのまま続行します。
サンプル・データ・スキーマに接続するには、SRDemoというデータベース接続を作成する必要があります。更新センターを使用してSRDemoアプリケーションをインストールした場合、この接続は自動的に作成されます。
注意: JDeveloperの更新センターを使用してSRDemoアプリケーションをインストールした場合、次の手順は省略できます。その場合、アプリケーションのダウンロード時にデータベース接続が自動的に作成されます。 |
サービス・リクエスト・スキーマに対する新規データベース接続を手動で作成するには、次の手順を実行します。
SRDemoアプリケーションのデータベース接続を手動で作成する手順:
JDeveloperで、「表示」→「接続ナビゲータ」を選択します。
「データベース」ノードを右クリックし、ポップアップ・メニューの「データベース接続の作成」を選択します。
「ようこそ」ページの「次へ」をクリックします。
「接続名」フィールドに、接続名としてSRDemo
と入力します。「次へ」をクリックします。
注意: 接続名(SRDemo
)は、大文字と小文字が区別されるため、SRDemoアプリケーションの正しい接続名と正確に一致するよう入力してください。
「認証」ページで、次の値を入力します。「次へ」をクリックします。
ユーザー名: SRDEMO
パスワード: Oracle
パスワードを配布: チェック・ボックスを選択
「接続」ページで、次の値を入力します。「次へ」をクリックします。
ホスト名: localhost
JDBCポート: 1521
SID: ORCL(またはXE)
注意: Oracle 10g Express Editionを使用している場合、デフォルトのSIDは「ORCL」ではなく「XE」です。
「接続のテスト」をクリックします。データベースが使用可能で接続の詳細が正しい場合は、次の手順に進みます。問題が発生した場合は、「戻る」ボタンをクリックして入力済の値をチェックします。
「終了」をクリックします。作成した接続が、接続ナビゲータの「データベース接続」ノードの下に表示されます。
これで、JDeveloperからスキーマを調査できます。接続ナビゲータで、「データベース」→「SRDemo」の順に開きます。スキーマのデータベース要素を参照し、それらの要素が3.1.2項「スキーマの概要」で説明したスキーマ定義と一致していることを確認してください。
更新センターを使用してSRDemoアプリケーションをインストールした場合、「ヘルプ」→Open SRDemo Application Workspaceを選択してアプリケーション・ワークスペースを開きます。
JDeveloperでアプリケーションを実行するには、図3-3のように、アプリケーション・ナビゲータでUserInterfaceプロジェクトを選択し、ポップアップ・メニューから「実行」を選択します。
ヒント: UserInterfaceプロジェクトでは、index.jspx がデフォルトの実行ターゲットとして定義されています。この情報は、UserInterfaceプロジェクトの「プロジェクト・プロパティ」ダイアログの「実行」ページに表示されます。これにより、プロジェクトがアクティブな状態でJDeveloperのツールバーの実行アイコンをクリックするか、プロジェクトを右クリックして「実行」を選択するだけで済みます。プロジェクトのプロパティを参照するには、ナビゲータでプロジェクトを選択して右クリックし、「プロジェクト・プロパティ」を選択します。 |
index.jspx
ページをJDeveloper内部から実行すると、Oracle Application Server 10gの埋込みOracle Containers for J2EE(OC4J)サーバーが起動し、デフォルト・ブラウザが開いて次のURLがリクエストされます。
http://130.35.103.198:8988/SRDemoADFBC/faces/app/SRWelcome.jspx
すべてが正しく処理されると、index.jspx
ページの単純なスクリプトレットのresponse.sendRedirect("faces/app/SRWelcome.jspx")
により、図3-4のようなSRDemoアプリケーションのログイン・ページにリダイレクトされます。
ヒント: DHCPを使用してIPアドレスを自動的に割り当てている場合、JDeveloperがデフォルト・ブラウザを起動し、埋込みOC4Jを開始した後に、Webページが見つからないというHTTPエラーが表示される場合があります。この問題を解決するには、ホスト名にlocalhostを指定します。「ツール」メニューの埋込みOC4Jの設定を選択し、「起動」タブの「埋込みOC4Jへの参照に使用されるホスト名またはIPアドレス」プリファレンスで「ホスト名の指定」オプションを使用するよう設定してから、値としてlocalhost を入力します。次に、130.35.103.198 のかわりにlocalhost を使用するよう前述のURLを編集します。 |
この開発者ガイドで扱っているWebページの概要は、3.3項「Oracle ADFサービス・リクエスト・デモのクイック・ツアー」を参照してください。また、クイック・ツアーを読むことでSRDemoアプリケーションで使用されているADFの機能について確認してください。クイック・ツアーには、このガイド内に記載されている実装の詳細へのリンクも含まれます。
JUnitは、Javaアプリケーションのリグレッション・テストを作成するための一般的なフレームワークです。Oracle JDeveloper 10gでは、JUnitテストの作成と実行がネイティブ・サポートされます。ただし、この機能は、個別にダウンロードしてインストールするJDeveloperの拡張機能です。JUnit拡張機能がインストール済かどうかを確認するには、JDeveloperのメイン・メニューで「ファイル」→「新規」を選択し、「新規ギャラリ」の「General」トップレベル・カテゴリに「Unit Tests (JUnit)」カテゴリがあるかどうかをチェックします。
JUnit拡張機能がまだインストールされていない場合は、JDeveloperの更新センターを使用してインストールします。
注意: JDeveloperの更新センターを使用してSRDemoアプリケーションをインストールした場合、次の手順は省略できます。その場合、アプリケーションのダウンロード時にJUnit拡張機能が自動的にインストールされます。 |
JDeveloperを使用中の場合は、作業内容を保存して閉じます。後で、更新を完了するためにJDeveloperを再起動するよう求められます。
JDeveloperを起動して、「ヘルプ」→「更新の確認」を選択します。
ウィザードで、「次へ」をクリックし、「更新センターの検索」と内部自動更新が両方とも選択されていることを確認します。「次へ」をクリックします。
使用可能な更新の中から、JUnit Integration 10.1.3.xxを見つけて選択します。「次へ」をクリックしてダウンロードを開始します。
プロンプトが表示されたら、JDeveloperを再起動します。
JDeveloperを再起動すると、新規拡張機能が「新規ギャラリ」の「Unit Tests」カテゴリに表示されます。
SRDemoアプリケーション・ワークスペースのUnitTests
プロジェクトには、図3-5のようにSRServiceAllTests.java
クラスで構成されたJUnitテストのスイートがあります。リグレッション・テスト・スイートを実行するには、アプリケーション・ナビゲータでSRServiceAllTests.java
クラスを選択し、ポップアップ・メニューから「実行」を選択します。このクラスはUnitTests
プロジェクトのデフォルトの実行ターゲットとして構成されているため、かわりに、アプリケーション・ナビゲータでプロジェクト自体を選択し、ポップアップ・メニューから「実行」を選択することもできます。
JUnitテスト・ランナー・ウィンドウが開かれ、スイート内のすべてのユニット・テストの実行結果が表示されます。各テストは、テスト・ケース別にグループ化され、左側にツリー表示されます。スイート内の各テストの横に、実行が成功したものには緑のチェックマーク・アイコンが表示されます。また、進捗インジケータでは、成功したテストの割合を視覚的にフィードバックします。
ヒント: JUnitの詳細は、Web上のhttp://www.junit.org/index.htm を参照してください。 |
SRDemoアプリケーションは、顧客が適切な技術者から製品サービス情報を得ることのできる実用的なWebポータル・アプリケーションです。顧客が新規サービス・リクエストを提出すると、サービス・マネージャは、そのリクエストを適切な専門技術を有する技術者に割り当てます。技術者は、未解決のリクエストを参照し、顧客が問題を解決する際に役立つと思われる情報でそのサービス・リクエストを更新します。
アプリケーションでは、3つのユーザー・ロール(顧客、マネージャおよび技術者)が区別されます。次からの各項で示すとおり、ユーザーが使用できるアプリケーション機能は、ユーザー・ロールに応じて変化します。
注意: この章の残りの部分では、SRDemoアプリケーションを実行した際に表示されるWebページの概要について説明します。各項の最後にあるリストから、このガイドの実装の詳細を簡単に検索できます。基礎となるビジネス・ロジックの概要は、このガイドの第II部にリストされている章をご覧ください。 |
たとえば、SRDemoアプリケーションでは、次のビジネス・ロジックを実装します。
ServiceRequestエンティティ・オブジェクト
割当て日は当月である必要があります。
割当て日はリクエスト日より後である必要があります。
リクエスト日は現在の日付にデフォルトで設定されます。
ステータス属性は、未処理、保留中、処理済のいずれかです。
ProdID値は、PRODUCTS表の有効な製品IDである必要があります。
サービス・リクエストを削除できるのは、マネージャのみです。
顧客がメモを追加すると、サービス・リクエストのステータスは未処理に変わります。
技術者がメモを追加すると、サービス・リクエストのステータスは保留中に変わります。
ServiceHistoryエンティティ・オブジェクト
行番号とサービス・リクエストIDが、新しいサービス・リクエストのメモのデフォルトとなります。
スタッフのみがサービス・リクエストのメモを非表示にすることができます。
サービス・リクエストのメモのタイプは、現在のユーザー・ロールに基づいてデフォルト設定されます。
顧客のログイン情報を次のように入力します。
ユーザー名: dfaviet
パスワード: welcome
Webポータル・ホームページに移動するには、「Sign On」ボタンをクリックします。
Webポータルに移動するには、「Start」ボタンをクリックします。
この操作により、顧客の未解決のサービス・リクエストのリストが図3-6のように表示されます。
顧客としてログインすると、リスト・ページには、2つのタブのみを含むメニューが表示されます(選択された「My Service Requests」のサブタブが表示されます)。
マネージャや技術者としてログインすると、追加のタブが表示されることに注意してください。
メニューの「All Requests」サブタブを選択すると、未解決と解決済の両方のリクエストが表示されます。
リクエストの説明を参照するには、希望するリクエストの行にあるラジオ・ボタンを選択し、「View」をクリックします。
同じ操作は、「Request」列のサービス・リクエスト・リンクをクリックしても実行できます。
顧客は、表示されるページを使用して、自分の入力情報でサービス・リクエストを更新できます。現在のサービス・リクエストにメモを追加するには、「Add a note」をクリックします。
図3-7は、顧客によって選択された未解決のサービス・リクエストと、追加されたメモを示しています。テキスト入力フィールドの上のボタンは、ユーザーによって操作されないように、作業が完了するまでグレー表示されることに注意してください。メモ・フィールドの下には、このマスター・サービス・リクエストに対する以前のメモのリストがあります。
実装の詳細の参照先
このガイドには、この項の次の主要機能に関する説明が含まれます。
動的ナビゲーション・メニューの使用: ユーザーがアプリケーションの目的のページにアクセスするためのメニュー・タブおよびサブタブは、各メニュー・コンポーネントをメニュー・モデル・オブジェクトにバインドし、メニュー・モデルを使用して適切なメニュー項目を表示することで宣言的に作成されます。19.2項「動的なナビゲーション・メニューの使用」を参照してください。
表のデータ項目の表示: サービス・リクエストのリストは、コレクションにバインドされたUI表コンポーネントによって書式設定されます。データ・コントロール・パレットを使用して、データ・バインドされたコンポーネントを簡単にページにドロップできます。14.2項「基本表の作成」を参照してください。
マスター/ディテール情報の表示: ユーザーは、1つのフォーム内で単一のサービス・リクエストのサービス履歴を参照できます。入力フォームは、データ・コントロール・パレットを使用して作成できます。15.3項「表およびフォームを使用したマスター/ディテール・オブジェクトの表示」を参照してください。
新規サービス・リクエストを作成するには、「New Service Request」タブを選択します。
この操作により、サービス・リクエストを作成するための2ステップのプロセス・トレインにおける最初のページが表示されます。図3-8は、この最初のページを示しています。
問題の説明を入力せずに「Continue」ボタンをクリックすると、検証エラーの処理方法を参照できます。
図3-9は、問題の説明を入力しない場合にダイアログ内に表示される検証エラーを示しています。
プロセス・トレインの次のページに進むには、問題の説明フィールドに何かテキストを入力してから、ドロップダウン・メニューの「Confirm」を選択するか、「Continue」ボタンをクリックします。
次の手順では、リクエストを送信する前に、入力した情報が正しいかどうかを確認します。図3-10は、最後のページを示しています。ページ最上部のプログレス・バーにより、「Confirm」がこの2ページにわたるサービス・リクエスト作成手順の最後のステップであることがわかります。
「Submit Request」ボタンをクリックすると、新規サービス・リクエストがデータベースに入力されます。新規エントリの作成後に、確認ページが表示されます。このページには、新規作成リクエストに割り当てられたサービス・リクエストIDが表示されます。
マネージャ・ロールとしてアプリケーション操作を続けるため、「Logout」メニュー項目をクリックしてログイン・ページに戻ります。
実装の詳細の参照先
このガイドには、この項の次の主要機能に関する説明が含まれます。
新規レコードの作成: ユーザーは、データをデータソースにコミットするフォームを使用してサービス・リクエストにメモを追加します。JDeveloperでは、レコード作成フォームをドロップする方法により、アプリケーション・モジュールで組込みの作成操作を簡単に起動できます。13.6項「入力フォームの作成」を参照してください。
複数ページ・プロセス: ADF FacesコンポーネントのprocessTrain
およびprocessChoiceBar
により、ユーザーに新規サービス・リクエスト作成の進行プロセスを示すことができます。19.5項「複数ページ・プロセスの作成」を参照してください。
ページでの検証エラーの表示: ADFアプリケーションでデータ入力検証を処理するには、複数の方法があります。この場合、ADF Modelレイヤーにより提供される検証ルールを使用できます。20.3項「検証の追加」を参照してください。
コマンド・ボタンの使用によるページ・ナビゲーションの処理: ユーザーが「Cancel」または「Submit」ボタンを選択すると、アプリケーションに適切なページが表示されます。ボタンのクリック後に表示されるページは、定義済の結果が設定されたナビゲーション・ルールにより決定されます。16.1項「ページ・ナビゲーションの概要」を参照してください。
マネージャのログイン情報を次のように入力します。
ユーザー名: sking
パスワード: welcome
Webポータル・ホームページに移動するには、「Sign On」ボタンをクリックします。
「Start」ボタンをクリックします。
この操作により、マネージャの未解決のサービス・リクエストのリストが表示されます。リスト・ページには、4つのメニュー・タブが表示されます(選択された「My Service Requests」タブのサブタブが表示されます)。
リクエストの説明を参照するには、希望するリクエストの行にあるラジオ・ボタンを選択し、「View」をクリックします。
図3-11は、未解決のサービス・リクエストを示しています。マネージャとしてログインすると、ページに「Edit」ボタンと「Delete Service History Record」ボタンが表示されます。これら2つの操作は、ロールに基づいており、マネージャのみが使用できます。
現在のサービス・リクエストを編集するには、「Edit」をクリックします。
図3-12は、サービス・リクエストの詳細編集ページを示しています。技術者に表示されるページとは異なり、マネージャは、このページでステータスと割当て済技術者を変更できます。
割り当てる別の技術者を検索するには、割当て済技術者の名前の横にあるアイコンをクリックします。
図3-13は、マネージャがスタッフ・メンバー(マネージャと技術者)を検索できる問合せ条件指定検索ページを示しています。このタイプの検索では、%記号や*記号などのワイルド・カード文字を使用できます。
このサービス・リクエストに別のスタッフ・メンバーを割り当てるには、適切なスタッフ名の横にある選択ボタンをクリックします。
選択したスタッフ・メンバーで未解決のサービス・リクエストを更新するには、「Select」ボタンをクリックします。
実装の詳細の参照先
このガイドには、この項の次の主要機能に関する説明が含まれます。
データ・バインドされたドロップダウン・リスト: ADF FacesコンポーネントのselectOneChoice
により、ユーザーは、サービス・リクエストのステータスを変更するか、検索対象のサービス・リクエストのタイプを選択することができます。19.7項「選択リストの作成」を参照してください。
レコードの検索: ユーザーは、Query-By-Example(QBE)検索フォームを使用して既存のサービス・リクエストを検索できます。このタイプの問合せの場合、ユーザーは、オブジェクトの既知の属性に基づいてフォームに条件を入力します。ワイルド・カード検索もサポートされます。18.3項「Webタイプ検索フォームの作成」を参照してください。
ポップアップ・ダイアログの使用: 必要に応じて、ユーザーが情報をページにポストバックできるような個別のダイアログに情報を表示できます。検索ウィンドウでは、ポップアップ・ダイアログが使用されます(検索機能はページに表示されません)。20.7項「エラー・メッセージの表示」および19.3項「ポップアップ・ダイアログの使用」を参照してください。
部分ページ・レンダリングの使用: ユーザーが懐中電灯アイコン(objectImage
コンポーネント付きのcommandLink
コンポーネント)をクリックすると、検索および名前選択を実行できるポップアップ・ダイアログが表示されます。名前が選択されると、ポップアップ・ダイアログは閉じ、選択された名前で「Assigned to」表示専用フィールドがリフレッシュされます(ただし、編集ページの他の部分はリフレッシュされません)。19.4項「部分ページ・レンダリングの有効化」を参照してください。
情報を格納するためのマネージドBeanの使用: 通常、ページでは、正しい情報を表示するために他のページからの情報を必要とします。この情報をページに直接設定する、つまり、本質的に情報をハードコードするかわりに、マネージドBeanに格納できます。たとえば、マネージドBeanを使用すると、SREditページを表示したページをアプリケーションで保存しておき、「Cancel」操作が発生したときに移動するページをその情報を使用して決定できます。17.2項「マネージドBeanを使用した情報の格納」を参照してください。
マネージャ専用ページにアクセスするには、「Management」タブを選択します。
この操作により、ADF Facesのマスター/ディテール・ツリー表コンポーネントにスタッフ・メンバーとそのサービス・リクエストが表示されます。図3-14は、技術者ノードが展開されたツリー表を示しています。
ツリー表の各子ノードは、詳細なサービス・リクエスト・レポートにリンクしています。子ノードのリンクDefroster is not working properly
をクリックすると、次のように詳細が表示されます。
各スタッフ名は、そのスタッフ・メンバーの割当て済スキルの詳細にリンクしています。スタッフ名のリンクAlexander Hunold
をクリックすると、次のように割当て済スキルのリストが表示されます。
スキル割当てページにアクセスするには、「Technician Skills」サブタブを選択します。
この操作により、スタッフ選択ドロップダウン・リストとADF Facesのシャトル・コンポーネントが表示されます。図3-15は、選択されたスタッフ・メンバーのスキルが移入されたシャトル・コンポーネントを示しています。
付属の「Move
」、「Move All
」、「Remove
」または「Remove All
」リンクを使用して、2つのリスト間で項目を交互に移動できます。マネージャは、変更をコミットする前に「Assigned Skills」リストに複数の変更を加えることができます。「Save skill changes」ボタンがクリックされるまで、リスト内の変更はコミットされません。
技術者ロールとしてアプリケーション操作を続けるため、「Logout」メニュー項目をクリックしてログイン・ページに戻ります。
実装の詳細の参照先
このガイドには、この項の次の主要機能に関する説明が含まれます。
シャトル・コントロールの作成: マネージャは、ADF FacesコンポーネントのselectManyShuttle
を使用して、技術者に製品スキルを割り当てることができます。このコンポーネントでは、2つのリスト・ボックスと複数のボタンがレンダリングされます。各ボタンを使用すると、一方の(使用可能項目の)リスト・ボックスから複数の項目を選択して、他方の(選択済項目の)リスト・ボックスに移動できます(逆方向の移動も可能です)。19.8項「シャトルの作成」を参照してください。
ロール・ベースの認可: リソースとユーザーに対して認可ポリシーを設定できます。たとえば、一部のユーザー・グループにのみ、特定のデータの参照、作成、変更や、特定のメソッドの起動を許可できます。または、ユーザーの所属するグループに基づいて、コンポーネントのレンダリングを抑止することも可能です。30.8項「プログラムによる認可の実装」を参照してください。
技術者のログイン情報を次のように入力します。
ユーザー名: ahunold
パスワード: welcome
Webポータル・ホームページに移動するには、「Sign On」ボタンをクリックします。
「Start」ボタンをクリックします。
この操作により、技術者の未解決のサービス・リクエストのリストが表示されます。リスト・ページには、3つのタブが表示されます(選択された「My Service Requests」タブのサブタブが表示されます)。
リクエストを参照するには、希望するリクエストの行にあるラジオ・ボタンを選択し、「View」をクリックします。
技術者は、表示されたページを使用して、自分の入力情報でサービス・リクエストを更新できます。現在のサービス・リクエストにドキュメントを添付するには、「Upload a document」をクリックします。
図3-16は、ファイル・アップロード・ウィンドウを示しています。(SRDemoアプリケーションでは現在、アップロードされたドキュメントの内容を表示することはできません。)
実装の詳細の参照先
ファイルのアップロード: サーブレット、JSP、JSF 1.1.xなどの標準のJ2EEテクノロジでは、ファイルのアップロードは直接サポートされません。ただし、ADF Facesフレームワークでは、inputFile
コンポーネントを介してコンポーネント・レベルでファイル・アップロードのサポートが統合されています。19.6項「ファイル・アップロード機能の提供」を参照してください。
アプリケーションのルック・アンド・フィールの変更: スキンを使用することで、アプリケーション内のADF Facesコンポーネントの外観をグローバルに変更できます。スキンは、アプリケーション全体に対して1つの場所に設定するだけでよいグローバル・スタイル・シートです。コンポーネントごとにスタイルを設定したり、ページごとにスタイルシートを挿入することなく、アプリケーション全体に対して1つのスキンを作成できます。22.3項「スキンの使用によるルック・アンド・フィールの変更」を参照してください。
ロケール固有UIの自動翻訳: ADF Facesコンポーネントでは、自動翻訳機能が提供されます。コンポーネントのスキン(このスキンにより、ルック・アンド・フィール以外にコンポーネント内のテキストも決定される)で使用されるリソース・バンドルは、28の言語に翻訳されます。たとえば、ブラウザでドイツ語を使用するよう設定している場合、コンポーネント内に含まれる任意のテキストは自動的にドイツ語で表示されます。22.4項「アプリケーションの国際化」を参照してください。