ここではウィザードを使用して、Oracle ADF Business Componentsを使用したアプリケーションとモデル・プロジェクトを素早く作成します。 カスタマイズを始める前に、2つのレイヤー値を持つカスタマイズ・レイヤーを定義し、カスタマイズ・クラスを作成してから、アプリケーション構成ファイルにこのクラスを登録します。
注:アプリケーション全体をダウンロードする場合、
詳細表示 アプリケーションを実行する前に次の処理を実行します。
ステップ1:スキーマのインストールに記載されたすべての指示に従います。
-
JDeveloperでアプリケーションを開きます。 アプリケーション・ナビゲータで「Application Resources」パネルを開きます。 「Connections」→「Database」の順に開きます。 「FOD」を右クリックし、「Properties」を選択します。 FODスキーマをインストールしたデータベースを指すよう、Host Name、Port、SIDのプロパティのみを変更します。 「Test Connection」をクリックし、接続可能であることを確認します。 接続に成功したら、「OK」をクリックします。
-
ステップ5:カスタマイズ・レイヤーの定義のサブステップ1から3までに記載された指示に従います。
-
アプリケーションを実行するには、ステップ13:アプリケーションの実行とパーソナライズに記載された指示に従います。
このチュートリアルのステップと例は、Fusion Order Demo(FOD)スキーマに含まれる表に基づいています。 このスキーマは、Oracle JDeveloper 11gに付属しているサンプル・アプリケーションのデータベースとして、さらに、このリリースの他の補足情報としても使用されます。
詳細表示
このスキーマをインストールしていると便利です。インストールは1回で済みます。 FODスキーマをすでにインストールしている場合は、このステップを飛ばして次のステップに進んでください。 スキーマをインストールするには、ユーザーを作成する権限を持つ特権(DBA)ユーザーへのアクセスとOracleデータベースも必要になります。 このスキーマは、Oracle 10gバージョン(またはそれ以降)のデータベースで有効です。 スキーマをインストールするには、zipファイルをダウンロードして展開し、Antを使用してインストールを実行します。
OTNからschema.zipファイルをダウンロードします。 
ファイルを適切な場所(c:\tempなど)に解凍します。
Fileメニューから「Open」を選択します。 ワークスペースc:\temp\Infrastructure\Infrastructure.jwsを開きます。
プロジェクトを移行するよう指示されたら、「Yes」をクリックして確定します。次に「OK」をクリックします。
アプリケーション・ナビゲータで、「MasterBuildScript」プロジェクトを開きます。 Resourcesの下にある「build.properties」をダブルクリックして、エディタで開きます。
build.propertiesファイルに適切な値を設定します(jdeveloper.homeと、jdbc.*およびdb.*のすべてを設定)。 他のプロパティは、すべてデフォルト値のままにしておきます。 demoユーザーの名前はFODにする必要があります。
関連する設定は、次のとおりです。
| 設定 |
説明 |
| jdeveloper.home |
JDeveloperをインストールしたフォルダの/jdeveloperディレクトリ(例:c:/JDeveloper_11/jdeveloper/) |
| jdbc.urlBase |
データベースのベースURL(例:jdbc:oracle:thin:@localhost) |
| jdbc.port |
データベースのポート番号(例:1521) |
| jdbc.sid |
データベースのシステム識別子(例:XEまたはORCL) |
| db.adminUser |
管理者権限を持つデータベース・ユーザー(例:system) |
| db.demoUser.tablespace |
FODユーザーをインストールする表領域名(例:USERS) |
MasterBuildScriptプロジェクトから「build.xml」ファイルを選択します。
Structureウィンドウで、「refreshSchema」ターゲットを右クリックして、「Run Target "refreshSchema"」を選択します。
入力の指示が表示されたら、管理者権限を持つデータベース・ユーザーのパスワードを入力します。
Antタスクの実行後、JDeveloper Logウィンドウにbuild successfulメッセージが表示されます。
エラーがある場合、データベースが実行中であるかどうか(SQL*Plusで接続を試みます)、build.propertiesファイルに設定した値が正しいかどうかを確認する必要があります。 また、指定したDBAユーザーにCREATE USER権限があることも確認してください。
メイン・メニューから「File」→「New」を選択します。 New Galleryで「General」カテゴリを開き、「Applications」を選択します。 Itemsリストから「Fusion Web Application (ADF)」を選択し、「OK」をクリックします。
JDeveloperアプリケーションは、組織構造の最上位レベルです。 アプリケーションの開発中に、操作しているオブジェクトの情報がここに格納されます。
詳細表示 同時に、プロジェクトとすべての環境設定が追跡記録されます。
Oracle JDeveloperアプリケーションでは、作成するアプリケーションのタイプ(WebアプリケーションやJavaアプリケーションなど)に応じて、あらかじめ構築されたテンプレートに基づいて、事前定義された環境のタイプを指定できます。 アプリケーション・テンプレートには適切な機能の組合せが事前に指定されているため、標準アプリケーションのプロジェクト構造を素早く作成できます。 また、使用している機能に合った選択肢のみが使用できるように、Oracle JDeveloperで実行する処理がアプリケーション・テンプレートによりフィルタリングされます。
このチュートリアルでは、データバインドOracle ADF Webアプリケーションの構築用に構成されたFusion Web Applicationテンプレートを使用します。 適切なテンプレートを使用してアプリケーションを作成した後も、新しいプロジェクトをアプリケーションに追加し、使用できるようにする機能を指定できます。 これを実行するには、アプリケーション・ナビゲータでアプリケーション名を右クリックして、「New Project」を選択します。 New Galleryでは、Itemsリストから任意のタイプのプロジェクトを選択できます。
-
この例に合わせるため、アプリケーション名としてCustomizeApp、アプリケーション・パッケージの接頭辞としてoracleを入力します。
初期プロジェクト構造(アプリケーション・ワークスペース内の名前付きプロジェクト・フォルダ)および追加されるアプリケーション・ライブラリは、選択したアプリケーション・テンプレートによって決まります。
詳細表示 機能の関連付けは、アプリケーション内のプロジェクトで定義します。
JDeveloperプロジェクトは、関連するファイルを論理的にグループ化するときに使用します。ここでは、ソース・ファイル、パッケージ、クラス、イメージ、およびプログラムで必要になるその他の要素が管理されます。 プロジェクトでは、プログラムのコンパイル時や実行時に使用するソース・パスや出力パスなどの環境変数を管理します。 また、プロジェクトには、コンパイラ、ランタイム、デバッグに関するオプションが用意されており、プロジェクトごとにこれらのツールの動作をカスタマイズできます。
ソース・コードのアクセス、変更、再利用を簡単にするために、複数のプロジェクトをアプリケーションに追加できます。 それぞれのプロジェクトに含まれるファイルは、たとえば多層アプリケーションにおける各層に相当する場合もあれば、複雑なアプリケーションにおける各サブシステムに相当する場合もあります。 これらのファイルはどのディレクトリに配置されていても、1つのプロジェクトに含めることができます。
デフォルト値のままにして、「Finish」をクリックします。
新しいアプリケーションを作成すると、Application Overviewウィンドウがデフォルトでエディタ・ウィンドウ領域に開きます。 このアプリケーションのオブジェクト作成では使用しないため、任意でこのウィンドウを閉じても問題ありません。
Fusion Order Demoスキーマを使用するため、インストールしたデータベースへの接続を確立します。
メイン・メニューからの「File」→「New」→「General」→「Connections」→「Database Connection」の順に選択し、「OK」をクリックしてCreate Database Connectionダイアログを開きます。

Create Connection Inオプションとして「Application Resources」を選択します。
接続の名前を入力し、接続タイプを選択して、ユーザー名とパスワードを入力します。 この例では、接続名にFOD、ユーザー名にfodを使用します。

Oracle JDBC設定を入力し、使用するデータベースのホスト、ポート、SIDを指定します。 「Test Connection」をクリックし、接続可能であることを確認します。 接続に成功したら、「OK」をクリックします。
アプリケーション・ナビゲータで「Application Resources」パネルを開きます。

Application Resourcesパネルで、「Connections」→「Database」ノードを開きます。

作成したデータベース接続(例:
FOD)が、アプリケーションのリソースとして
Connectionsノードに追加されました。
詳細表示
作成した接続ノードを開き、多数ある「+」アイコンをクリックしてスキーマとデータベース・オブジェクトを表示します。
データベース接続をアプリケーション・リソースに追加したら、必要に応じてApplication Resourcesパネルを閉じることで、アプリケーション・ナビゲータのProjectsパネルのサイズを大きくできます。
-
アプリケーション・ナビゲータで「Model」プロジェクトを右クリックし、「New」→「Business Tier」→「ADF Business Components」→「Business Components from Table」を選択して「OK」をクリックします。
Create Business Components from Tablesウィザードを使用すると、既存のデータベース・オブジェクトから、ビジネス・ドメイン・コンポーネント(エンティティ・オブジェクト、アソシエーション、ドメイン)のパッケージを容易に作成できます。
詳細表示また、必要に応じて、新しく生成したこれらのビジネス・ドメイン・コンポーネントから、データ・モデル・コンポーネント(ビュー・オブジェクト、ビュー・リンク、アプリケーション・モジュール)のデフォルト・パッケージを作成できます。
どのデータベース・オブジェクトをウィザードで選択するのかは重要です。 その選択により、生成されたビジネス・コンポーネントの関連付けが決定されます。 たとえば、外部キー列を通じて2つの表に1対多の関係が定義されている場合、ウィザードによって生成されるビジネス・コンポーネントにもこの関係が設定されます。 ビジネス・コンポーネントの用語では、1対多の関係はマスター/ディテール関係とも呼ばれます。
JDeveloperが提供するビジネス・コンポーネント・ウィザードを使用すると、このウィザードを使用して作成した任意のビジネス・コンポーネントを後から編集したり、新しいビジネス・コンポーネントを追加したりすることができます。
Create Business Components from Tablesウィザードは、ユーザー・インタフェースを作成しません(アプリケーションの"view"部分によって制御されます)。また、制御フローなどのその他のアプリケーション・ロジックも決定しません。 単純にデータの表示とアクセスを提供し、ビジネス・ロジックを実装します。
具体的には、Oracle ADF Business Componentsは、アプリケーションの"配管工事"をあらゆる側面から自動的に処理します。
独自のライブラリ・クラスのインスタンスのO/Rマッピングと永続性を自動的に処理します
SQLを使用したデータ取得の複雑なリクエストを実行できます
コミット時ロックまたは即時ロックを含むトランザクション管理を自動的に行います
複雑なビジネス・ロジックを実装するフレームワークを提供します
多くのJava EE設計パターンを自動的に実装します
アプリケーションのパフォーマンスとスケーラビリティを向上させる強力なキャッシングおよびデータ非アクティブ化システムを備えています
Initialize Business Components Projectダイアログで、FODが現在選択されているデータベース接続であることを確認します。 「OK」をクリックします。
-
ステップ1のEntity Objectsで「Query」をクリックし、左側のリスト・ボックスにオブジェクトを挿入します。

