21 PaaS-SaaS統合アプリケーションでのADFビュー・コンポーネントの開発

ADFビュー・コンポーネントは、Webサービスのプロキシからデータ・コントロールを直接作成する際のアプリケーションのUI要件が複雑すぎる場合に常に、実行可能な代替手段を提供します。

モデル・レイヤー内のWebサービス・レスポンス・ペイロードがビュー・レイヤーで必要なものとは構造的に異なる統合ユースケースに取り組む場合、ビュー開発プロセスの一環としてレスポンス・ペイロードから使用可能なものへの変換ステップを開発する必要があります。

Oracle Application Development Framework (ADF)環境に求められる最終的な状態は、データ・コントロールと対になるUIビューの間で構造的に重複する部分の量を最大化することです。一般的に変更不可であるというWebサービス・レスポンス・ペイロードの性質から判断すると、このように求められる最終的な状態に必要な追加の開発作業の形式には、それなりの対価が生じます。プラスの側面としては、UIの作成作業に伴う困難な作業が軽減されます。

ADF UIビューの開発の準備をする場合、次の2つの戦略のいずれかに従うことができます。
  • データ第一 – UIの開発フェーズを開始する前に、すべてのモデル・コンポーネントを設計、構築およびステージングできます。

  • UI第一 – プレースホルダー・データ・コントロールを構築し、これらをプロキシとして使用することにより、宣言UIの開発プロセスを有効にできます。ライブ・データ・コントロールのリワークおよびリファクタの量を最小限に抑えるには、各ライブ・コントロールのフットプリントが対応するプレースホルダー・データ・コントロールのフットプリントと最終的に一致するようにすることが重要です。

プレースホルダー・データ・コントロールの作成

UI第一の戦略の場合、Webサービスのデータ・ソースとUI要件の間の構造的な重複の評価にはある程度時間がかかる可能性があります。Oracle JDeveloperまたはOracle Enterprise Pack for Eclipse (OEPE – (非常に限定された方法))を使用して、宣言UI開発を可能にすることができます。どちらのIDEでも、Model-View-Controller (MVC)モデルの基盤を必要としないプレースホルダー・データ・コントロールを作成できます。

この戦略の値を実現できるのは、プレースホルダー・データ・コントロールが、このプレースホルダの構造をミラー化する実際のデータ・コントロールによって後で置き換えられる場合のみです。

Oracle JDeveloper

Oracle JDeveloperの新規ギャラリから、「カテゴリ」ペインで「すべてのテクノロジ」タブを選択し、「ビジネス層」カテゴリを展開してから、「データ・コントロール」をクリックします。次に、「アイテム」ペインで、「プレースホルダー・データ・コントロール」を選択し、「OK」をクリックします。


jdev-new-gallery.jpgの説明が続きます
図jdev-new-gallery.jpgの説明

「プレースホルダー・データ・コントロールの作成」ダイアログ・ボックスで、プレースホルダ名、パッケージの場所および説明を入力してから、「OK」をクリックします。


jdev-create-placeholder.jpgの説明が続きます
図jdev-create-placeholder.jpgの説明

このアクションにより、コミット操作およびロールバック操作を例外として空のデータ・コントロールが作成され、ビュー・プロジェクトのDataControls.dcxレジストリにエントリが追加されます(このファイルがまだ存在しない場合は作成されます)。

データ・コントロールにデータ属性を移入するには、「データ・コントロール」パネルで新しく作成したデータ・コントロールを右クリックし、「プレースホルダー・データ型の作成…」を選択します。「プレースホルダー・データ型の作成」ダイアログ・ボックスには、作成対象の各データ属性の機能を定義するために複数のデータ属性をデータ・エントリ・フィールドとともに作成するメソッドが含まれます。事前に作成した属性リストからコピーするための機能も公開されます。また、属性が作成された後に属性にサンプル・データを移入する機能もあります。


jdev-create-placeholder-definition.jpgの説明が続きます
図jdev-create-placeholder-definition.jpgの説明

