この章の内容は次のとおりです。
問合せをポストする単純なURLをURLサービスにして、そのURLをADFフォームとして公開できます。たとえば、会社の従業員データにアクセスできるURLサービスがあるとします。このデータは、次の例に示すようなURLを使用して取得できます。
http://example.com/getEmployee?empId=20+deptId=10
従業員データにアクセスするこの単純なURLを、メソッド(getEmployee
)と2つのパラメータ(empId
およびdeptId
)を持つADFデータ・コントロールにして、フォームとしてページにドロップできます。
また、URLサービスでは、Representational State Transfer (REST)アクションを利用できます。RESTサービスは、複雑なSOAPプロトコルではなく、単純なHTTP URLを使用してアクセスできるWebサービスです。HTTPの各アクション(GET
、PUT
、POST
、DELETE
)は、サービスの実装時に、データに対するアクセスと操作を行うサービス操作にマップされます。応答データはデリミタ区切り値とXMLフォーマットで返すことができ、XSDを指定すると、PUT
およびPOST
アクションの入力フォーマットを定義できます。
注意:
この章では、URLサービス・データ・コントロール・タイプを使用した、単一のURLサービスに基づくデータ・コントロールの作成について主に説明します。REST Webサービスに基づくデータ・コントロールを作成するには、「REST Webサービス」データ・コントロール・タイプを使用すると便利です。このタイプを使用すれば、ウィザードを1回通して実行するだけで、複数のRESTメソッドを1つのデータ・コントロールに取り込むことができます。RESTful Webサービス用のデータ・コントロールの作成方法の詳細は、「RESTful Webサービス用のデータ・コントロールを作成する方法」を参照してください。
URLサービスを使用する前に、他のデータ・アクセス機能を理解しておくと役立つ場合があります。次に、関連する他の機能へのリンクを示します。
「データ・コントロール」パネルから項目をドラッグし、それを特定のUIコンポーネントとしてページ上にドロップすることで、データバインドされたユーザー・インタフェースを設計できます。「データ・コントロール」パネルの使用の詳細は、「「データ・コントロール」パネルの使用方法」を参照してください。
データ・コントロールの作成に関する一般情報については、「ADFデータ・コントロールの使用」を参照してください。
Webサービス・データ・コントロールの作成の詳細は、「ADFモデル・レイヤーを使用したWebサービスの公開」を参照してください。
RESTアーキテクチャでは、WebサービスがHTTPリソースとして表され、Webサービスのメソッドと操作がHTTP URLからアクセスできるサーバー上のリソースのように認識されるため、Webサービス起動が簡単になります。
たとえば、あるWebサービスにgetEmployee(int EmpID)
というメソッドがあるとします。RESTアーキテクチャを使用すると、これをhttp://mywebservice.com/myService/getEmployee?EmpID=20
とできます。プレーンなHTTP URLとして表すと、このサービスにアクセスするデータバインドされたページを、URLサービス・データ・コントロールを使用して簡単に作成できます。
URLサービスのADFデータ・コントロールを使用すると、ADFアプリケーションは指定のURLからデータ・ストリームにアクセスしてそれを使用できます。
URLサービス・データ・コントロールは、複数の操作を表すことができます。たとえば、URLサービス・データ・コントロールを使用して、特定のURLサービスのGET
操作とPUT
操作を同じデータ・コントロール内に公開できます。
URL接続を作成するには、「URL接続の作成」ダイアログを使用して、名前、およびURLエンドポイントへのアクセスに必要な接続の詳細を指定します。このダイアログには、「URLサービス・データ・コントロールの作成」ウィザードからアクセスすることも、別個にアクセスすることもできます。「URLサービス・データ・コントロールの作成」ウィザードからダイアログにアクセスする場合は、データ・コントロールのアプリケーションにのみ接続が適用されます。ダイアログに別個にアクセスする場合は、単一のIDEレベル接続を作成して、複数のデータ・コントロールにコピーできます。
始める前に:
URLサービス・データ・コントロールの一般的な知識があると役立ちます。データ・コントロールを使用したURLサービスの公開の詳細は、「ADFデータ・コントロールを使用したURLサービスの公開」を参照してください。
また、他のURLサービス機能を使用して追加できる機能についても理解しておくと役立ちます。URLサービスの追加機能の詳細は、「URLサービスの追加機能」を参照してください。
データ・コントロールからアクセスされるURLサービスへのアクセス権があることを確認する必要があります。
IDEレベルURL接続を作成する手順は次のとおりです。
URLサービス・データ・コントロールは、「新規ギャラリ」にある、「URLサービス・データ・コントロールの作成」ウィザードを使用して作成できます。URLサービス・データ・コントロールを作成するときには、ウィザードを使用して操作を1つずつ作成します。
始める前に:
URLサービス・データ・コントロールの一般的な知識があると役立ちます。データ・コントロールを使用したURLサービスの公開の詳細は、「ADFデータ・コントロールを使用したURLサービスの公開」を参照してください。
また、他のURLサービス機能を使用して追加できる機能についても理解しておくと役立ちます。URLサービスの追加機能の詳細は、「URLサービスの追加機能」を参照してください。
次のタスクを完了する必要があります。
アプリケーション・ワークスペースを作成し、プロジェクトをそのワークスペース内で作成します。プロジェクトの編成方法に応じて、既存のアプリケーション・ワークスペースとプロジェクトを使用することも、新規に作成することもできます。アプリケーション・ワークスペースおよびプロジェクトの作成の詳細は、『Oracle JDeveloperによるアプリケーションの開発』のアプリケーションおよびプロジェクトの作成に関する項を参照してください。
データ・コントロールからアクセスされるURLサービスへのアクセス権が必要です。
オプションで、「URL接続の作成方法」の説明に従って、使用するURL接続を作成します。
URLサービス・データ・コントロールを作成するには:
データ・コントロールを作成する際に、JDeveloperによってデータ・コントロール定義ファイル(DataControls.dcx
)が作成され、概要エディタでファイルが開き、ファイルの階層が「データ・コントロール」パネルに表示されます。データ・コントロールの作成時に行われる処理の詳細は、「データ・コントロール作成時のプロジェクト内の処理」を参照してください
URLサービス・データ・コントロールを作成すると、DataControls.dcx
の概要エディタに各操作のメソッド・ノードが移入されます。これらのメソッド・ノードには、戻りサブノードがある場合があり、戻りサブノードには、コレクション、スカラー値および属性のサブノードが含まれる場合があります。
「HTTPヘッダー・パラメータを含める」チェック・ボックスを選択した操作については、メソッド・ノードにMap
型のHttpHeader
という入力パラメータが指定されます。
たとえば、図6-1は3つのメソッドを含むデータ・コントロールを示しており、これらのメソッドにはカスタム・ヘッダー・パラメータを使用するメソッド(loadData(Map)
)が含まれます。
図6-1 「データ・コントロール」パネル内のURLデータ・コントロール
複合データ型のパラメータをとる操作の場合は、構造化属性ノードも表示されます。
URLサービス・データ・コントロールに対して表示される全ノードのリストと使用方法の詳細は、表6-1を参照してください。
HTTP GETメソッドに基づくURLデータ・コントロールを作成する際に、ウィザードでスキーマを指定しなければ、スキーマが自動的に生成されます。ただし、この自動生成されたスキーマには、データ・コントロールが期待どおりに動作するために必要な情報が含まれていない可能性があります。たとえば、自動生成されたスキーマには次の制約があります。
要素から返されるデータがない場合、生成されたスキーマは要素の構造の詳細を反映しておらず、このため「データ・コントロール」パネルには対応するデータ・コントロール・オブジェクトが表示されません。
ある要素から返されたデータに含まれる行がただ1つの場合、作成されるデータ・コントロール内でその要素は表として扱われません。(スキーマ内でその要素にmaxOccurs="unbounded"
属性を追加することによって、この問題を修正できます。)
主キーとして属性を設定すると、生成されたスキーマが正しいデータ型を反映しない場合があります。主キーの詳細は、「URLサービス・データ・コントロールの主キーに関する必知事項」を参照してください。
生成されたスキーマは、「アプリケーション」ウィンドウでプロジェクトのリソース・ノードの下に表示され、そこでスキーマを確認して編集できます。
URLサービス・データ・コントロールを使用する場合、HTTPリクエストの起動時にHTTPヘッダーにカスタム・パラメータを追加する場合があります。このようなパラメータは、セキュリティや通知など、様々な目的で役立ちます。
始める前に:
URLサービス・データ・コントロールの一般的な知識があると役立ちます。データ・コントロールを使用したURLサービスの公開の詳細は、「ADFデータ・コントロールを使用したURLサービスの公開」を参照してください。
また、他のURLサービス機能を使用して追加できる機能についても理解しておくと役立ちます。URLサービスの追加機能の詳細は、「URLサービスの追加機能」を参照してください。
次のタスクを完了する必要があります。
URLサービス・データ・コントロールを作成して、ウィザードの「HTTPヘッダー・パラメータを含める」チェック・ボックスを選択します。URLサービス・データ・コントロールの作成の詳細は、「URLサービス・データ・コントロールの作成方法」を参照してください。
『Oracle ADF FacesによるWebユーザー・インタフェースの開発』のWebページの作成に関する項で説明されているとおりに、JSFページを作成します。
マネージドBeanを作成して、ビュー・プロジェクトのadfc-config.xml
ファイルに登録します。マネージドBeanを使用した情報の格納の詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のマネージドBeanを使用して情報を格納する方法に関する項を参照してください。
URLサービスにカスタム・ヘッダーを渡すには:
マネージドBeanに、ヘッダー・パラメータの名前と値を指定する、java.util.Map
型のBeanプロパティを作成します。
このようなマネージドBeanの例は、例6-1を参照してください。
「データ・コントロール」パネルで、カスタム・ヘッダー・パラメータを含むメソッドをWebページにドラッグし、「ADFボタン」としてドロップします。
「アクション・バインディングの編集」ダイアログで、次の手順を実行してボタンとマネージドBean間のバインディングを作成します。
「データ・コレクション」ツリーで、HTTPヘッダー・パラメータを含むメソッドを選択します。
「パラメータ」表で、パラメータの「値」セルをクリックし、ドロップダウン・ボタンをクリックして「EL式ビルダーの表示」を選択します。
「変数」ダイアログで、式を手動で入力するか、「変数」ツリーを移動して、バインドするHTTPパラメータを表すマネージドBeanフィールドを選択します。
たとえば、例6-1に示すhttpHeadersMap
プロパティにバインドするには、「ADFマネージドBean」ノードを開きます。さらに、Beanのスコープのノードを開いて、adfc-config.xml
ファイルで指定されているBean名(クラス名と同じであるとは限りません)のノードを開き、「httpHeadersMap」
を選択します。
実行時に、データ・コントロールはマップ(存在する場合)からエントリを取得して、HTTPヘッダーとしてリクエストに追加します。
例6-1 URLサービス・データ・コントロールのカスタム・パラメータを含むマネージドBean
package view; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class BackingBean { private Map<String,String> httpHeadersMap = new HashMap<String,String>(); public BackingBean() { httpHeadersMap.put("TenantID","OurCompany"); } public void setHttpHeadersMap(Map<String,String> httpHeadersMap) { this.httpHeadersMap = httpHeadersMap; } public Map<String,String> getHttpHeadersMap() { return httpHeadersMap; } }
URLサービスにデータ・コントロールを作成すると、そのデータ・コントロールは公開された任意のコレクションに対する主キー操作をサポートします。ただし、主キー機能が確実に正しく動作するように、「URLサービス・データ・コントロール」ウィザードの「データ・フォーマット」ページで、主キー・フィールドのデータ型の名前を示すスキーマを指定する必要があります。(HTTP GETメソッドに基づくURLデータ・コントロールの場合は、スキーマを指定する必要はありません。)
その他の面では、この機能はWebサービス・データ・コントロールの対応する機能と同じです。URLサービス・データ・コントロールの主キーの詳細は、「SOAP Webサービス・データ・コントロールの主キーに関する必知事項」を参照してください。
URLサービス・データ・コントロールは更新不可能であるため、「データ・コントロール」パネルの一部のオブジェクトには制限があります。たとえば、「操作」ノードの下の組込み操作で使用可能になっているのは、取得とナビゲーションのみです。また、URLサービス・データ・コントロールのパラメータ・オブジェクトは、ユーザーがURLに含めて渡すパラメータです。URLサービス・データ・コントロールの詳細は、表6-1を参照してください。
Oracle JDeveloperの「データ・コントロール」パネルでは、ADFデータ・コントロールとして公開するビジネス・サービスのデータおよびメソッドの、ドラッグ・アンド・ドロップによるユーザー・インタフェース設計をサポートしています。URLサービスの場合、「データ・コントロール」パネルには、URLサービスの操作により戻されたオブジェクトおよびコレクションが、ADFアプリケーションのユーザー・インタフェースの設計に使用できるアイテムとして表されます。
他の種類のデータ・コントロールと同様に、「データ・コントロール」パネルから項目をドラッグし、それを特定のUIコンポーネントとしてページ上にドロップすることで、データバインドされたユーザー・インタフェースを設計できます。「データ・コントロール」パネルの使用方法の詳細は、「「データ・コントロール」パネルの使用方法」を参照してください。
「データ・コントロール」パネルでは、各データ・コントロール・オブジェクトがアイコンで表されます。表6-1は、各アイコンが表すデータ・コントロール・オブジェクト、「データ・コントロール」パネルの階層内で表示される場所、そのアイコンを使用して作成できるコンポーネントを示しています。
表6-1 URLサービス・データ・コントロールの「データ・コントロール」パネルのアイコンおよびオブジェクト階層
アイコン | 名前 | 説明 | 作成できるコンポーネント |
---|---|---|---|
データ・コントロール |
データ・コントロールを表します。データ・コントロール自体を使用してUIコンポーネントを作成することはできませんが、そのデータ・コントロールの下に表示される子オブジェクトは使用できます。複数のデータ・コントロールが存在する可能性もあります。これらはそれぞれ、データ関数の論理グループを表しています。 |
他のオブジェクトのコンテナとして機能します。なし。 |
|
メソッド |
URLのコンテンツを取得する、 |
コマンド・コンポーネント。 パラメータを受け入れるメソッドの場合: コマンド・コンポーネントおよびパラメータ付きフォーム。 コマンド・コンポーネントを使用した機能の起動の詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』の「ビュー・レイヤーで各機能を起動するコマンド・コンポーネントの使用」を参照してください。 |
|
メソッド戻り |
Webサービス・メソッドによって戻されたオブジェクトを表します。戻されたオブジェクトは、単一の値またはコレクションです。 メソッド戻りは、これを戻すメソッドの下に、子として表示されます。メソッドの戻りオブジェクトの下の子として表示されるオブジェクトは、該当コレクションの属性、親コレクションに関連するアクションを実行する他のメソッド、および親コレクション上で実行可能な操作です。 単一値のメソッド戻り値がドロップされると、メソッドはフレームワークにより自動的に起動されなくなります。メソッドを起動するために、対応するメソッドをボタンとしてドロップする必要があります。また、タスク・フローを使用している場合は、メソッド・アクティビティを作成できます。実行可能ファイルの詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のページ定義ファイルで定義されるExecutableバインディング・オブジェクトに関する項を参照してください |
コレクションと属性、および問合せフォームの場合と同じコンポーネント。 問合せフォームの詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のデータバインドされたADF検索フォームの作成に関する項を参照してください。 |
|
コレクション |
URLサービスの操作から返されるデータ・コントロールを表現します。コレクションは、メソッド戻りオブジェクト、他のコレクション、または構造化属性の下の子として表示されます。コレクションの下の子は、属性、他のコレクション、カスタム・メソッド、コレクションに対して実行できる組込み操作などです。 |
フォーム、表、グラフ、ツリー、レンジ・ナビゲーションの各コンポーネント、およびマスター/ディテール・コンポーネント。 表、グラフおよびマスター/ディテール・データ・コンポーネントの作成の詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』の「データバインドされた基本的なページの作成」、「ADFによるデータバインドされた表の作成」、「マスター/ディテール・データの表示」および「データバインドされたチャート・コンポーネントおよびゲージ・コンポーネントの作成」を参照してください。 |
|
構造化属性 |
複合型でありコレクションではない、返されたオブジェクトを表します。たとえば、構造化属性は、現在のサービス・リクエストに割り当てられた単一のユーザーを表現します。 |
ラベル、テキスト・フィールド、日付、値リスト、および選択リストの各コンポーネント。 テキスト・フィールドおよび選択リスト・コンポーネントの作成の詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のデータ・コントロール属性を使用したテキスト・フィールドの作成に関する項および「データバインドされた選択リストおよびシャトルの作成」を参照してください。 |
|
属性 |
オブジェクト内の個別のデータ要素(行の属性など)を表します。属性は、自分の属するコレクションまたはメソッド戻りの下に、子として表示されます。 |
ラベル、テキスト・フィールドおよび選択リストの各コンポーネント。 テキスト・フィールドの作成の詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のデータ・コントロール属性を使用したテキスト・フィールドの作成に関する項を参照してください。 |
|
操作 |
親オブジェクトに対してアクションを実行する、組込みデータ・コントロール操作を表します。データ・コントロール操作は、コレクションの下の「操作」ノードにあります。1つ以上のパラメータが操作に必要な場合、それらのパラメータは操作の下の「パラメータ」ノードにリストされます。
|
ボタン、リンクおよびメニューなどのUIコマンド・コンポーネント。 コマンド・コンポーネントの作成の詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のデータ・コントロール操作を使用したコマンド・コンポーネントの作成に関する項および入力フォームの作成に関する項を参照してください。 |
|
パラメータ |
メソッドまたはその下に表示される操作によって宣言されたパラメータ値を表します。パラメータは、メソッドまたは操作の下のノードに表示されます。 URLサービス・データ・コントロールのパラメータは、ユーザーがURLに入れて渡したパラメータです。これらは、URLサービス・データ・コントロールが作成されたときに、 |
ラベル、テキストおよび選択リストの各コンポーネント。 |