スキーマに多数の表が含まれる場合、若干の遅延が発生することがあります。
-
Availableリストから3つの表(「ORDERS」、「ORDER_ITEMS」、「PRODUCTS_BASE」)を選択し、「
」をクリックしてSelectedリストに移動します。 「Next」をクリックします。

-
ステップ2のEntity-based View Objectsで、Availableリストからビジネス・コンポーネント「Orders (ORDERS)」と「OrderItems (ORDER_ITEMS)」を選択し、「
」をクリックしてSelectedリストに移動します。 「Next」をクリックします。

-
オブジェクトは必要ないため、ステップ3のQuery-based View Objectsで「Next」をクリックしてこのステップをスキップします。
ステップ4のApplication Moduleでアプリケーション・モジュール名をFODAppModuleに変更し、「Finish」をクリックします。

「
」Save Allをクリックして作業内容を保存します。
Create Business Components from Tablesウィザードを完了すると、アプリケーション・ナビゲータのModelプロジェクトは次のように表示されます。
Modelプロジェクトには、作成されたビジネス・コンポーネント(エンティティ・オブジェクト、ビュー・オブジェクト、アソシエーション、ビュー・リンク、アプリケーション・モジュール)が表示されています。
詳細表示 ビジネス・コンポーネントをタイプ別にソートして表示するには、「
」Navigator Display Optionsメニューの「Sort By Type」を選択します。
ウィザードでの選択によって、データソースの機能を表す次のビジネス・ドメイン・コンポーネントが作成されました。
データを収集してクライアント・モデルに提供する次のデータ・モデル・コンポーネントが作成されました。
データソースからデータを収集する(通常、SQL問合せを使用)ビュー・オブジェクト(OrdersViewやOrderItemsViewなど)
ビュー・オブジェクトの結果セット間の関係(マスター/ディテール関係など)を表すビュー・リンク(OrderItemsOrdersFkLinkなど)
ビュー・オブジェクトおよびビュー・リンクへの単一のアクセス・ポイントを提供するアプリケーション・モジュール(FODAppModuleなど)
Model.jpxファイルはBusiness Components Projectオブジェクトであり、プロジェクトに含まれるすべてのビジネス・コンポーネントにより共有されるプロパティに使用されます。
アプリケーション・ナビゲータで「Data Controls」パネル→「FODAppModuleDataControl」を開くと、OrdersViewおよびOrderItemsViewコレクションが表示されます。
Data Controlsパネルは、データバインドUIコントロールをドラッグ・アンド・ドロップでユーザー・インタフェースに追加できるデータ・バインディング・ツールです。
Oracle Application Developer Framework(Oracle ADF)アプリケーションで、Oracle Metadata Servicesフレームワークを使用すると、カスタマイズ可能なアプリケーションを作成できます。
詳細表示
カスタマイズ可能なアプリケーションとは、特定のグループ(industryやsiteなど)の必要性に合わせて、アプリケーションに変更を加えられることを意味します。
メタデータ・コンテンツのカスタマイズをサポートするカスタマイズ・クラスおよびカスタマイズ・レイヤーを作成し、指定したレイヤーのコンテキスト内のメタデータをカスタマイズします。 このステップでは、カスタマイズ・レイヤーを作成します。 カスタマイズ・クラスは後で作成します。
-
メイン・メニューから「File」→「Open」の順に選択し、<JDEVELOPER_HOME>/jdeveloper/jdevにある「CustomizationLayerValues.xml」ファイルを見つけて開きます。

アプリケーションをカスタマイズするには、
CustomizationLayerValues.xmlファイルにカスタマイズ・レイヤーとその値を指定して、JDeveloperから認識されるようにする必要があります。
詳細表示
<JDEVELOPER_HOME>/jdeveloper/jdevにある「CustomizationLayerValues.xml」ファイルを使用すると、JDeveloperのカスタマイズ・レイヤーがグローバルに構成されます。 つまり、設計時に、アプリケーションの全域でこのレイヤーとレイヤー値を使用できます。 カスタマイズ・レイヤーはJDeveloperに対してグローバルに定義することも、アプリケーション固有のファイル内に定義することもできます。 アプリケーション固有のファイルを使用すると、グローバル・ファイルよりも優先されます。
アプリケーション・レベルまたはワークスペース・レベルでカスタマイズ・レイヤーを構成するには、概要エディタで「adf-config.xml」を開き、MDSタブの「Configure Design Time Customization Layer Values」リンクをクリックし、アプリケーション固有のCustomizationLayerValues.xmlファイルを作成します。

アプリケーション固有のファイルは、JDeveloperによってアプリケーション・レベルのディレクトリ(例:workspace-directory\.mds\dt\customizationLayerValues\CustomizationLayerValues.xml)に保存されます。 このアプリケーション固有のファイルには、アプリケーション・ナビゲータのApplication Resourcesパネル内にあるMDS DTフォルダからアクセスします。
グローバルのCustomizationLayerValues.xmlファイルとは違い、JDeveloperのCustomization Developerロールに切り替えると、アプリケーション固有のCustomizationLayerValues.xmlファイルを修正できます。 プロジェクト内のメタデータをカスタマイズするために使用されるCustomization Developerロールは、このチュートリアルの後半で使用します。 カスタマイズ機能はこのロールでのみ使用できます。
-
XMLエディタでsiteカスタマイズ・レイヤーの値を変更し、2つの設定可能なレイヤー値を追加します。 ここでは、提供されているサンプル・コードを使用できます。
たとえば、カスタマイズ・レイヤーの値site1とsite2に対する以下の2行のコードを
<cust-layer-value value="site1" display-name="Site One" id-prefix="1"/>
<cust-layer-value value="site2" display-name="Site Two" id-prefix="2"/>
以下のように変更します。
<cust-layer-value value="headquarters" display-name="Headquarters" id-prefix="1"/>
<cust-layer-value value="remoteoffices" display-name="Remote Offices" id-prefix="2"/>
カスタマイズ可能なアプリケーションは、特定のグループ(industryやsiteなど)の必要性に合わせて、複数のカスタマイズ・レイヤーを持つことができます。
詳細表示 それぞれのカスタマイズ・レイヤーは、複数のカスタマイズ・レイヤー値を持つことができます。 たとえば、カスタマイズ可能なアプリケーションのindustryレイヤーには、healthcareおよびfinancial業界に対する値を含めることができます。 各カスタマイズ・レイヤーは、内在するメタデータを変更する指示のセットを含むカスタマイズ・ドキュメントに対応します。 レイヤー化された変更は、リポジトリ内にアプリケーションのベース・メタデータとは別に保存され、管理されます。
<JDEVELOPER_HOME>/jdeveloper/jdevにあるCustomizationLayerValues.xmlファイルにはすべての定義されたカスタマイズ・レイヤー値と、JDeveloperインスタンスで使用される表示名が含まれます。 このレイヤーとレイヤー値は、設計時にアプリケーションの全域で使用できます。
この例では、siteカスタマイズ・レイヤーに2つの設定可能なレイヤー値(headquartersとremoteoffices)を定義します。
JDeveloperでアプリケーションにカスタマイズを適用する前に、1つのカスタマイズ・レイヤーと1つのレイヤー値を選択します。 作成するカスタマイズは、そのレイヤーおよびレイヤー値に対してのみ適用されます。
アプリケーションが実行されるとき、Oracle MDSは異なるカスタマイズ・レイヤーをアプリケーションのベース定義に適用します。 カスタマイズされたアプリケーションのカスタマイズ・コンテキストは、それに適用されるカスタマイズ・レイヤーのセットにより定義されます。 たとえば、カスタマイズされたアプリケーションには、industryレイヤーのfinancialレイヤー値と、siteレイヤーのheadquartersレイヤー値のカスタマイズを含めることができます。 複数のカスタマイズ・レイヤーは、adf-config.xmlに指定したカスタマイズ・クラスの順序と同じ優先順位で適用されます。
-
「
」Saveアイコンをクリックします。
-
アプリケーション・ナビゲータで「Model」プロジェクトを右クリックし、「New」→「General」→「File」を選択して「OK」をクリックします。

-
Create Fileダイアログでファイル名としてcustomization.propertiesを入力します。 Directoryフィールドで、Modelの後に\srcを追加します(例:<JDEVELOPER_HOME>\jdeveloper\mywork\CustomizeApp\Model\src)。 「OK」をクリックします。

-
テキスト・エディタで、siteカスタマイズ・レイヤーに定義したレイヤー値を追加します。 提供されているサンプル・コードをコピーし、貼り付けることができます。
#Configured values for the default layer values
#site=remoteoffices
site=headquarters
ランタイムの
customization.propertiesファイルには、アプリケーション内の1つまたは複数のカスタマイズ・レイヤーに定義された設定可能なレイヤー値が含まれます。
詳細表示
たとえば、このプロパティ・ファイルには、次のような、siteレイヤーおよびindustryレイヤー向けに定義された設定可能なカスタマイズ・レイヤー値を含めることができます。
#Configured values for the default layer values
industry=financial
#industry=healthcare
#site=remoteoffices
site=headquarters
接頭辞として#が付いていない値が、実行時にこのレイヤーのアクティブなレイヤー値になります。 カスタマイズされたメタデータを持つアプリケーションを実行する場合、カスタマイズ・クラスはアクティブな値をcustomization.propertiesから読み取り、その値を使用してカスタマイズ・コンテキストを決定します。 アクティブなレイヤー値に属する適切なカスタマイズのみが対応するリポジトリからロードされ、アプリケーションのベース・メタデータによりレイヤー化されて、目的とするカスタマイズされた表示用コンテンツを生成します。
「
」Save Allをクリックして作業内容を保存します。
customization.propertiesファイルがModelプロジェクトのApplication Sourcesフォルダの下に作成されます。

このファイルはこの後編集しないため、エディタ・ウィンドウでこのファイルを閉じても問題ありません。
詳細表示
-
アプリケーション・ナビゲータで「Model」プロジェクトを右クリックし、「New」→「General」→「Java Class」を選択して「OK」をクリックします。
Create Java Classダイアログに、次の値を入力します。
| フィールド |
値 |
| Name |
SiteCC |
| Package |
oracle.model.mycompany |
| Extends |
oracle.mds.cust.CustomizationClass |
デフォルト値のまま、「OK」をクリックします。