ダイアログ・ボックス内で構成するために次の属性項目が用意されています。

  • 名前: 属性の一意の名前

  • : 属性の型(「文字列」、「ブール」、「日付」、「数値」)

  • デフォルト・コンポーネント: UIコンポーネントのタイプ(「チェックボックス」、「選択リスト」、「コンボ・ボックス」、LOVを使用したコンボ・ボックス、「日付」、「デフォルト」、「編集」、「イメージ」、LOVを使用した入力テキスト、「リスト・ボックス」、「番号の編集」および「ラジオ・グループ」)

  • デフォルト値: データ属性に内部的に割り当てる値

  • ラベル: 属性のテキストUIラベル

  • 「フォーマット・タイプ」および「フォーマット」: データ型に該当する場合にフォーマット機能を提供します(たとえば、データ属性を対象とした様々な月、日および年の組合せを使用した単純な日付フォーマットなど)

  • 検索可能: 選択されている場合、属性の検索が可能になります

  • LOVバインディングの使用: 選択されている場合、属性に対して固定値リストまたは動的値リストの使用が可能になります

データ・コントロールに対してすべてのデータ属性が定義された後(およびオプションで、サンプル・データが追加された後)、このデータ・コントロールを標準データ・コントロールと同じ使用方法で使用できるようになります。プレースホルダを使用してUIビュー・コンポーネントを構築した後、ジョブは完了します。ページを本当に使用可能にするために、次のステップには、プレースホルダの構造をミラー化する標準データ・コントロールを作成してから、ページを標準データ・コントロールに再バインドするために次に使用されるデータ・ソースを作成することが含まれます。

Oracle Enterprise Pack for Eclipse

プレースホルダー・データ・コントロールは、Oracle Enterprise Pack for Eclipse (OEPE)の最新のバージョンではサポートされていません。通常、OEPEには、最小限のタスク・セットを使用してデータ・コントロールを迅速かつ簡単に作成するためのOracle JDeveloperレベルのサポートが用意されていません。OEPEでデータ・コントロールを作成する前に、事前定義済のJava Persistence API (JPA)エンティティからEnterprise JavaBeans (EJB)を作成することが必要です。特に、OEPEでUI第一シナリオと呼ばれるシナリオの場合は依然として、事前に構築されたEJB構成データ・ソースが必要であり、データ第一とUI第一の開発シナリオにおける唯一の違いは、データ・コントロールがEJBオブジェクトからすでに作成されている場合のステップの順序です。

OEPEでJavaオブジェクトからデータ・コントロールを作成するステップの詳細は、「POJOクラスからのデータ・コントロールの作成」を参照してください。

クライアントWebプロキシからのデータ・コントロールについて

まれに、UI要件が非常に基本的なものであるか、Webサービス・レスポンス・ペイロードに含まれるデータ要素がUIビューに含める内容と構造的に重複している場合、Webプロキシからデータ・コントロールを直接作成した方が有利なことがあります。これが、Webサービスから作成されるデータ・コントロールを取得する最も直接的な経路です。

クライアントWebサービス・プロキシ・クラスを作成した後、JDeveloperを使用して、サービスのWSDLドキュメントに基づいてWebサービスのデータ・コントロールを作成できます。OEPEには、WSDLドキュメントからデータ・コントロールを作成する直接のパスはありません。

POJOクラスからのデータ・コントロールの作成

Webサービス・レスポンス・ペイロードと、UIに必要な内容との間に構造的な関係がほとんどないか一切ない場合、Webサービス・プロキシからデータ・コントロールを直接作成することは実行可能でも望ましくもありませんが、このような場合の代替手段として、プロキシ・オブジェクトやメソッドから抽出された一連のJavaクラスを作成し、これらのJavaクラスから、UIコンポーネントのレイアウトと同様のフットプリントを持つデータ・コントロールを作成します。

Webプロキシ・クライアント関数の周辺にPlain Old Java Object (POJO)ラッパー・クラスを作成すると、柔軟性を大幅に高めることができます。Javaクラス内でデータ属性および操作を公開することにより、すべてではなくとも、ほとんどのUI要件を満たすことが可能になります。特別なメリットとして、Webサービスのデータ・ソースが、開始パラメータおよびフェッチ・サイズ・パラメータとともにデータを返す関数をサポートしている場合、ページ区切りロジックをJavaラッパー・クラスに組み込むことができる点があります。

