Developer Tools
JDeveloper
Oracle JDeveloperのHow Toドキュメント
オラクル、
DanaSingleterry著
2009年7月
Oracle JDeveloper 11g Release 1には、多数の新機能が含まれています。このHow Toドキュメントでは、新しいOracle Application Development Framework(Oracle ADF)Calendarコンポーネントを取り上げ、サンプル・アプリケーションを用いて、コンポーネントの使用方法について説明します。
Oracle ADF Faces Calendarコンポーネントは、作成されたアクティビティの日単位、週単位、月単位での表示や、アクティビティの所有者である任意のプロバイダに対してリスト・ビューの表示を行います。
週表示のOracle ADF Faces Calendar
Calendarコンポーネントには、次の機能も含まれます。
さらに、他のOracle ADF Faces ComponentsやRich Clientフレームワークを使用して次の機能を実装できます。
注:カレンダーは、Oracle ADF Business Components以外のデータソースを基にすることもできます。 詳しくは、『Oracle Fusion Middleware Web User Interface Developer's Guide for Oracle Application Development Framework 11g Release 1 (11.1.1.1.0)』を参照してください。
アプリケーション・ワークプレースをまだ作成していない場合はここで作成し、適切な名前を付けます。 名前は、 Fusion WebApplication (ADF)とします。 モデルのデフォルト・パッケージには、 oracle.otn.adf.sample.modelなどの名前を付けます。同様に、ビューのデフォルト・パッケージには、 oracle.otn.adf.sample.viewなどの名前を付けます。アプリケーション・ワークプレースを作成したら、 fod_cal_eventスキーマに基づいて、エンティティ・オブジェクトおよびビュー・オブジェクトの作成に進みます。 これを作成するには、「 Model」プロジェクトを右クリックしてコンテキストから「 new」を選択し、 Business Tierノードの「 ADF Business Components」および「 Business Components from Tables」を選択します。
カレンダーのスキーマへの接続を作成します。
スキーマの問合せを実行し、FOD_CAL_EVENTスキーマをEntity ObjectのAvailable表からSelected表へ移動します。 カレンダーには必要な属性があることに注意してください。これらの属性は、『Oracle Fusion Middleware Developer's Guide for Oracle Application Development Framework 11g Release 1 (11.1.1.1.0)』に記載されています。また、データ・コントロールを作成してカレンダー・アプリケーションのビューへ公開するためには、アプリケーション・モジュールが必要なことに注意してください。
Create Business Components from Tablesページのサマリーは、次のようになります。
「 Finish」を選択します。
ここで、作成したばかりのエンティティ・オブジェクトBusiness Componentの要件および修正を追加できます。たとえば、「 FODCALEVENTEO」エンティティ・オブジェクトを右クリックし、コンテキストから「 Open」を選択して、EIDを主キーにできます。 これには、デフォルトで作成された行IDの主キーの削除が必要となる場合があります。 FodCalEventEOの「 Attributes」ツリー・アイテムを選択し、「 Eid」を右クリックしてコンテキストから「 Edit」を選択します。 Primary Keyが選択されていることを確認します。
次に、 Updateable View Objectを作成します。 Application Navigator内の「 FodCalEventEO」を右クリックし、コンテキストから「 New Default View Object」を選択します。
関連するビュー・オブジェクトを作成すると、たとえば、挿入が実行された場合には主キーへのランダム値の割当て、必要なバインド変数の作成、イベントの追加に使用できる属性の追加など、さまざまな機能拡張が必要になります。 初めに、編集のビュー・オブジェクトを開き、ツリーから「 Attributes」を選択します。 Eidの主キーを右クリックし、コンテキストから「 Edit」を選択します。新規イベントの挿入時にEidの一意の値を作成する次の式を追加します。
Eidの Property Inspectorで、 デフォルトのValue Typeが Expressionに設定されていることを確認してください。
(Eid==null?UUID.randomUUID().toString():Eid)
これで、カレンダーへイベントを追加する際に使用されるいくつかの属性がビュー・オブジェクトに作成されます。 FodCalEventVOのツリー内の「 Attributes」ノードを選択し、次の属性を追加します。
| 名前 | 種類 | 列 | 情報 |
| Recurring | 文字列 | Transient | |
| TimeType | 文字列 | Transient | |
| AllDay | ブール値 | Transient |
このビュー・オブジェクトのSQL問合せで使用される次の名前付きバインド変数を追加します。
| 名前 | 種類 | デフォルト | 情報 |
| Tz | 文字列 | ||
| StartDayTime | Timestamp | ||
| EndDayTime | Timestamp |
「 TimeZone」(Tz)変数を右クリックし、コンテキストから「 Edit」を選択します。 次の式を追加し、 Value Typeが Expressionに設定されていることを確認します。 これで、使用中のカレンダーの現在のタイムゾーンが取得されます。
TimeZone.getDefault().getID()
エンティティ・オブジェクトおよびビュー・オブジェクトはこの時点で完了していますが、アプリケーション・モジュールにはデータ・モデル・コンポーネントに追加されたビュー・オブジェクトが必要です。 「 FODADFCalAppModule」を開き、ツリーから「 Data Model」ノードを選択します。 「 FodCalEventVO」を選択し、 Available View Objectsから Data Modelへ移動し、 FodCalEventVOへ名前を変えます。 再度移動して挿入操作を行い、 FodCalEventVOInsertと名付けます。
この時点で、必要な属性などの提供されたカレンダー・スキーマに基づくエンティティ・オブジェクトおよびビュー・オブジェクトが、必要なバインド変数とともに作成されました。これで、CalendarコンポーネントをJSFページに追加して設定ができるようになり、必要な場合はさらに機能を追加できます。 次のセクションでは、基本的なCRUD操作のポップアップ機能とともに、カレンダー、アクティビティおよびプロバイダのロジックを含むマネージドBeanに他のロジックを追加します。
ビジネス・コンポーネントが作成されると、必要はありませんが、このカレンダーの実装を再利用できるようにTask Flowがビューとともに作成されます。 さらに、基本のCRUD操作のためにポップアップ機能が追加されます。 「 ViewControllerproject」を右クリックし、コンテキストから「 new」を選択します。 「 Web Tier」ノードを選択し、ツリーから「 JSF」、アイテムから「 ADF Task Flow」を選択します。
Component Paletteドロップダウンから「 ADF Task Flow」を選択し、 Componentsアコーディオンから「 View」をタスク・フローへドラッグ・アンド・ドロップして、 calendarと名付けます。 カレンダー・ビューをダブルクリックして、新しいJSFページの断片を作成します。
次に、カレンダーを作成して構成できます。 「 Data Controls」アコーディオンを展開し、上記(FodCalEventVO)で作成されたアクティビティのビュー・オブジェクトを表すコレクションをドラッグして、Calendarとしてドロップします。
スキーマ属性を使用するようにカレンダーを構成し、「 Finish」を選択します。 以降のカレンダーの構成は、 calendar.jsffページ断片の Bindingsセクションを通じて行います。
カレンダーが作成されたら、 calendar.jsffページ断片のエディタで「 Bindings」タブを選択し、 Modelが以下のようになっていることを確認してください。
以下の 実行可能ファイルおよび バインディングを、上記のように Page Data Binding Definitionに追加する必要があります。
実行可能ファイル: 以下のイテレータを追加します。
FodCalEventVOInsertIterator
バインディング:以下の アクション、 属性値および ボタンをすべて FODADFCalAppModuleDataControl.FodCalEventVOInsertから追加します。
CreateInsert (アクション)
Commit (アクション)
Rollback (アクション)
Eid1 (属性値)
CommunityId1 (属性値)
Summary1 (属性値)
StartTime1 (属性値)
EndTime1 (属性値)
Location1 (属性値)
IsAllDayEvent1 (属性値)
IsAllDayEvent (ボタン)
マネージドBeanを作成します。マネージドBeanには、カレンダー、アクティビティおよびプロバイダのロジックが含まれます。 クラス自体は、ダウンロード可能なアプリケーション・ワークプレースで提供されるため、ロジックに関する詳細すべてを読者が確認できます。 また、マネージドBeanが使用する2つのユーティリティ・クラス( ADFUtils.javaおよび JSFUtils.java)も提供されます。
マネージドBeanが作成されたら、 calendar-task-flow.xmlを開き、ツリーの「 Managed Beans」ノードを選択します。 マネージドBeanを calendar-task-flow.xml Managed Beansセクションに追加します。
カレンダーの基本機能は作成されましたが、次にポップアップ機能をCRUD操作向けに含めます。 これは、ポップアップおよび関連するコンポーネントを、関連するファセットに作成することによって実行します。
Structureウィンドウで、「 calendar」コンポーネント・ノードを開いてカレンダー・ファセットを表示させます。
『Oracle Fusion Middleware Web User Interface Developer's Guide for Oracle Application Development Framework』の Table 15-1に基づいて、機能を提供したいユーザー・アクションに対応するファセットにポップアップ・コンポーネントを作成します。 たとえば、ユーザーがアクティビティをクリックして[Delete]キーを押すことによってアクティビティを削除できるようにした場合、activityDeleteファセットにポップアップ・ダイアログを追加します。
ポップアップ・コンポーネントを追加するには、Structureウィンドウでファセットを右クリックし、 Insert inside ファセット名→ コンポーネント名を選択します。 この場合は、新規イベントを作成するポップアップを作成するため、createファセットに挿入します。
カレンダー・イベントを編集および削除する2番目のポップアップも、サンプルのカレンダー・アプリケーションで使用されます。これは、 activityDetailファセットの内部で作成されます。 詳細は、読者が calendar.jsffページ断片のソースを参照することによって確認できます。 ポップアップ・コンポーネントの作成について詳しくは、 Chapter 13の"Using Popup Dialogs, Menus, and Windows"を参照してください。
calendarActivityListenerに必要なロジックをすべて実装します。 たとえば、 activityDetailファセットのロジックを実装する場合、現在のアクティビティを保存できるロジックを calendarActivityListenerに実装し、削除するアクティビティが分かるようにします。 以前と同様、詳細は CalendarBeanマネージドBeanのコード内に置かれ、読者による確認のために残されます。
この時点で作業を保存し、jsf xmlドキュメントを作成して、 index.jspxなどの適切な名前を付けます。 calendar-task-flowをindex.jspxページへドロップし、 Regionとして作成します。
アプリケーションを実行するには、「 index.jspx」ページを右クリックし、コンテキストから「 Run」を選択します。 これにより、アプリケーションがパッケージ化され、統合されたOracle WebLogicサーバーが起動し、アプリケーションがサーバーへ配置されて、作業をテストできるようになります。 カレンダーの任意の場所をクリックすると、イベントを作成するポップアップ・ダイアログが表示されます。また、Calendarコンポーネントのデフォルトで提供されるさまざまなビューを試してみてください。
既存のイベントを選択して、更新または削除します。
新しいCalendarコンポーネントを使用したカレンダー・アプリケーションの作成について詳しくは、『Oracle Fusion Middleware Web User Interface Developer's Guide for Oracle Application Development Framework 11g Release 1 (11.1.1.1.0)』を参照してください。