-
SiteCC.javaのソース・エディタで、カスタマイズ・レイヤーを構築するためのコードを追加します。 生成されているコードを削除し、提供されているサンプル・コードをコピーして貼り付けます。
package oracle.model.mycompany;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import oracle.mds.core.MetadataObject;
import oracle.mds.core.RestrictedSession;
import oracle.mds.cust.CacheHint;
import oracle.mds.cust.CustomizationClass;
public class SiteCC extends CustomizationClass {
private static final String DEFAULT_LAYER_NAME = "site";
private String mLayerName = DEFAULT_LAYER_NAME;
public SiteCC() {
}
public SiteCC(String layerName) {
mLayerName = layerName;
}
public CacheHint getCacheHint() {
return CacheHint.ALL_USERS;
}
public String getName() {
return mLayerName;
}
public String[] getValue(RestrictedSession sess, MetadataObject mo) {
// This needs to return the site value at runtime.
// For now, it's always null.
Properties properties = new Properties();
String configuredValue = null;
Class clazz = SiteCC.class;
InputStream is = clazz.getResourceAsStream("/customization.properties");
if (is != null){
try {
properties.load(is);
String propValue = properties.getProperty(mLayerName);
if (propValue != null){
configuredValue = propValue;
}
} catch (IOException e) {
e.printStackTrace();
}
}
return new String[] {configuredValue};
}
}
カスタマイズ・クラスは、Oracle Metadata Servicesフレームワークがアプリケーションのベース定義メタデータに適用するカスタマイズ・レイヤーを定義するために使用するインタフェースです。
詳細表示 それぞれのカスタマイズ・クラスは、カスタマイズ・レイヤーに対応します。 カスタマイズ・クラスは現在のコンテキストを評価し、String型の結果を返します。 このString型の結果を使用して、カスタマイズ・レイヤーが検索されます。
カスタマイズ・クラスでは、以下のものが提供されている必要があります。
名前
-
カスタマイズ・クラスを評価した後の値の配列。 通常、各レイヤーは1つの値を返します。 サンプル・コードでは、この配列は、実行時プロパティ・ファイルcustomization.propertiesから返されたカスタマイズ・レイヤーに相当します。 実際のアプリケーションで呼出しごとにプロパティ・ファイルを読み取ると、パフォーマンスに影響を与える可能性があることに注意してください。
カスタマイズ・クラスにより定義されたカスタマイズ・レイヤーのキャッシュ・スコープ
複数のカスタマイズ・レイヤーをアプリケーションのベース・メタデータの最上位に適用できます。 レイヤー化されたカスタマイズは、構成ファイルadf-config.xmlに指定されたカスタマイズ・クラスの順序によって定義される優先順位の順に適用されます。
アプリケーション・ナビゲータで「Model」プロジェクトを選択し、「
」Rebuildをクリックします。
Messages LogウィンドウにSuccessful compilationというメッセージが表示されます。
アプリケーション・ナビゲータで「Application Resources」パネルを開きます。 Descriptors→ADF META-INFにある「adf-config.xml」をダブルクリックして、概要エディタでファイルを開きます。

カスタマイズ・クラスはアプリケーション構成ファイル
adf-config.xmlに登録されている必要があります。
詳細表示
複数のカスタマイズ・クラスがある場合、カスタマイズ・レイヤーを適用する順序でクラスを追加する必要があります。 複数のカスタマイズ・レイヤーをアプリケーションのベース・メタデータの最上位に適用できます。 レイヤー化されたカスタマイズは、構成ファイルに指定したカスタマイズ・クラスの順序で決まる優先順位の順に適用されます。
-
左側の「MDS」をクリックしてから「
」をクリックします。

Edit Customization Classダイアログにsiteccと入力し、クラス「SiteCC (oracle.model.mycompany)」を選択して「OK」をクリックします。

カスタマイズ・クラス
oracle.model.mycompany.SiteCC.javaが、概要エディタのMDSページに表示されます。
詳細表示
adf-config.xmlの概要エディタで「Source」をクリックし、JDeveloperによって追加されたコードを参照します。 次のコードが表示されます。
<adf-mds-config xmlns="http://xmlns.oracle.com/adf/mds/config">
<mds-config xmlns="http://xmlns.oracle.com/mds/config" version="11.1.1.000">
<cust-config>
<match path="/">
<customization-class name="oracle.model.mycompany.SiteCC"/>
</match>
</cust-config>
</mds-config>
</adf-mds-config>
<mds-config>内の<cust-config>要素はカスタマイズ・クラスと、カスタマイズされたアプリケーションでの優先順位を指定します。
たとえば、次のコードはindustryレイヤーのカスタマイズがベース・アプリケーションに適用されてから、siteレイヤーのカスタマイズが適用されることを示しています。
<adf-mds-config xmlns="http://xmlns.oracle.com/adf/mds/config">
<mds-config xmlns="http://xmlns.oracle.com/mds/config" version="11.1.1.000">
<cust-config>
<match path="/">
<customization-class name="oracle.model.mycompany.IndustryCC"/>
<customization-class name="oracle.model.mycompany.SiteCC"/>
</match>
</cust-config>
</mds-config>
</adf-mds-config>
「
」Save Allをクリックして作業内容を保存します。
カスタマイズ・クラスの作成ステップが完了すると、アプリケーション・ナビゲータの表示は次のようになります。
詳細表示
カスタマイズ・クラスSiteCC.javaは、ModelプロジェクトのApplication Sourcesフォルダ内のパッケージoracle.model.mycompany内に作成されます。
これらのファイルをアプリケーション内で今後編集することはないため、エディタ・ウィンドウに含まれるすべてのファイルを閉じても問題ありません。
カスタマイズを適用するためのベース・アプリケーションを準備し、後からカスタマイズできるように2つのベース・ページを作成します。
アプリケーション・ナビゲータで「ViewController」をダブルクリックし、Project Propertiesダイアログを開きます。
-
「ADF View」を選択してから「Enable Seeded Customizations」を選択し、「OK」をクリックします。