JavaBeanデータ・コントロールのソースとして使用するPOJOラッパー・クラスの一般的な設計手法は、ユーザー・インタフェース内のオブジェクトとしてレンダリングする各データ・コンポーネントのパブリックgetterおよびsetterメソッドを作成する手法です。他のBean以外のメソッドは必要に応じて作成され、データ・コントロール内でデータ・オブジェクトのかわりに操作(カスタム・イテレータ、find操作およびカスタム・コミットなど)としてキャストされます。

Oracle JDeveloper

理論上、Javaクラスからのデータ・コントロールの作成は、WSDLファイルからのデータ・コントロールの作成と非常に似ています。POJOクラス(慣例により、通常、データに異なる「プレゼンテーション」を付与するという事実のため、ファサード・ラッパーと呼ばれます)の作成後、データ・コントロールの作成に進みます。

JDeveloperアプリケーション・ナビゲータで新しく作成したJavaクラスを右クリックしてから、「データ・コントロールの作成」を選択します。


jdev-java-class-context.jpgの説明が続きます
図jdev-java-class-context.jpgの説明

データ・コントロールの作成の結果として、JDeveloperで複数の新しいオブジェクトが作成されます。POJOソース・ファイルは元の状態のままですが、これらのクラスを拡張する複数のメタデータ・ディスクリプタ・ファイル(XMLフォーマット)が配置されています。これらのメタデータ・ファイルを使用して、検証ルール、デフォルト・ラベル、ツールチップおよび他のフォーマット・ルールが作成され、これらはすべて、集中管理された1つの場所に格納されるため、新しい各ビューとともにこれらのロールを作成する必要なく、これらをUIページによって選択できるようになります。

Oracle Enterprise Pack for Eclipse

「新規データ制御」ダイアログ・ボックスで、データ・コントロールのソース・プロジェクトおよびソースJavaBeanのソース・クラスを選択してから、「Next」をクリックします。


eclipse-data-control-source.jpgの説明が続きます
図eclipse-data-control-source.jpgの説明

必要に応じて、データ・コントロールのIDを変更し、「Next」をクリックします。

「サマリー」ダイアログ・ボックス内のデータ・コントロールの構成オプションをレビューし、必要に応じて修正し、「終了」をクリックします。


eclipse-data-control-summary.jpgの説明が続きます
図eclipse-data-control-summary.jpgの説明

OEPEデータ・コントロール・ウィザードでは、JDeveloperによって生成されたものと実質的に等しい一連のアーティファクトが生成されます。



JDeveloperのデータ・コントロール・ナビゲータのかわりに、OEPEにはデータ・コントロール・マネージャが用意されています。


eclipse-data-control-manager.jpgの説明が続きます
図eclipse-data-control-manager.jpgの説明

OEPEには、JavaBean要素にメタデータ・コントロール属性を割り当てるためのXMLエディタが用意されていますが、編集機能は、JDeveloperに用意されているものと比べて若干簡素なものです。


eclipse-xml-editor.jpgの説明が続きます
図eclipse-xml-editor.jpgの説明

サマリー

サード・パーティのアプリケーションから返される固定された変更不可のWebサービス・レスポンス・ペイロードがUI開発者にとって使いやすいことは、めったにありません。たいていの場合、アプリケーションのプレゼンテーションとレイアウトに関する要件を満たすことができるようにWebサービス・レスポンスの周辺にPOJOラッパー・クラスを作成することが必要になります。

プロジェクトの時系列およびビジネス・オブジェクトとユーザー・インタフェースの開発トラック間の相互作用によっては、UIの開発を進めるためにプレースホルダー・データ・コントロールを作成する方が有益である場合があります。この経路を使用すると、UI要件に準拠するためにWebサービス・レスポンス・ペイロードを変換するPOJOラッパーから構築されたライブ・データ・コントロールを、他の開発チームが提供する準備が整うまで待機する必要なく、UI開発を進めることができます。