Oracle® Fusion Middleware Oracle Application Development Framework Swingアプリケーションの開発 12c (12.1.3) E59440-01 |
|
![]() 前 |
![]() 次 |
この章では、ADF SwingテクノロジおよびADF Swingアーキテクチャについて説明します。
この章の内容は次のとおりです。
このマニュアルおよびこの他のマニュアルに、なじみのない用語が出てきた場合は、用語集で定義を確認してください。
ADF Swingは、データバインドされたJavaクライアントを開発するためのテクノロジであり、これによりSwingコンポーネントとビジネス・サービスとの間の相互作用のコーディングが単純化されます。ADF Swingは、次の構成は次のとおりです。
Javaクラス、およびSwingコンポーネントをビジネス・サービスにバインドするためのAPI
XMLデータ定義および構成ファイル
データバインドJavaフォームを作成するためのデザインタイム・ツール(ウィザードなど)
特定のSwingコンポーネントを拡張するいくつかのユーザー・インタフェース・コンポーネント
Oracle Application Development Framework (Oracle ADF)では、ADF Swingを使用して、ADFビジネス・コンポーネント、Enterprise Java Bean、Webサービスなどバック・エンドのいくつかのビジネス・サービスと連携できます。
JDeveloperには、ADF Swing (データバインドJavaクライアントの開発テクノロジ)による開発を可能にするツールおよびウィザードがあります。これらのデータバインドされたJavaクライアントによって、Oracle ADFアプリケーション内のSwingコンポーネントとビジネス・サービスとの間の相互作用のコーディングが単純化されます。
さらに、JDeveloperは、Swingパネルおよびフォームを作成および編集するためのADF Swingウィザードなど、いくつかのADF Swing固有の編集ツールも備えています。
ADF Swingを使用してJava Swingクライアントを構築する利点は、次のとおりです。
ウィザードによって、ADF Swingフォームがすばやく作成されます。
次のような任意のモデルベースのコントロールに対してデータ・ソースへのバインディングがサポートされます。
標準Swingコンポーネント
JDeveloper提供のADF Swingコンポーネント
サード・パーティ・モデルベースのアドイン・コンポーネント
XMLデータ定義によって、ADF Swingフレームおよびパネルを簡単に再使用可能です。
Javaクライアントから、直接ADFバインディングを通してモデル・レイヤーのADFビジネス・コンポーネントのリモート・メソッドを使用できます。
ADF SwingとADFビジネス・コンポーネントを使用するデスク・アプリケーションでは、データ・アクセスの実装とロジックの更新は必要ありません。ADF SwingおよびADFビジネス・コンポーネントは、データ・アクセス・コードとUIコードを明確に分離することで、ビュー・レイヤーに負荷をかけないシン・クライアントを実現します。さらに、ADF Swingを使用することでデータ・アクセスが向上します。それは、ADFビジネス・コンポーネントへのそれのバインディングによって、ADFビジネス・コンポーネントに実装されている多数のパフォーマンス機能を活用できるためです。さらに、ADF Swingは、Model-View-Controllerアーキテクチャに依存しているため、ADF Swingフォームの設計は、Swingコンポーネントを使用する場合と変わりません。
さらにJavaクライアント・コードは単純化可能であり、これはADFビジネス・コンポーネントのデプロイ方法に関係なく、アクセス方法を変更する必要がないためです。かわりに、デスクトップ・アプリケーションは、ADFビジネス・コンポーネントの機能によって、単純な構成定義ファイルを使用してアプリケーション・モジュールに接続します。Javaクライアント・コードは、次のどのデプロイメント・シナリオでも変わりません。
ADFビジネス・コンポーネントが、ADF Swingと同じVMにローカルにデプロイされている
ADFビジネス・コンポーネントが、EJBを使用してリモートにデプロイされている
ADF Swingは、Oracle ADFのテクノロジであり、Swingコンポーネントを使用してデータバインドされているJavaクライアントの構築を容易にします。ADF Swing APIは、Oracle ADFの機能を利用して、バックエンド・ビジネス・サービスにバインドされているJava UIを構築する一連のJavaクラスで構成されています。クライアントとビジネス・サービスの間の通信は、Oracle ADFヘルパー・クラスによって処理されます。
ADF Swingのアーキテクチャは、Model-View-Controller (MVC)パターンに基づいています。MVCでは、次のように、各コンポーネントが論理的に分離している3つの通信オブジェクトがあります。
モデルは、コンポーネントのデータまたは状態を表しており、それの基礎となる論理表現です。
ビューは、コンポーネントのビジュアル表現であり、それがどのように表示されるのか(たとえば、それがボタンなのか何か他のコントロールなのか、テキストとアイコンのどちらを使用するのか、どのような境界線および色を使用するのか)を記述します。
コントローラは、クライアントとの相互作用(ユーザーによる入力の解釈方法)を指定します。コントローラは、ユーザーがテキストを入力したとき、ボタンをクリックしたとき、[Tab]キーで次のフィールドに移動したときなどに、登録されているリスナーに通知します。
たとえば、JCheckBox
は、定義済のモデル、ビューおよびコントローラを持つSwingコンポーネントです。ユーザーがチェック・ボックスをクリックすることでコントローラと相互作用したときに、モデルの状態を(falseからtrueに、またはその逆に)変更する必要があることがコントローラからモデルに通知されます。ビューは、モデルの状態の変更をリスニングし、その後(たとえば、チェック・ボックスを選択した状態の表示にすることで)それ自体を更新できます。このアーキテクチャに関する重要な点は、モデルが、それを表示している1つまたは複数のビューも、それを更新するために使用されるコントロールも認識していないことです。
Swing APIによって、コンポーネントのmodel
または、場合によってはdocument
プロパティを使用してすべてのコンポーネントにモデルを設定できます。Swingでは、JTextComponent
のどのサブクラスのモデルも、documentという名前が付いており、それには、setDocument()
およびgetDocument()
メソッドを使用してアクセスします。標準のSwing JLabel
コンポーネントはデータを表さないため、MVCアーキテクチャにはなりません。ただし、ビジネス・コンポーネント・データを使用してラベルを割り当てる必要がある場合にこの制限に対処するために、ADF SwingはJULabel
コンポーネントを備えています。
標準Swingコンポーネントに依存するJavaデスクトップ・アプリケーションを作成し、そのアプリケーションにOracle ADFの利点を組み込むことができます。このドキュメントでは、ADF Javaデスクトップ・アプリケーションを、ADF Swingアプリケーションと呼びます。JDeveloperでADF Swingアプリケーションを作成する場合:
JDeveloperの「新規ギャラリ」のADF Swingウィザードを使用して、データバインドされたフォームおよびパネルをすばやく生成できます。
「データ・コントロール」パネルを使用して、データバインドされたSwingコンポーネントを、ADF Swingフォームおよびパネルにすばやく追加できます。
ADF Swingフォームおよびパネルを生成した後、続けて、Javaビジュアル・エディタを使用してフォームの外観をカスタマイズできます。
ADF Swingアプリケーションを作成する手順は次のとおりです。
JDeveloperのメニューから、「ファイル」→「新規」→「ギャラリから」を選択します。
「新規ギャラリ」で、「一般」カテゴリを開き、「アイテム」リストから「Javaデスクトップ・アプリケーション」をダブルクリックします。
Javaデスクトップ・アプリケーションの作成ウィザードを使用してアプリケーションおよびプロジェクトに名前を付けます。
これにより、データ・モデル・プロジェクトにビジネス・サービスのADFビジネス・コンポーネントを組み込むADF Swingアプリケーションが作成されます。詳細は、Oracle Application Development FrameworkによるFusion Webアプリケーションの開発のADFビジネス・コンポーネント・スタートガイドを参照してください。
注意: アプリケーション・エラーを防ぐために、ビジネス・サービスとJavaクライアント・アプリケーションの開発には個別のプロジェクト・フォルダを使用する必要があります。JDeveloperアプリケーション・テンプレートにより、ワークスペースに個別のプロジェクト・フォルダが作成されます。 |
「アプリケーション」ウィンドウで、データ・モデル・プロジェクトを選択し、「ファイル」→「新規」→「ギャラリから」を選択します。
「新規ギャラリ」で、ビジネス層 - ADFビジネス・コンポーネントを開き、「アイテム」リストの「表からのビジネス・コンポーネント」をダブルクリックします。
「ビジネス・コンポーネント・プロジェクトの初期化」ダイアログを使用して、ビジネス・コンポーネントの基礎とする表が含まれているデータベースへの接続を作成します。
詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のデータベース接続を使用してデータ・モデル・プロジェクトを初期化する方法に関する項を参照してください。
表からのビジネス・コンポーネントの作成ウィザードを使用して、データ・モデル・プロジェクトのビジネス・コンポーネントに移入します。
詳細は、「Oracle Application Development FrameworkでのFusion Webアプリケーションの開発」の既存の表からの複数のエンティティ・オブジェクトおよびアソシエーションの作成方法に関する項を参照してください。
「アプリケーション」ウィンドウで、ユーザー・インタフェース・プロジェクトを選択し、メイン・メニューから「ファイル」→「新規」→「ギャラリから」を選択します。
「新規ギャラリ」で、「クライアント層」を開き、「ADF Swing」を開き、「空のフォーム」または「空のパネル」をダブルクリックします。
ADF Swingウィザードまたは「ADF Swing」ダイアログを使用して、ADF Swingフォームまたはパネルをユーザー・インタフェース・プロジェクトに追加します。
Javaビジュアル・エディタ内にファイルが開きます。詳細は、「ADF Swingフォームおよびパネルの作成」を参照してください。
注意: ADF Swingウィザードを使用して、必要なブートストラップ・コードが含まれる |
「アプリケーション」ウィンドウで、「データ・コントロール」パネルを開き、それを使用して、データバインドされたUIコンポーネントを、開いているドキュメントに挿入します。
詳細は、第3.3項「ADF SwingパネルへのUIコンポーネントの挿入方法」を参照してください。
(オプション) 「データ・コントロール」パネルを使用して、ビジネス・サービス・アクションを、開いているドキュメントに挿入します。
詳細は、第3.8項「ADF Swingフォームでのメソッドとパラメータとのバインディング」を参照してください。
ADFバインディングを、それらに対応するバインディング・エディタで定義し、そのバインディングの必須のプロパティを指定します。
詳細は、第5章「ADFバインディングのカスタマイズ」を参照してください。
ADF Swingアプリケーションでは、Swingコントロールとビジネス・サービスのデータ・ソース間のデータ・バインディングは、ADF Swingフォームを作成するために使用するUIコンテナによく似た一連のADF Swingオブジェクトの作成によって行います。このコンテナと、コンテナのADF Swing専用コードは、ADF Swingフォーム・ウィザードを使用して完全なアプリケーションを生成したときに確認できます。たとえば、Dept
およびEmp
ビュー・オブジェクトを基にしたマスター/ディテール・タイプ・フォームの場合は、ウィザードによって次のクラスが生成されます。
FrameDeptViewEmpView1
: ADF SwingFrame
を拡張します(ADF SwingPanel
インタフェースのダミー実装)
MDPanelDeptViewEmpView1
: JPanel
を拡張し、ADF SwingPanel
を実装します。
PanelDeptView
: JPanel
を拡張し、ADF SwingPanel
を実装します。
PanelEmpView1
: JPanel
を拡張し、ADF SwingPanel
を実装します。
ここで、JPanel
はSwingクラスであり、ADF SwingFrame
およびADF SwingPanel
は、ADF Swingの一部であり、アプリケーションのデータ参照パネルを構成します。
出力されるプロジェクト・ファイルと、例1-1に示すADF Swingパネルまたはフォームのモデル参照によって、データバインドされたUIコンポーネントは実行時にADFモデル・レイヤーにアクセスできるようになります。
例1-1 ADF Swingフォームでのモデル参照
(panel.setBindingContext(JUTestFrame.startTestFrame("DataBindings.cpx", "null", panel, panel.getPanelBinding(), new Dimension(400, 300)));)
詳細は、第4.1項「データ・バインディングでの作業について」を参照してください。
DataBindings.cpx
ファイルは、個々のページをページ定義ファイルにマップし、DataControls.dcx
ファイルで定義されているデータ・コントロールの使用方法を宣言します。.cpx
ファイルでは、アプリケーション全体のOracle ADFバインディング・コンテキストが定義され、メタデータが提供されます。実行時には、このメタデータからOracle ADFバインディング・オブジェクトが作成されます。
ADF Swingアプリケーションは、ADFビジネス・コンポーネントを使用して、デプロイされているビジネス・サービスに接続します。ADF Swingアプリケーションのサーバー接続情報の定義は、bc4j.xcfg
構成ファイルに依存しています。このファイルは、データ・モデル・プロジェクト内の特定のアプリケーション・モジュールのすべてのデプロイメント構成を定義し、ADF Swingフォームがアプリケーション・モジュールに属する特定のビュー・オブジェクトにアクセスすることを可能にします。
この構成ファイルを編集することで、ADF SwingアプリケーションがADFビジネス・コンポーネント・アプリケーション・モジュールのデプロイメント・シナリオを識別するために使用する接続情報を更新できます。
注意:
|
JDeveloperで、データベース・ウィンドウのアプリケーション・モジュール・ノードを右クリックして「構成」を選択することにより、Configuration Managerを使用して構成を作成および編集できます。JDeveloperのアプリケーション・モジュールの概要エディタの「構成」ページで、新しい構成を作成し、デフォルトの構成を変更できます。
JDeveloperは、/myclasses
に生成されるADFビジネス・コンポーネント・パッケージの共通ディレクトリにbc4j.xcfg
ファイルを配置します。たとえば、OnlineOrders
という名前のADFビジネス・コンポーネント・パッケージに対して生成されるbc4j.xcfg
ファイルは、次のようになります。
<jdev_install>
/myclasses/OnlineOrders/common/bc4j.xcfg
注意: アプリケーションで使用する構成ファイルを変更する場合は、データ・モデル・プロジェクトを再構築し、構成をADF Swingクライアントで使用できるようにする必要があります。 |
ADF Swingアプリケーションをデプロイする際に、構成ファイルはデプロイしません。ADFビジネス・コンポーネント・アプリケーション・モジュールのデプロイ担当者が、アプリケーション・モジュール・クラス・ディレクトリのサブディレクトリとしてbc4j.xcfg
ファイルを自動的にデプロイします。デプロイされたbc4j.xcfg
ファイルに、ADF Swingアプリケーションで使用するために指定した構成が含まれていることと、構成情報が正しいことのみ確認する必要があります。
ランタイム構成(bc4j.xcfg
ファイルの)を作成または更新する場合、JDeveloperによっていくつかのアプリケーション・ライブラリが更新されます。ライブラリの1つには、ADF Swingユーザー・インタフェース・プロジェクトおよびADFビジネス・コンポーネント・データ・モデル・プロジェクト(Workspace1_jws_Project1_jpr_ClassesMypackage1ModuleLocal
に類似した名前を持つ)に共通のクラス・ファイルが含まれており、それらはJDeveloperでADF Swingアプリケーションをコンパイルして実行するために必要です。このライブラリは、JDeveloperによって、最後に保存された構成定義に基づいて更新されます。したがって、場合によっては、データ・モデル定義を再編集して、目的のクラスでライブラリを更新する必要があります。また、ユーザー・インタフェース・プロジェクトおよびデータ・モデル・プロジェクトを新しいインストールに移動する場合、"指定されたユーザー・ライブラリ"定義をすべて移動する必要があります。ユーザー・ライブラリはすべて、<jdev_install>/system
フォルダのlibraries.xml
ファイルにあり、このファイルを新しいJDeveloperインストールにコピーする必要があります。