アプリケーションのシード済みカスタマイズとは、特定のグループ(industryやsiteなど)の必要性に合わせて、一般化されたアプリケーションを使用したり、変更を加えたりするプロセスのことです。
詳細表示
プロジェクトのプロパティでシード済みカスタマイズが有効になっている場合、JDeveloperはOracle Metadata Servicesフレームワークを使用して、メタデータ・リポジトリにカスタマイズされたメタデータ・オブジェクトを保存しておき、実行時にこれを取得してカスタマイズされたアプリケーションを表示します。
「OK」をクリックすると、JDeveloperはweb.xmlを更新してOracle MDSカスタマイズの使用に必要な次の構成要素を追加します。
<context-param>
<param-name>oracle.adf.jsp.provider.0</param-name>
<param-value>oracle.mds.jsp.MDSJSPProviderHelper</param-value>
</context-param>
<filter>
<filter-name>ADFLibraryFilter</filter-name>
<filter-class>oracle.adf.library.webapp.LibraryFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>ADFLibraryFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
<servlet>
<servlet-name>adflibResources</servlet-name>
<servlet-class>oracle.adf.library.webapp.ResourceServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>adflibResources</servlet-name>
<url-pattern>/adflib/*</url-pattern>
</servlet-mapping>
-
アプリケーション・ナビゲータで「ViewController」プロジェクトを右クリックし、「New」→「Web Tier」→「JSF/Facelets」→「ADF Task Flow」を選択して「OK」をクリックします。

Oracle ADFタスク・フローは、アプリケーションでアクティビティ間の制御フローを定義するための再利用可能なユニットです。
詳細表示 アプリケーション内の各タスク・フローには、アプリケーションのナビゲーション・グラフの一部が含まれており、これによりユーザーはタスクを完了できます。 たとえば以下の図は、CreateとConfirmという2つのアクティビティのある簡単なタスク・フローを示しています。 アクティビティ間の矢印は、制御フロー・ケースと呼ばれています。 アクティビティには、ページの表示、メソッドの呼出し、または他のタスク・フローの呼出し操作などがあります。
-
Create ADF Task Flowダイアログ・ボックスに、次の値を入力または選択します。
| フィールドまたはオプション |
値 |
| File Name |
orders-task-flow-definition.xml |
| Create as Bounded Task Flow |
選択する |
| Create with Page Fragments |
選択しない |

Oracle ADFバウンド・タスク・フローは、再利用可能なタスク・フローの特殊なフォームであり、必ずデフォルトのアクティビティを指定します。これはバウンド・タスク・フローの開始時に即座に実行される単一のエントリ・ポイントになります。
詳細表示 バウンド・タスク・フローには入力パラメータ、戻り値、再入力を指定できます。
Create Task Flowダイアログでは、アンバウンド・タスク・フローも作成できます。 アンバウンド・タスク・フローは、どのバウンド・タスク・フローにも含まれない、アプリケーション内のすべてのアクティビティおよび制御フローで構成されています。
-
デフォルト値のまま、「OK」をクリックします。
JDeveloperはデフォルトで、タスク・フロー・ダイアグラマにバウンド・タスク・フローを開きます。

ダイアグラムは最初、空白のキャンバスです。 ダイアグラマが現在のエディタでない場合、エディタ・ウィンドウの一番下にある「
Diagram」タブをクリックします。
詳細表示
もっとも重要なタスク・フロー・アクティビティ・タイプはViewです。ViewタイプはJSFページを表します。 この例では、コンポーネント・パレットを使用してタスク・フロー・ダイアグラム上にViewアクティビティと制御フロー・ケースを作成し、BrowseページとMoreページの間をナビゲートできるようにします。
-
コンポーネント・パレットで、ADF Task FlowページのComponentsパネルの Activitiesセクションに対して、ダイアグラム上に「
」Viewをドラッグ・アンド・ドロップし、ビュー・アクティビティの名前を変更します。 次のビュー・アクティビティ名を使用して、このページに対して同じ操作を2回繰り返します。
Browse
More

-
コンポーネント・パレットのComponentsパネルのControl Flowセクションで、「
」Control Flow Caseをクリックします。 ダイアグラムで「Browse」ページ・アイコンをクリックしてから、「More」ページ・アイコンをクリックします。 制御フロー・ケース要素の名前をgoMoreに変更します。
コンポーネント・パレットで、「
」Control Flow Caseを再度クリックします。 ダイアグラムで「More」ページ・アイコンをクリックしてから、「Browse」ページ・アイコンをクリックします。 制御フロー・ケース要素の名前をgoBrowseに変更します。

デフォルト・アクティビティはBrowseであり、このことは
Browseページ・アイコンの緑色の背景から分かります。
詳細表示 Browseアクティビティは省略されたOrdersフォームと、すべての注文レコードを表示するためのナビゲーション・ボタンを表示します。 Moreアクティビティは、省略されたOrdersフォームに表示された現在の注文に対して、完全なOrdersフォームを表示します。
タスク・フロー・ダイアグラム上の2つのページ・アイコンには最初、黄色の警告記号が表示されており、ビュー・アクティビティに物理的なページ・ファイル(例:Browse.jsf)が関連付けられていないことが示されています。 ページ・ファイルが作成されると、黄色の警告記号はページ・アイコン上に表示されなくなります。
ダイアグラマを使用したタスク・フロー・ダイアグラムの作成時にJDeveloperによって追加されたメタデータを表示するには、エディタ・ウィンドウで「Source」をクリックし、XMLエディタに切り替えます。
タスク・フロー定義の最上位要素は<adfc-config>であり、これはすべてのOracle ADF Controller XMLソース・ファイルに最初に表示される要素です。 バウンド・タスク・フロー内のアクティビティと制御フローは、<adfc-config>内の<task-flow-definition>メタデータ要素内に定義されます。
バウンド・タスク・フローは<task-flow-definition>のid属性で識別されます。 <control-flow-rule>および<control-flow-case>要素は、各Viewアクティビティの制御フロー・ルールを指定します。 タスク・フロー内のビュー・アクティビティに対応する<view>要素には、まだ、物理的なJSFページ・ファイルを特定するメタデータが関連付けられていません。
ダイアグラムで「Browse」ページ・アイコンをダブルクリックし、Create JSF Pageダイアログを開きます。
-
ドキュメント・タイプとして「Facelets」を選択し、Browse.jsfというデフォルトのファイル名を受け入れます。

Page Layoutページで「Blank Page」を選択します。 Managed Beanページで、「Do Not Automatically Expose UI Components in a Managed Bean」を選択します。
Create JSF Pageダイアログでは、新しいページのルック・アンド・フィールの一部を任意で定義でき(
PageLayoutタブ)、また、ページ上のコンポーネントをマネージドBeanで公開するかどうかを指定できます(
Managed Beanタブ)。
詳細表示
デフォルトでは、コンポーネントはマネージドBeanに対して公開されていません。 コンポーネントをマネージドBeanにバインドするには、ダイアログ内のManaged Beanページでいずれかの自動バインディング・オプションを選択します。 自動バインディング・オプションを使用すると、JDeveloperは、新しく作成されるすべてのJSFページに対してバッキングBeanを作成し、ページ内のすべてのUIコンポーネントをバッキングBean内の該当プロパティに関連付けることで、最終的にプログラム操作できるようにします。
ただし、ページにOracle ADFバインディングを追加する予定がある場合は、自動バインディング機能を使用しないでください。 自動バインディング機能を使用した場合、Oracle ADFバインディングを追加した後で、マネージドBeanバインディングを削除する必要があります。
「OK」をクリックします。
JDeveloperはデフォルトでビジュアル・エディタに新しいJSFページを表示します。

次の2つの構成要素を
web.xmlに追加する必要があります。
詳細表示
<context-param>
<param-name>com.sun.faces.faceletCache</param-name>
<param-value>
oracle.adfinternal.view.faces.facelets.rich.MDSFaceletCache
</param-value>
</context-param>
<context-param>
<param-name>javax.faces.FACELETS_RESOURCE_RESOLVER</param-name>
<param-value>
oracle.adfinternal.view.faces.facelets.rich.MDSFaceletsResourceResolver
</param-value>
</context-param>
これらの要素は、JSF FaceletsページでのOracle MDSカスタマイズに必要です。
-
コンポーネント・パレットのADF FacesページのLayoutパネルで、Interactive Containers and Headersセクションから「
」Panel Splitterをドラッグしてビジュアル・エディタの空白ページにドロップします。
プロパティ・インスペクタのCommonセクションで、Orientation属性値をverticalに変更します。

コンポーネント・パレットのLayoutパネルで、「
」Panel Group Layoutを、先ほど追加したPanel Splitterコンポーネントのfirstファセットにドラッグ・アンド・ドロップします。
ビジュアル・エディタにコンポーネントをドラッグする際、Facet firstという名前の長方形がページに表示されます。これは、ドラッグしているコンポーネントがこのターゲット・コンポーネント内に挿入されることを意味します。

プロパティ・インスペクタで、Layout属性の値をscrollに変更します。
アプリケーション・ナビゲータで、「Data Controls」パネルを開き、「FODAppModuleDataControl」を開きます。

Data Controlsパネルは、アプリケーション・ナビゲータの一部であるOracle JDeveloperのデータ・バインディング・ツールです。
詳細表示 Data Controlパネルは、使用可能なビジネス・オブジェクト、メソッド、およびデータ・コントロール操作の階層表示を通じて、ビジネス・コンポーネントのデータ・モデル構造を表示します。
Data Controlsパネルは、マスター・データ・コレクションの下にネストしたディテール・データ・コレクションを表示することで、アプリケーション・モジュールのデータ・モデルにおけるマスター/ディテール階層を表します。 たとえば、注文と注文項目のマスター/ディテール関係を示すOrdersView1コレクションの子ノードとしてOrderItemsView2コレクションが表示されます。
Data Controlsパネルを使用すると、一連のドラッグ・アンド・ドロップ作業だけでUIを設計できます。 パネルからページに選択されたデータ・オブジェクト(コレクションまたは属性)をドロップすると、使用できるUIコントロールのリストが表示されます。 選択したデータ・オブジェクトの表示に適したUIコントロールだけがリストに表示されます。 たとえば、Data Controlsパネルからコレクションをドラッグする場合、UIの選択肢に表コントロールやフォーム・コントロールは含まれますが、テキスト入力および出力コントロールは含まれません。
Data Controlsパネルからページ上に「OrdersView1」コレクションをドラッグし、Createコンテキスト・メニューから「Form」→「ADF Read-only Form」を選択すると、OrdersViewビュー・オブジェクトのデータを表示する読取り専用フォームが作成されます。
先ほど追加したPanel Group Layoutコンポーネントに、「OrdersView1」をドラッグ・アンド・ドロップします。 Createコンテキスト・メニューから「Form」→「ADF Read-only Form」を選択します。

Edit Form Fieldsダイアログで、OrderId、OrderDate、OrderShippedDate、OrderStatusCode、OrderTotalを除くすべてのフィールドを選択します。 「
」をクリックして、選択したフィールドを削除します。
「Include Navigation Controls」と「Include Submit Button」を選択して、「OK」をクリックします。

ビジュアル・エディタで「Submit」ボタンを選択します。

プロパティ・インスペクタのCommonセクションで、Textの値をMore Detailsに変更します。 Actionフィールドのドロップダウン・リストから「goMore」を選択します。

エディタ・ウィンドウで、ドキュメント・タブ「orders-task-flow-definition.xml」を選択して、ダイアグラムを前面に表示します。 「More」ページ・アイコンをダブルクリックして、Create JSF Pageダイアログを開きます。

-
Document Typeで「Facelets」を選択します。 More.jsfというデフォルトの名前はそのままにします。 Page Layoutページで「Blank Page」を選択します。 Managed Beanページで、「Do Not Automatically Expose UI Components in a Managed Bean」を選択します。 「OK」をクリックします。

-
Data Controlsパネルから「OrdersView1」をドラッグし、ビジュアル・エディタ内の空白ページにドロップします。 「Create」コンテキスト・メニューから「Form」→「ADF Read-only Form」を選択します。 Edit Form Fieldsダイアログで、すべてのデフォルト設定を受け入れて「OK」をクリックします。
コンポーネント・パネルのGeneral Controlsパネルで、「
」ButtonをStructureウィンドウ内のaf:formにドラッグ・アンド・ドロップします。

プロパティ・インスペクタのCommonセクションで、Textの値をReturnに変更します。 Actionフィールドのドロップダウン・リストから「goBrowse」を選択します。
ビジュアル・エディタで、Moreページは次のように表示されます。

両方のページで、コンポーネントはOracle ADFデータ・コントロールの属性にバインドされており、データ・モデルからデータを表示するためのバインディング・オブジェクトを参照するOracle ADFデータ・バインディング式言語(EL)式を含んでいます。
詳細表示
JDeveloperによって、アプリケーション・ナビゲータのViewControllerプロジェクトのApplication Sourcesフォルダ内に、必要なアプリケーション・オブジェクトの定義ファイル(Oracle ADFデータバインドUIコンポーネントを含むページのレンダリングおよび処理用)が作成されます。
エディタ・ウィンドウで、ドキュメント・タブ「orders-task-flow-definition.xml」を選択して、ダイアグラムを前面に表示します。 「Browse」ページ・アイコンを右クリックし、「Run」を選択します。
Create Default Domainダイアログが表示されたら、PasswordフィールドとConfirm Passwordフィールドにデフォルト・パスワード(例:weblogic1)を入力し、「OK」をクリックします。
ブラウザ内で、Browseページは次のように表示されます。

JDeveloperはデフォルトで、統合WebLogic Serverという名前の統合サーバーを自動的に構成します。このサーバーは、IDEにバンドルされたOracle WebLogic Serverのユーザー固有のインスタンスを参照します。
詳細表示
統合WebLogic Serverは、パッケージ化されたアーカイブ・デプロイメント用のJava EEランタイム・サービスです。 ゼロコピー・デプロイメントに基づき、統合WebLogic Serverでは、アプリケーションとそのプロジェクトのJava EEアプリケーションとしての実行とテストをJava EEコンテナ内で行えます。 統合WebLogic Serverの使用に際し、特別な接続設定は必要ありません。 アプリケーション全体、プロジェクト、または個別のJSFページを実行できます。
IDEでJSFアプリケーションを実行すると、Oracle JDeveloperは次の処理を自動的に実行します。
まだ実行中でない場合は、統合WebLogic Serverを起動します。
アプリケーションをコンパイルし、統合WebLogic Serverへデプロイします。
次のデフォルトのアドレスを使用して、デフォルトのブラウザ内でアプリケーションを起動します。 http://<your_machine_IP_address>:<http_port>/<your_application_name>-<your_project_name>-context-root>/faces/<path_to_the_page>
アプリケーションを停止するには、「
」Terminateをクリックして、バインドされたインスタンスの「CustomizeApp」をドロップダウン・メニューから選択します。
注: アプリケーションを終了すると、アプリケーションは停止し、統合WebLogic Serverからアンデプロイされますが、統合WebLogic Serverは終了されません。
実行中のアプリケーションのBrowseページで、省略表示されたフォーム上の注文レコードを参照してからMoreページに移動し、現在の注文のすべての詳細情報を表示します。

Moreページには、Browseページで現在表示されているOrders行のすべての詳細情報が表示されます。
詳細表示
Moreページで「Return」をクリックすると、アプリケーションはBrowseページに戻ります。
この時点で、ベース・アプリケーションにOracle MDSカスタマイズを受け入れる準備が完了しており、カスタマイズできる2つのビュー・ページが作成されました。 次のステップではビュー・ページを変更し、データ・モデルにオブジェクトを追加することで、アプリケーションをカスタマイズします。
JDeveloperで「
」Terminateをクリックし、ドロップダウン・メニューから「Integrated WebLogic Server」を選択します。 エディタ・ウィンドウ内のすべてのファイルを閉じます。
メイン・メニューから「Tools 」→「Switch Roles」→「Customization Developer」を選択します。 JDeveloperを再起動するようを指示されたら「Yes」をクリックします。
Customization Developerロールで作業する場合のみ、アプリケーション内のメタデータをカスタマイズできます。
詳細表示 このロールでは、カスタマイズ機能をIDE内(Customization Contextウィンドウなど)で使用できますが、その他の一部の機能は無効になっています(たとえば、新しいカスタマイズ可能なオブジェクトの作成や、カスタマイズ不可能なオブジェクトの編集はできません)。
カスタマイズされたアプリケーションにはベース・アプリケーションと、カスタマイズされたメタデータ・コンテンツで構成された1つ以上のレイヤーが含まれています。 Oracle MDSはカスタマイズされたメタデータ・オブジェクトをメタデータ・リポジトリに保存しておき、実行時にこれらを取得して、カスタマイズされたアプリケーションを表示します。 カスタマイズされたアプリケーションの起動時に、カスタマイズされたコンテンツがベース・アプリケーションに適用されます。
必要に応じて、アプリケーション・ナビゲータのドロップダウン・リストから「CustomizeApp」を選択し、カスタマイズ可能なアプリケーションを開きます。 まだ開いていない場合は、メイン・メニューから「View」→「Customization Context」を選択し、Customization Contextウィンドウを開きます。
アプリケーション・ナビゲータでは、カスタマイズ可能なアプリケーションの名前の横に表示されたアイコンが、カスタマイズ不可能なアプリケーションのアイコンとは異なります。
詳細表示 また、プロジェクト内のアーチファクトがカスタマイズ不可能である場合、オブジェクト名の横に表示されたアイコンの上にロック記号が表示されます。
実行できるメタデータのカスタマイズのタイプは次のとおりです。
カスタマイズは、静的または動的に行うことができます。 静的なカスタマイズとは、アプリケーションのデプロイメント期間中は変化しないカスタマイズ・コンテンツのことです。 動的なカスタマイズとは、レイヤーで実装され、レイヤー値が実行時に決定されるカスタマイズのことです(たとえば、実行時にカスタマイズされるコンテンツはログインするユーザーのロールにより異なります)。
このステップでは、静的なビュー・レイヤーのカスタマイズとモデル・レイヤーのカスタマイズを実装します。
site/headquartersレイヤー値でBrowseページにTableコンポーネントを追加し、注文項目を表示します。
site/remoteofficesレイヤー値では、モデル・レイヤーのOrderItemsViewオブジェクトに属性を追加します。 次に、BrowseページにTableコンポーネントを追加し、注文項目を表示します。 Moreページで、注文フォームを構成するコンポーネントの周囲にShow Detail Headerコンポーネントを追加します。
Customization Contextウィンドウで、siteレイヤーのValueドロップダウン・リストから「Headquarters (headquarters)」を選択します。

アプリケーション・ナビゲータで、ViewControllerプロジェクトの「Browse.jsf」をダブルクリックして、ビジュアル・エディタでページを開きます。
Data Controlsパネルで「FODAppModuleDataControl」を開き、次に「OrdersView1」を開きます。
「OrderItemsView2」を、ページ上のsecondファセットにドラッグ・アンド・ドロップします。 Createコンテキスト・メニューから「Table」→「ADF Read-only Form」を選択します。

-
Edit Table Columnsダイアログで「Enable Sorting」を選択し、 「ObjectVersionId」、「LastUpdateDate」、「LastUpdatedBy」、「CreationDate」、「CreatedBy」列を選択します。

-
「
」をクリックして選択した列を削除し、「OK」をクリックします。
ビジュアル・エディタのページは次のように表示されます。

site/headquartersコンテキストでは、Browseページをカスタマイズし、データバインドされたTableコンポーネントを追加することで、
OrderItemsViewビュー・オブジェクトのデータを表示しました。
詳細表示
カスタマイズ・レイヤーは、内在するメタデータを変更する指示のセットを含むカスタマイズ・ドキュメントに対応します。 アプリケーションのビュー・レイヤーへのカスタマイズを作成する場合、JDeveloperは編集中のビュー・ページのファイル名を使用してXMLソース・ファイルを作成します。 たとえば、Browseページのファイル名がBrowse.jsfである場合、カスタマイズXMLドキュメントはBrowse.jsf.xmlになります。
JDeveloperは、カスタマイズ・ドキュメントをViewControllerプロジェクトのmdssys/custフォルダに保存します。 各ドキュメントはそれぞれのカスタマイズ・レイヤー値フォルダに作成されます。 たとえば、カスタマイズをsite/headquartersコンテキストに実装している場合、次のアプリケーション・ナビゲータの図に示されるように、Browse.jsf.xmlがmdssys/cust/site/headquartersフォルダに作成されます。
カスタマイズ・ドキュメントのコンテンツを表示するには、XMLファイルをダブルクリックします。 たとえば、Browse.jsf.xmlを開くと、<mds:customization>や<mds:insert>などの、基盤となるビュー・レイヤーに対する変更指示を含むメタデータ要素が確認できます。 <mds:insert>要素は親コンポーネントであるPanel SplitterのId値を参照しています。これは、BrowseページのどこにTableコンポーネントが挿入されているかを指定するものです。
ページに対するカスタマイズにOracle ADFデータバインドUIコンポーネントの追加/変更が含まれる場合、JDeveloperはページ定義のカスタマイズ・メタデータ・ドキュメントを作成します。 たとえば、site/headquartersコンテキスト内にBrowseページのカスタマイズを実装する場合、ページ定義のカスタマイズ・ドキュメントBrowsePageDef.xml.xmlが、パッケージoracle.view.pageDefsのサブパッケージmdssys/cust/site/headquarters内に作成されます。このパッケージには、その他すべてのページ定義が格納されています。 BrowsePageDef.xml.xmlを開くと、<mds:customization>や<mds:insert>などのメタデータ要素が確認できます。
Customization Contextウィンドウで、Valueドロップダウン・リストから「Remote Offices (remoteoffices)」を選択します。 プロンプトが表示されたら、「OK」を2回クリックして開いているファイルを閉じ、カスタマイズを保存します。

アプリケーション・ナビゲータの「Model」プロジェクトで「Application Sources」→「oracle.model」を開き、「OrderItemsView」をダブルクリックします。

概要エディタで、左側の「Entity Objects」を選択します。 Availableリストから「ProductsBase.」を選択します。 次に「
」をクリックし、Selectedリストへ移動します。

左側で「Attributes」を選択します。
ドロップダウン・メニューから「Add Attribute From Entity」を選択します。

Attributesダイアログで、AvailableリストのProductsBaseの下の「ProductName」を選択します。 次に「
」をクリックし、Selectedリストへ移動します。

「OK」をクリックしてから「
」Save Allをクリックします。
OrderItemsViewの概要エディタは次のように表示されます。

site/remoteofficesコンテキストでは、
ProductsBaseエンティティ・オブジェクトから
ProductName属性を追加することで、モデル・ビュー・オブジェクト
OrderItemsViewをカスタマイズしました。
詳細表示
この時点で、OrdersItemsViewビュー・オブジェクトには、OrderItemsエンティティ・オブジェクトとProductsBaseエンティティ・オブジェクトの両方の属性が含まれます。 OrderItemsViewには、2つのProductId属性(OrderItemsエンティティ・オブジェクトのProductIdとProductsBaseエンティティ・オブジェクトのProductId1)が含まれます。これは、2つのエンティティ・オブジェクト間の結合を指定するために必要です。
アプリケーションのモデル・レイヤーにカスタマイズを作成する場合、Oracle JDeveloperは編集中のモデル・オブジェクトのファイル名を使用してXMLソース・ファイルを作成します。 たとえば、OrderItemsViewのファイル名がOrderItemsView.xmlである場合、カスタマイズXMLドキュメントはOrderItemsView.xml.xmlになります。
JDeveloperは、モデル・レイヤーのカスタマイズ・ドキュメントをModelプロジェクトのmdssys/custパッケージに保存します。 モデル・オブジェクトがパッケージに含まれる場合、mdssysパッケージの名前はモデル・オブジェクトと同じパッケージ名の接頭辞がつきます(例:oracle.model.mdssys)。 それぞれのカスタマイズ・ドキュメントは、固有のカスタマイズ・レイヤー値のパッケージ内に作成されます。 たとえば、カスタマイズをsite/remoteofficesコンテキストに実装している場合、次のアプリケーション・ナビゲータの図に示されるように、OrderItemsView.xml.xmlはoracle.model.mdssys/cust/site/remoteofficesパッケージ内に作成されます。
カスタマイズ・ドキュメントのコンテンツを表示するには、XMLファイルをダブルクリックします。 たとえば、OrderItemsView.xml.xmlを開くと、<mds:customization>、<mds:insert>、<mds:modify>などのメタデータ要素が確認できます。
アプリケーション・ナビゲータで、ViewControllerプロジェクトの「Browse.jsf」をダブルクリックして、ビジュアル・エディタでページを開きます。
ページの注文フォームの下に、注文項目表が表示されていない点に注意します。このフォームはsite/headquartersカスタマイズ・コンテキスト内に追加されています。
コンポーネント・パレットのADF FacesページのLayoutパネルで、「
」Panel Collectionを、ページ上のsecondファセットにドラッグ・アンド・ドロップします。
Data Controlsパネルで「
」Refreshをクリックします。 「FODAppModuleDataControl」→「OrdersView1」の順に開きます。 先ほど追加したPanel Collectionコンポーネントに、「OrderItemsView2」をドラッグ・アンド・ドロップします。 Createコンテキスト・メニューから「Table」→「ADF Read-only Form」を選択します。
Edit Table Columnsダイアログで「Enable Sorting」を選択し、 「ProductId1」、「ObjectVersionId」、「LastUpdateDate」、「LastUpdatedBy」、「CreationDate」、「CreatedBy」列を選択します。 次に「
」をクリックして、選択した列を削除します。

「OK」をクリックします。
ビジュアル・エディタのページは次のように表示されます。

site/remoteofficesコンテキストでは、Browseページをカスタマイズし、Panel Collectionコンポーネントを追加してからデータバインドされたTableコンポーネントを追加することで、
OrderItemsViewビュー・オブジェクトのデータを表示しました。
詳細表示
この時点で、この表にはProductName列が含まれています。これは、先ほど、ProductsBaseエンティティ・オブジェクトからProductName属性を追加することで、モデル・ビュー・オブジェクトOrderItemsViewをカスタマイズしたためです。
-
アプリケーション・ナビゲータのViewControllerプロジェクトで、「More.jsf」をダブルクリックして、ビジュアル・エディタでページを開きます。 Structureウィンドウで「f:view」→「af:document」→「af:form」を開きます。 「af:panelFormLayout」が開かれている場合は、これを閉じます。

-
コンポーネント・パレットのLayoutパネルで、Interactive Containers and Headersセクションから「
」Show Detail Headerをドラッグし、Structureウィンドウのaf:formにドロップします。
Structureウィンドウで「af:panelFormLayout」コンポーネントをドラッグし、af:showDetailHeaderにドロップします。
次に、「af:showDetailHeader」をドラッグし、af:commandButton - Returnの前に移動します。

「
」Save Allをクリックして作業内容を保存します。
ビジュアル・エディタでMoreページは次のように表示されます。

site/remoteofficesコンテキストでは、Show Detail Headerでフォームを囲むことで、Moreページをカスタマイズしました。
詳細表示
プロパティ・インスペクタでは、ヒント・レイヤーの変更がオレンジ色のアイコンで示されています(ヒント・レイヤー以外の変更は緑色のアイコンで示されます)。 次に例を示します。
アプリケーション・ナビゲータのViewControllerプロジェクトには、次の要素が含まれています。
-
Web Content内のmdssys/cust/site/remoteofficesフォルダ。このフォルダには、ページをカスタマイズし、UIコンポーネントを追加および変更したときに作成された、カスタマイズ・メタデータ・ドキュメントMore.jsf.xmlとBrowse.jsf.xmlが含まれています。
サブパッケージmdssys/cust/site/remoteoffices(Application Sources内のoracle.view.pageDefsパッケージに含まれます)。このサブパッケージには、Browseページをカスタマイズし、データバインドされたTableコンポーネントを追加したときに作成された、ページ定義カスタマイズのメタデータ・ドキュメントBrowsePageDef.xml.xmlが含まれます。
カスタマイズ・メタデータ・ファイルには、アプリケーションでのカスタマイズ実装手順が含まれています。 アプリケーションは実行時にベース・アプリケーションに対して、adf-config.xmlファイルのcust-configセクションに定義された優先順位どおりにカスタマイズ・メタデータ・ファイルを適用します。
アプリケーション・ナビゲータで、ViewControllerプロジェクトのWeb Content→Page Flows内にある「orders-task-flow-definition」を右クリックし、「Run」を選択します。
Browseページには注文フォームの下に注文項目表が表示され、5つの列が含まれます。

カスタマイズされたメタデータを持つアプリケーションを実行する場合、
customization.propertiesのアクティブなレイヤー値に属する適切なカスタマイズが対応するリポジトリからロードされ、アプリケーションのベース・メタデータによりレイヤー化されて、目的とするカスタマイズされた表示用コンテンツを生成します。
詳細表示
customization.propertiesでのアクティブなレイヤー値は、site=headquartersです。
#Configured values for the default layer values
#site=remoteoffices
site=headquarters
接頭辞#のないレイヤー値は、siteレイヤーでアクティブなレイヤー値です。 アプリケーションの実行時に、アクティブなレイヤー値(headquarters)に属する適切なカスタマイズが対応するリポジトリからロードされ、アプリケーションのベース・メタデータ上に適用されるレイヤーとなることで、カスタマイズされた目的の表示用コンテンツが生成されます。
customization.propertiesファイルには、1つまたは複数のカスタマイズ・レイヤーに定義された設定可能なレイヤー値を含めることができます。 たとえば、このプロパティ・ファイルには、次に示すsiteレイヤーおよびindustryレイヤーに定義した設定可能なカスタマイズ・レイヤー値を含めることができます。
#Configured values for the default layer values
industry=financial
#industry=healthcare
#site=remoteoffices
site=headquarters
アプリケーションを実行すると、カスタマイズされたコンテンツには、ベース・アプリケーション・コンテンツに加えて、industry=financialレイヤーおよびsite=headquartersレイヤーのカスタム・コンテンツが含まれます。
「More Details」をクリックして注文フォームに移動し、入力を完了します。
注文フォームの上にShow Detail Headerは表示されません。
アプリケーションを停止するには、「
」Terminateをクリックし、ドロップダウン・メニューから「CustomizeApp」を選択します。
ファイル・システムで、アプリケーション・フォルダの/Model/srcフォルダにある「customization.properties」ファイルを開きます(例:C:/JDeveloper/mywork/CustomizeApp/Model/src)。 テキスト・エディタで、site=headquartersの前に#を追加します。 site=remoteofficesから#を削除します。 ファイルを保存します。
remoteofficesに属するカスタマイズ済みコンテンツを表示するには、
customization.propertiesファイルの編集後にアプリケーションを再起動します。
詳細表示
#Configured values for the default layer values
site=remoteoffices
#site=headquarters
アプリケーション・ナビゲータで「orders-task-flow-definition」を右クリックし、再度、「Run」を選択します。
Browseページの注文項目表の上部にViewメニューとDetachツールバー項目が表示され、注文項目表には6つの列が含まれています。 6番目の列はProductNameです。これは、ProductsBaseエンティティ・オブジェクトからProductName属性を追加することで、モデル・レイヤーのOrderItemsViewオブジェクトをカスタマイズしたためです。

「More Details」をクリックして注文フォームに移動し、入力を完了します。
Moreページで、ヘッダーの横にあるアイコンをクリックすると、注文フォームの表示/非表示を切り替えることができます。

JDeveloperで「
」Terminateをクリックし、ドロップダウン・メニューから「Integrated WebLogic Server」を選択します。
エディタ・ウィンドウ内のすべてのファイルを閉じます。
アプリケーションのユーザー・カスタマイズを利用すると、エンドユーザーが実行時に何らかのUIコンポーネントを変更しても、エンドユーザーがアプリケーションを離れるまでの間はこれらの変更を持続できます(例:特定のパネル・ボックス内のコンテンツの非表示)。
メイン・メニューから「Tools」→「Switch Roles」→「Studio Developer」を選択します。 JDeveloperを再起動するようを指示されたら「Yes」をクリックします。
アプリケーション・ナビゲータで「ViewController」をダブルクリックし、Project Propertiesダイアログを開きます。
「ADF View」を選択します。 「Enable User Customizations」を選択してから、「For Duration of Session」をクリックします。 「OK」をクリックします。

アプリケーションでユーザー・カスタマイズまたは変更の永続性を利用すると、エンドユーザーが個人の好みに合わせて特定のUIコンポーネントを実行時に変更し(表のどの列を表示するかなど)、これらの変更をユーザーのセッション中、またはユーザーがアプリケーションを開くたびに適用されるよう”記憶させる”ことができます。
詳細表示
ユーザー・カスタマイズには2つのタイプがあります。
このステップでは、セッションが持続している間、ユーザー・カスタマイズを有効化します。
セッション・ユーザー・カスタマイズを有効化すると、JDeveloperは次のコンテキスト初期化パラメータをweb.xmlに追加します。
<context-param>
<param-name>org.apache.myfaces.trinidad.CHANGE_PERSISTENCE</param-name>
<param-value>session</param-value>
</context-param>
CHANGE_PERSISTENCEの値がsessionに設定されることで、セッションの変更が永続化されます。
アプリケーション・ナビゲータで、ViewControllerプロジェクトのWeb Content→Page Flows内にある「orders-task-flow-definition」を右クリックし、「Run」を選択します。
注: ここまでの例に従っている場合、アプリケーションでシード済みカスタマイズも有効化されているはずです。 したがって、アプリケーションの実行時に、事前にcustomization.propertiesに設定されたアクティブなカスタマイズ・レイヤー値に基づく、作成済みのシード済みカスタマイズが表示されます。
ブラウザ内のBrowseページで、表の列の幅を広げます。 「More Details」をクリックして、Moreページに移動します。 Moreページで「Return」をクリックすると、Browseページに戻ります。
変更した列の幅は新しい幅のままです。
多くのOracle ADF Facesコンポーネントに対して、ユーザーは実行時にコンポーネントの表示を変更できます。
詳細表示 たとえば、ユーザーは、Panel Splitterコンポーネントのスプリッタの位置や、Show DetailおよびShow Detail Headerコンポーネントが子コンテンツを表示するかどうかを変更できます。 デフォルトでは、これらの変更はページ・リクエストの間のみ有効です。 ユーザーがページを離れてから戻ると、コンポーネントはデフォルトで設定されたとおりに表示されます。
変更の永続性がセッション持続中に対して有効化されている場合(別名:セッション・ユーザー・カスタマイズ)、エンドユーザーによる変更は、ユーザーがアプリケーションを離れるまで、ユーザー・セッションの期間中ずっと永続化されます。
ユーザー・カスタマイズをアプリケーションに設定した後で、Oracle ADF Facesアプリケーションによって永続化されるコンポーネント属性値の変更のうち、一部を次に示します。 暗黙的に永続化される属性およびコンポーネントの全リストは、OTNのOracle ADF Facesドキュメントを参照してください。
| コンポーネント |
属性 |
注釈
|
| Show DetailおよびShow Detail Header |
disclosed |
ユーザーの最後のアクションに応じて、子コンテンツが表示または非表示になります。 |
| Panel Splitter |
splitterPosition |
スプリッタの位置は、ユーザーが最後に動かした位置のままになります。 |
| Column |
width |
列の幅は、ユーザーが最後に設定したサイズのままになります。 |
| Column |
displayIndex |
デフォルトで、表の列はデータソースと同じ順番で表示されます。 実行時に、ユーザーは任意の列を移動できます。 新しい列の位置は、ユーザーが最後に動かした位置のままになります。 |
暗黙的に永続化されるOracle ADF Facesの属性およびコンポーネントをユーザー・セッションで利用するために、
コードを作成したり、イベントを処理したりする必要はありませんが、次の前提条件を満たす必要があります。
Browseページで表の列を動かしてみたり、 Moreページで、フォームの表示/非表示を切り替えてみたりします。 変更するたびにページを前後に移動します。
すべての変更は、セッション持続中は維持されます。
JDeveloperで「
」Terminateをクリックして、アプリケーションにバインドされたインスタンスの「CustomizeApp」をドロップダウン・メニューから選択します。
アプリケーションを再実行します。 事前に変更した内容は表示されません。
JDeveloperで「
」Terminateをクリックし、ドロップダウン・メニューから「Integrated WebLogic Server」を選択します。
アプリケーションのユーザー・カスタマイズを恒久的に永続化し、エンドユーザーがアプリケーションにログインするたびに有効にすることができます。
必要に応じて、メイン・メニューから「Tools」→「Switch Roles」→「Studio Developer」を選択します。 JDeveloperを再起動するようを指示されたら「Yes」をクリックします。
アプリケーション・ナビゲータで「ViewController」をダブルクリックし、Project Propertiesダイアログを開きます。
「ADF View」を選択します。 次に「Enable User Customizations」と「Across Sessions Using MDS」を選択します。 「OK」をクリックします。

ユーザー・カスタマイズを使用するには、Studio Developerロールである必要があります。
詳細表示
前のステップでは、セッション持続期間に対するユーザー・カスタマイズの有効化を実施しました。 このステップでは、リポジトリとしてOracle MDSを使用して、複数のセッションにわたってユーザー・カスタマイズを有効化します。 つまり、ユーザー・カスタマイズは永続的にリポジトリに保存され、エンドユーザーがアプリケーションを開くたびに復元されます。
Oracle MDSユーザー・カスタマイズを有効化すると、JDeveloperは次のコンテキスト初期化パラメータをweb.xmlに追加します(まだ追加されていない場合)。
<context-param>
<param-name>org.apache.myfaces.trinidad.CHANGE_PERSISTENCE</param-name>
<param-value>
oracle.adf.view.rich.change.FilteredPersistenceChangeManager
</param-value>
</context-param>
CHANGE_PERSISTENCEの値がoracle.adf.view.rich.change.FilteredPersistenceChangeManagerに設定されると、Oracle MDSの変更の永続性またはユーザー・カスタマイズが有効化されます。
Oracle MDSの変更の永続性を使用するには、adf-config.xmlにおいて以下も設定する必要があります(ここではJDeveloperによって追加されています)。
<adf-faces-config xmlns="http://xmlns.oracle.com/adf/faces/config">
<persistent-change-manager>
<persistent-change-manager-class>
oracle.adf.view.rich.change.MDSDocumentChangeManager
</persistent-change-manager-class>
</persistent-change-manager>
</adf-faces-config>
Oracle MDSの変更の永続性を使用するには、JDeveloperによって追加された要素に加えて、変更を持続させたいOracle ADF Facesコンポーネントに一意のId属性値を設定する必要があります。
アプリケーション・ナビゲータで「Application Resources」パネルを開きます。 「Descriptors」→「ADF META-INF」を開き、「adf-config.xml」をダブルクリックして概要エディタでファイルを開きます。

adf-config.xmlを編集し、次の要素を追加します。
詳細表示
-
概要エディタで「MDS」をクリックしてから「
」をクリックします。

-
Edit Customization Classダイアログにuserccと入力します。 「UserCC (oracle.adf.share.config)」クラスを選択し、「OK」をクリックします。

-
概要エディタで「View」をクリックします。 Tag ConfigurationセクションのTag Library URIドロップダウン・リストから「http://xmlns.oracle.com/adf/faces/rich」を選択します。

adf-config.xmlの概要エディタで
Viewページの
Tag Configurationセクションを使用すると、コードを作成することなく、リポジトリ内で永続化したいコンポーネントと関連属性値を宣言できます。
詳細表示
特定のOracle ADF Facesコンポーネントには、セッション変更の永続性に対するサポートが組み込まれています。これは暗黙的に永続化される属性により永続性を提供するものであり、ユーザー側でのコーディングやイベント処理は必要ありません。 暗黙的に永続化される属性の例としては、Panel SplitterのsplitterPosition属性、Columnのwidth属性、Show Detail HeaderおよびShow Detailのdisclosed属性があります。 暗黙的に永続化される属性およびコンポーネントの全リストは、OTNのOracle ADF Facesドキュメントを参照してください。
Oracle MDSリポジトリに対する変更の永続化を選択すると、デフォルトで、暗黙的に永続化される属性の変更がすべて、セッションに対して永続化されます。その後、変更の永続性フレームワークがアプリケーションのadf-config.xmlファイルと個別のJSFページでの設定を照会し、変更をOracle MDSリポジトリに対し永続化するかどうかを決定します。 よって、Oracle MDSリポジトリに対して変更を永続化する場合、暗黙的に永続化されるコンポーネント属性値の中で、どれをアプリケーションに対して永続化させるかを決定し、それをadf-config.xmlに指定する必要があります。
adf-config.xmlの概要エディタを使用して、Oracle MDSに永続化するコンポーネント属性値を宣言すると、必要なコードがJDeveloperによって自動的に追加されます。 たとえば、次のコードは、columnのwidth属性とpanelSplitterのsplitterPosition属性のみがOracle MDSリポジトリに永続化されることを示しています。暗黙的に永続化されるその他のコンポーネント属性値(panelSplitterのcollapsedなど)はアプリケーションのadf-config.xmlに指定されていないため、リポジトリに永続化されません。
<taglib-config>
<taglib uri="http://xmlns.oracle.com/adf/faces/rich">
<tag name="column">
<attribute name="width">
<persist-changes>true</persist-changes>
</attribute>
</tag>
<tag name="panelSplitter">
<attribute name="splitterPosition">
<persist-changes>true</persist-changes>
</attribute>
</tag>
<taglib>
</taglib-config>
注: 手動でコードを編集する場合、必ず正しい名前を使用してください。属性およびコンポーネントの名前では大文字と小文字を区別し、正確なスペルを指定する必要があります。
リポジトリに対する永続化はパフォーマンスにマイナスの影響を与えます。 そのため、複数のセッションにわたって維持したい値だけを永続化するようにアプリケーションを設定する必要があります。
Tagsセクションで「
」をクリックし、コンテキスト・メニューから「column」を選択します。

再度、「
」をクリックし、「showDetailHeader」を選択します。
再度、「
」をクリックし、「panelSplitter」を選択します。
概要エディタのViewページは次のように表示されます。
-
「
」Save Allをクリックして作業内容を保存します。 「adf-config.xml」ファイルを閉じます。
選択したコンポーネントの属性のうち、暗黙的に永続化される属性値は、デフォルトでOracle MDSリポジトリに永続化されます。 選択を変更するには、「
Persist Changes」列のチェック・ボックスを使用します。
詳細表示
adf-config.xmlで宣言された暗黙的に永続化されたコンポーネントの属性値は、アプリケーション・ページで使用される暗黙的に永続化されたすべてのコンポーネントに対してグローバルに適用されます。 特定のページで暗黙的に永続化されたコンポーネントの属性値を永続化しないようにするには、特定のコンポーネントのdontPersist属性に対してこの属性値をページに直接定義します。 同様に、adf-config.xmlでグローバルに宣言されていない、暗黙的に永続化されたコンポーネントの属性値を持つコンポーネントをリポジトリに対して永続化するには、特定のコンポーネントのpersist属性に対してこの属性値をページ上に直接定義します。 dontPersist属性とpersist属性には、それぞれ、Oracle MDSリポジトリへの永続化を制限または許可されている永続化属性名のリストを設定できます。
Oracle ADF Facesフレームワークによって提供される暗黙的な変更に加えて、Oracle ADF Facesの変更の永続化APIを使用して、コンポーネントに対する明示的な属性値の変更を永続化し、これを処理できます。 コンポーネント属性値の変更を明示的に永続化しており、これをOracle MDSリポジトリに対して永続化する場合、(永続化する暗黙的な変更に加えて)これらもまた、アプリケーションのadf-config.xmlファイルに宣言する必要があります。
Oracle MDSをリポジトリとして使用し、複数のセッションにわたってユーザー・カスタマイズを永続化する前に、Oracle ADF Securityを設定し、アプリケーション向けユーザーを作成する必要があります。
メイン・メニューから「Application」→「Secure」→「Configure ADF Security」の順に選択します。

Oracle ADF SecurityフレームワークはOracle Platform Security Servicesアーキテクチャに基づいて構築されており、Fusion Webアプリケーションに認証および認可サービスを提供する際に推奨されるテクノロジーです。
詳細表示
Oracle ADF Securityには、Java Authentication and Authorization Service(JAAS)のセキュリティ・モデルが実装されています。 JAASは既存のJavaセキュリティ・モデルに基づいて構築されているため、JAASモデルはポリシー・ベースであり、任意のJAAS実装と統合できます。 Configure ADF Securityウィザードを実行すると、Fusion Webアプリケーションに対してOracle ADF Securityを有効化できます。 ウィザードによってFusion Webアプリケーション全体に対してOracle ADF Securityが設定されるため、セキュリティ対応型のOracle ADFリソース(例:バウンド・タスク・フロー)が関連付けられたすべてのWebページは、デフォルトで保護されます。 Oracle ADF Securityが有効化されている場合、セキュリティ・ポリシーに基づいてリソース・アクセスを認可するには、アプリケーションからOracle ADF Securityフレームワークを明示的に呼び出す必要があります。
Oracle ADF Securityを有効化した後で、ユーザーがFusion WebアプリケーションのWebページを参照できるように、アクセス権を付与します。 ユーザーに付与するアクセス権はセキュリティ・ポリシーとして知られており、ページに相当するセキュリティ対応型のOracle ADFリソースに対して指定します。 これはOracle ADFリソースに対するセキュリティ・ポリシーであり、ユーザーがタスク・フローを開始できるかどうか、またはWebページを参照できるかどうかを制御します。 Oracle ADF SecurityはJAASに基づいているため、セキュリティ・ポリシーにはプリンシパル(ユーザーまたはアプリケーションのロール)、Oracle ADFリソース(バウンド・タスク・フローなど)、権限(リソースのOracle ADF権限クラスによって定義される操作)が関連付けられています。
ウィザードのステップ1:Oracle ADF Securityにおいて、デフォルトで選択されているADF Authentication and Authorizationのままにします。 「Next」をクリックします。

Oracle ADF Securityは認証機能をWebコンテナに委任します。 もっともよく使用される認証方式は、HTTP Basic認証とフォーム・ベース認証です。
詳細表示
Basic認証はブラウザのログイン・ダイアログを使用して、ユーザーにユーザー名とパスワードを入力させます。 Basic認証では、ブラウザがユーザーの資格証明をキャッシングすることでログアウトを防止します。 Basic認証は、カスタムのログイン・ページなしでアプリケーションをテストする場合に役立ちます。
ステップ2のAuthentication Typeで、Web Projectとして指定されているViewController.jprをそのままにします。 HTTP Basic Authenticationが選択されていることを確認します。 「Next」をクリックします。
ステップ3のAutomatic Policy Grantsで、No Automatic Grantsが選択されていることを確認します。 「Next」をクリックします。

ステップ4のAuthenticated Welcomeで、Redirect Upon Successful Authenticationを選択せずに、 「Finish」をクリックします。

Security Infrastructure Createdダイアログで、「OK」をクリックします。

デフォルトのOracle ADF認証および認可オプションとその他すべてのデフォルト値を使用してConfigure ADF Securityウィザードを実行すると、ウィザードによって次の処理が行われます。
詳細表示
ユーザーにログイン・プロンプトを表示するOracle ADF認証の有効化
権限チェックを実施することで、認可ユーザーのみがOracle ADFリソースにアクセスできるようにするための、Oracle ADF認可の有効化
アプリケーション・ワークスペースに関連するsrc/META-INFフォルダでのjazn-data.xmlファイルの作成
アプリケーション・ワークスペースに関連するpublic_html/WEB-INFフォルダでのweblogic.xmlファイルの作成
すべてのセキュリティ関連の構成ファイル(jps-config.xml、web.xml、adf-config.xmlなど)の更新
Oracle ADF認可は、セキュリティ対応型のOracle ADFリソース(バウンド・タスク・フローなど)に対して定義されたセキュリティ・ポリシーに対する権限チェックを実施するため、管理者はアプリケーション・ロールを定義し、これらのロールに明示的な権限を割り当てることで、Oracle ADFリソースへのアクセスを管理する必要があります。
-
メイン・メニューから「Application」→「Secure」→「Application Roles」の順に選択し、概要エディタで「jazn-data.xml」を開きます。

jazn-data.xmlファイルは、開発環境ファイルです。
詳細表示
JDeveloperでセキュアなFusion Webアプリケーションを開発する場合、Configure ADF Securityウィザードの実行時にjazn-data.xmlファイルが自動的に作成され、アプリケーション・セキュリティ・ポリシー(例:CustomizeApp)が自動的に追加されます。 jazn-data.xmlの概要エディタを使用して、アプリケーション全体のWebページに関連付けられたOracle ADFリソースにセキュリティ・ポリシーを定義します。 また、概要エディタを使用してOracle ADFリソースをソートすると、まだセキュリティ・ポリシーが定義されていないリソースが簡単に確認できます。
概要エディタを使用して構成を追加または編集すると、JDeveloperによって自動的にjazn-data.xmlファイルが更新されます。 jazn-data.xmlファイルはJDeveloperでの簡単なテストをサポートしますが、本番環境へのデプロイにも対応しています。 エディタを使用したjazn-data.xmlファイルの構成が終了したら、統合WebLogic Serverを使用してアプリケーションを実行できます。これにより、ポリシー・コンテンツがドメイン・レベルのストアであるsystem-jazn-data.xmlファイルに追加されます。
-
Rolesドロップダウン・メニューから「Add New Role」を選択します。

NameフィールドにBasicUserRoleと入力し、[Tab]キーを押します。

左側にある「Users」タブをクリックします。
エディタの右上にあるRealmドロップダウンに、jazn.comが表示されています。

レルムは、認証されたユーザーおよびロールの集合です。 Oracle ADF Securityでのデフォルト・レルムは
jazn.comであり、これは
jazn-data.xml内に定義されています。
詳細表示
ユーザーとはサービスにアクセスする認可済みのエンドユーザーであり、個人であることもあれば、ソフトウェア・コンポーネントであることもあります。 アプリケーション・ロールはセキュリティ・ポリシー要件を表しており、同じ表示権限を持つユーザー・グループを定義します。
-
Usersセクションで、「
」New Userをクリックします。 Nameフィールドにuser1と入力し、[Tab]キーを押します。 Passwordフィールドにwelcome1と入力し、[Tab]キーを押します。 Confirm Passwordフィールドにパスワードを再入力し、[Tab]キーを押します。

-
「Application Roles」タブをクリックし、先ほど作成したロール「BasicUserRole」を選択します。 Mappingsセクションの
Mapped Users and Rolesドロップダウン・メニューから「Add User」を選択します。

Select Usersダイアログで「user1」を選択し、「OK」をクリックします。
概要エディタのMappingsセクションにuser1が表示されます。

-
概要エディタで左側の「Resource Grants」タブをクリックします。

-
Resource Type ドロップダウン・リストから「Task Flow」を選択します。
Source ProjectフィールドにはViewControllerが設定されています (表示されていない場合、フィールドの横にある
をクリックしてダイアログを使用し、選択リストにViewControllerを移動します)。

Resources列で、アプリケーションのバウンド・タスク・フロー「orders-task-flow-definition」を選択します。
Granted Toドロップダウン・メニューから「Add Application Role」を選択します。

Select Application Rolesダイアログで「BasicUserRole」を選択し、「OK」をクリックします。

-
概要エディタのActions列でviewが選択されていることを確認します。 「customize」、「grant」、「personalize」を選択します。

「
」Save Allをクリックして作業内容を保存します。
ここでは、Oracle ADFリソース
orders-task-flow-definitionに対してセキュリティ・ポリシーを定義し、タスク・フローにアプリケーション・ロールを付与し、選択されたアプリケーション・ロールを持つユーザーに対して付与するタスク・フロー固有の権限を選びました。
詳細表示
バウンド・タスク・フローに含まれる個々のWebページに対して、リソース権限を定義する必要はありません。 ユーザーがバウンド・タスク・フローにアクセスすると、タスク・フローに対して付与された権限によって、すべてのページのセキュリティが管理されます。 デフォルトでは、タスク・フローに含まれるWebページ(および関連付られたページ定義)にアクセスすることはできないため、Oracle ADF Securityによってユーザーがタスク・フロー内のページに直接アクセスできないよう防止されます
ここまでに、複数のセッションにわたってユーザー・カスタマイズを有効化し、どのコンポーネントの属性値の変更をOracle MDSに永続化するかを定義して、Oracle ADF Securityを設定したため、ユーザー向けにアプリケーションをパーソナライズする準備が整いました。
アプリケーション・ナビゲータで、ViewControllerプロジェクトのWeb Content→Page Flows内にある「orders-task-flow-definition」を右クリックし、「Run」を選択します。
ここまでの例に従っている場合、複数のセッションにわたってユーザー・カスタマイズを有効化し、シード済みカスタマイズをアプリケーションで有効化しているはずです。
詳細表示 これらのカスタマイズは、いずれもOracle MDSリポジトリを使用します。 したがって、アプリケーションの実行時に、事前にcustomization.propertiesに設定されたアクティブなカスタマイズ・レイヤー値に基づく、作成済みのシード済みカスタマイズが表示されます。
Authentication Requiredダイアログが表示されたら、ユーザー名とパスワードにそれぞれuser1とwelcome1を入力します。 「OK」をクリックします。

Browseページで、ProductName列の幅を広げます。 次に、「ProductId」列を動かし、ProductName列の前に配置します。 スプリッタ・バーを下に動かします。 「More Details」をクリックして、Moreページに移動します。 フォームのコンテンツを非表示にしたら、 「Return」をクリックして、Browseページに戻ります。
表の列の幅や、表に表示される列の順序といった永続化コンポーネント属性を変更することで、アプリケーションをパーソナライズします。
詳細表示
BrowseページまたはMoreページで永続化コンポーネント属性を変更する際、JDeveloperはそのページのファイル名を使用してXMLメタデータの変更永続性ファイルを作成し、mdssys/cust/userフォルダ内のサブフォルダにXMLファイルを保存します。 たとえば、Browseページ用に作成されたXML変更の永続性ファイルはBrowse.jsf.xmlです。
デフォルトでは、JDeveloperがインストールされているsystem11.1.2.0.x.x.x/o.mds.ide.deploy.base/adrs/<application_name>/AutoGeneratedMar/mds_adrs_writedirディレクトリにmdssys/cust/userフォルダが作成されます (例:C:/JDeveloper_Home/jdeveloper/system11.1.2.0.x.x.x/o.mds.ide.deploy.base/adrs/CustomizeApp/AutoGeneratedMar/mds_adrs_writedir)。
mdssys/cust/userフォルダ内で、XMLメタデータ変更の永続性ファイルはユーザーIDでソートされた別々のサブフォルダに保存されます。たとえば、mdssys/cust/user/user1のuser1はユーザーIDです。
また、JDeveloperはデフォルトで、複数のアプリケーション実行にわたってカスタマイズを維持します。 つまり、アプリケーションを停止して再実行すると、前回の実行中に実施した変更のすべてが表示されます。 このデフォルト設定は、Application Propertiesダイアログで変更できます。
複数のアプリケーション実行にわたってカスタマイズを維持しない場合、JDeveloper内でアプリケーションを実行するたびに、メタデータ変更の永続性ファイルとmdssys/cust/userフォルダ全体が削除されます。 メタデータ変更の永続性ファイルを保持するには、mdssys/cust/userフォルダとそのコンテンツのコピーを作成してください。
Oracle MDSを使用するように設定されている実際のアプリケーションをデプロイすると、Oracle MDSリポジトリを選択するよう促すプロンプトが管理者に表示されます。 スタンドアロン・サーバーにデプロイされる一般的なアプリケーションでは、アプリケーションのパーソナライズ時に作成されたメタデータ変更の永続性ファイルは、選択されたOracle MDSリポジトリに保存されます。
アプリケーションを停止し、「orders-task-flow-definition」を右クリックし、再度「Run」を選択します。
Browseページには、前回実施したすべての変更が維持されています。 Moreページに移動すると、フォームのコンテンツが非表示になっています。
メタデータ変更の永続性ファイルを開くと、実行時にページをパーソナライズした際にJDeveloperによって作成された要素が確認できます。
詳細表示 例としてBrowse.jsf.xmlを開くと、次の様なコードが表示されます。
<mds:customization ...>
<mds:modify element="s2c1">
<mds:attribute name="displayIndex" value="0"/>
</mds:modify>
<mds:modify element="s2c4">
<mds:attribute name="displayIndex" value="1"/>
</mds:modify>
<mds:modify element="s2c3">
<mds:attribute name="displayIndex" value="2"/>
</mds:modify>
<mds:modify element="s2c5">
<mds:attribute name="displayIndex" value="3"/>
<mds:attribute name="width" value="302"/>
</mds:modify>
<mds:modify element="s2c6">
<mds:attribute name="displayIndex" value="5"/>
</mds:modify>
<mds:modify element="s2c2">
<mds:attribute name="displayIndex" value="4"/>
</mds:modify>
<mds:modify element="ps1">
<mds:attribute name="splitterPosition" value="412"/>
</mds:modify>
</mds:customization>
Oracle MDSはコンポーネントのId属性が持つ一意の値に対して、永続性の変更を記録します。
このチュートリアルではカスタマイズ可能なFusion Webアプリケーションを作成し、このアプリケーションをパーソナライズしました。 このチュートリアルで学習した内容は、以下のとおりです。
- JDeveloperのウィザードおよびダイアログを使用した、アプリケーション、プロジェクト、タスク・フロー、起動ページの作成
- Oracle ADF Business Componentsを使用したデータ・モデルの作成
- カスタマイズ・レイヤー・ファイルとカスタマイズ・クラスの作成
adf-config.xmlでのカスタマイズ・クラスの設定
- Oracle MDSカスタマイズを受け入れるためのベース・アプリケーションの準備
- Data Controlsパネルを使用した、コード作成なしでのデータバインドUIコンポーネントの作成
- JDeveloperでのロール切替え
- Customization Developerロールでのアプリケーションのカスタマイズ
- ビュー・レイヤーとモデル・レイヤーのカスタマイズの実装
- 統合WebLogic Serverを使用したFusion Webアプリケーションの実行
- カスタマイズ可能なアプリケーションの実行とアクティブなカスタマイズ・レイヤー値の切替え
- ユーザー向けパーソナライゼーションを可能にするための、アプリケーションでのユーザー・カスタマイズの有効化
- 永続化するコンポーネントおよび属性のOracle MDSリポジトリへの設定
- Oracle ADF Securityの設定とOracle ADF認証および認可の有効化によるユーザー・ログインと権限チェック
- セキュリティ・ポリシーの定義によるOracle ADFリソースの保護とアプリケーション・ロール内のユーザー・グループへのアクセス権付与
カスタマイズ可能なアプリケーションの開発について、詳しくは次のWebサイトを参照してください。
すべて表示 |
すべて非表示
Copyright © 2011, Oracle and/or its affiliates. All rights reserved.