Oracle® Fusion Middleware Oracle Application Development FrameworkによるFusion Webアプリケーションの開発 12c (12.2.1.1.0) E77397-02 |
|
前 |
次 |
この章の内容は次のとおりです。
ADFビジネス・コンポーネントは、RESTful Webサービスを公開するように構成できます。これにより、アプリケーション内の他の部分や、完全に異なるアプリケーションによって公開されるサービスを使用するアプリケーションを開発できます。このため、このサービスを使用する場合は、基礎となるビジネス・コンポーネントをアプリケーションとともにパッケージ化する必要はありません。
ADFビジネス・コンポーネントに基づくRESTful Webサービスの使用を簡略化するために、JDeveloperを使用して、これらのサービスへの接続を作成した後、それらの接続によって含められたリソースに基づいてデータ・コントロールを生成できます。その後、「データ・コントロール」パネルを使用して、RESTリソースやメソッドを表すUIコンポーネントを作成することによって、RESTful Webサービスに対するクライアントを構築できます。Webサービスを解析するためのコードを記述したり、サービスを実装するクライアントWebアプリケーションを作成したりする必要はありません。
アプリケーション・モジュールによって公開されるWebサービスはRESTの原則に基づくものの、データ・コントロールを使用してサービスを使用するとき、サービスと対話する方法は、アプリケーション・モジュールと直接対話する場合と非常に似ています。ページのデータ操作の基礎となる実装はRESTメソッドに基づきますが、アプリケーション・モジュール・データ・コントロールに基づいてデータバインドUIコンポーネントを作成するときと同じタイプのデータ・コントロール・オブジェクトやビルトイン操作を使用して、ページを構築できます。
RESTful Webサービスはリクエスト間でステートレスであるものの、アプリケーション・モジュールによって公開されたRESTful Webサービスに基づくデータ・コントロールを使用して作成されたアプリケーションの動作は、ステートフルになります。ただし、アプリケーションの状態に関する情報は、サーバー上ではなく、交換されるメッセージ内に含まれるため、アプリケーションはステートレスになります。HTTPメソッドに関連するユーザーのCRUDアクション(GET
、PATCH
、PUT
、POST
およびDELETE
)は、ユーザーがCommit
またはRollback
操作を起動するまでキャッシュされ、その起動の時点でキャッシュがクリアされ(て、データがデータソースにコミットされるか、または変更が破棄され)ます。
注意:
この章は、ADFビジネス・コンポーネントを使用して開発された機能を公開するRESTful Webサービスに基づくデータ・コントロールに関連します。また、ADFビジネス・コンポーネントに基づかない、SOAPベースのWebサービスや、RESTful Webサービスに基づくデータ・コントロールを作成することもできます。詳細は、『Oracle ADFデータ・コントロールによるアプリケーションの開発』のADFモデル・レイヤーを使用したWebサービスの公開に関する項を参照してください。
ADFビジネス・コンポーネントによって公開されたRESTful Webサービスを使用するデータ・コントロールを作成できます。その後、そのデータ・コントロールを使用して、Webページ上に、サービスの機能にアクセスするためのデータバインドUIコンポーネントを作成します。
通常、そのようなWebサービスは、機能を自分で開発する必要なく、アプリケーションで機能を実現するための方法として使用します。また、アプリケーション内に直接、基本アプリケーション・モジュールをパッケージ化する必要はありません。使用するこれらのRESTful Webサービスは、パートナ、サービス・プロバイダまたは別の開発チームが公開する場合や、クラウドベースのサービスの一部になっている場合があります。
ADFビジネス・コンポーネントに基づくRESTful Webサービスを使用する前に、他のデータ・アクセス機能を理解しておくと役立つ場合があります。次に、関連する他の機能へのリンクを示します。
ADFデータ・コントロールやデータ・バインディングの動作方法の詳細は、「Fusion WebアプリケーションでのADFモデルの使用」を参照してください。
「データ・コントロール」パネルからアイテムをドラッグして、ページ上にUIコンポーネントとしてドロップすることによってデータバインドされたユーザー・インタフェースを設計する方法の詳細は、「データバインドされた基本的なページの作成」を参照してください。
ADFビジネス・コンポーネントに基づくRESTful Webサービスの公開の詳細は、「アプリケーション・モジュールによるRESTful Webサービスの作成」を参照してください。
RESTデータ・コントロールを使用すると、指定されたURI (ADFビジネス・コンポーネントによって公開されたRESTful Webサービスを実行することによって定義)からのデータ・ストリームにアクセスして使用できます。ADFビジネス・コンポーネントに基づくRESTful Webサービスを使用する接続は2通りの方法で作成できます。
アプリケーション・モジュールによって公開されたRESTful Webサービスのdescribe
リソースへのIDE接続を作成し、この接続に基づくデータ・コントロールを作成します。
Webサービス・データ・コントロール・ウィザードを使用して、REST接続とデータ・コントロールを一緒に作成します。
ADFビジネス・コンポーネント・アプリケーション・モジュールに基づくRESTful Webサービスのdescribe
リソースへのIDE接続を作成するために、「REST接続の作成」ダイアログを使用します。このウィザードには、「新規ギャラリ」または「リソース」ウィンドウを経由してアクセスできます。このウィザードを使用して作成するすべての接続は、「リソース」ウィンドウに追加され、すべてのアプリケーション・ワークスペースで、データ・コントロールを作成するために使用できます。
始める前に:
RESTデータ・コントロールの一般的な知識があると役立ちます。詳細は、「RESTデータ・コントロールを使用した、ビジネス・コンポーネントのRESTリソースとしての使用」を参照してください。
また、他のRESTful Webサービス機能を使用して追加できる機能についても理解しておくと役立ちます。詳細は、「REST Webサービス・データ・コントロールの追加機能」を参照してください。
REST接続を作成する手順は次のとおりです。
REST接続はJDeveloperでIDE接続として作成し、IDEで作成する任意のアプリケーションで使用できます。図21-1に示すように、「リソース」ウィンドウの「IDE接続」パネルで、IDE接続を表示できます。
図21-1 「リソース」ウィンドウに示されたREST接続
「リソース」ウィンドウから、REST接続の下にリストされているリソースを「データ・コントロール」パネルにドラッグすることによって、RESTデータ・コントロールを作成できます。他のタイプのRESTful Webサービスに基づいてRESTデータ・コントロールを作成する場合と異なり、データ・コントロールが個別のリソースをどのように公開するかを複雑なウィザードで構成する必要はありません。
始める前に:
RESTデータ・コントロールの一般的な知識があると役立ちます。詳細は、「RESTデータ・コントロールを使用した、ビジネス・コンポーネントのRESTリソースとしての使用」を参照してください。
また、他のRESTful Webサービス機能を使用して追加できる機能についても理解しておくと役立ちます。詳細は、「REST Webサービス・データ・コントロールの追加機能」を参照してください。
次のタスクを完了する必要があります。
アプリケーション・ワークスペースを作成し、プロジェクトをそのワークスペース内で作成します。プロジェクトの編成方法に応じて、既存のアプリケーション・ワークスペースとプロジェクトを使用することも、新規に作成することもできます。アプリケーション・ワークスペースの追加の詳細は、『Oracle JDeveloperによるアプリケーションの開発』のアプリケーションとプロジェクトの作成に関する項を参照してください。
「REST接続の作成方法」の説明に従い、Create a REST接続を作成します。
RESTデータ・コントロールを作成する手順は次のとおりです。
Webサービス・データ・コントロール・ウィザードを使用して、REST接続とデータ・コントロールを一緒に作成できます。作成したREST接続はADFビジネス・コンポーネントに基づくRESTful Webサービスを使用します。この方法でデータ・コントロールを作成する場合、手動構成は不要です。必要なメタデータはRESTサービスのdescribeエンドポイントで提供されるためです。
始める前に:
ADFアプリケーションでのWebサービス・データ・コントロールの使用方法に関する知識があると、役立つ場合があります。詳細は、「ADFアプリケーションのWebサービス・データ・コントロールについて」を参照してください。
ADFビジネス・コンポーネント・サービスに基づくRESTful Webサービスについて理解しておくと役立つ場合があります。詳細は、「アプリケーション・モジュールによるRESTful Webサービスの作成」を参照してください。
また、他のWebサービス機能を使用して追加できる機能についても理解しておくと役立ちます。詳細は、「ADFアプリケーションのWebサービス・データ・コントロールの追加機能」を参照してください。
次のタスクを完了する必要があります。
「アプリケーション・モジュールによるRESTful Webサービスの作成」の説明に従って、ADF RESTリソースを作成し、RESTful Webサービスとしてデプロイします。
データ・コントロール・ウィザードを使用してREST接続とRESTful Webサービスのデータ・コントロールを作成する手順:
「アプリケーション」ウィンドウで、Webサービス・データ・コントロールを作成する先のプロジェクトを右クリックして、「新規」→「ギャラリから」を選択します。
「新規ギャラリ」で「すべてのアイテム」を選択し、スクロール・ダウンして「Webサービス・データ・コントロール(SOAP/REST)」 (データ・コントロール)を選択し、「OK」をクリックします。
「Webサービス・データ・コントロールの作成」ウィザードの「データソース」ページで、データ・コントロールの名前を指定して「REST」ラジオ・ボタンを選択します。
記述ベースのADFデータ・コントロール、または手動で記述された機能を持つ汎用データ・コントロールのいずれかを作成できます。
「記述ベースのADFデータ・コントロール」を選択します。
「新規REST接続の作成」アイコンをクリックして、「REST接続の作成」ダイアログを開きます。
接続の名前と記述URIを入力します。これはADFビジネス・コンポーネントに基づくRESTful Webサービスです。URLにはリソースまたはパラメータを含めないでください。
このURIは、ホスト、ポート、リソース・パスおよびdescribeリソースで構成されます。通常、リソース・パスは、Webサービス・プロジェクトのコンテキスト・ルートと、RESTプロジェクトのweb.xml
ファイルのサーブレット・マッピングで指定されたURLパターンで構成されます。バージョン名とリソース名は含めますが、URLパラメータは含めません。たとえば、次のような内容を入力できます。
http://service.example.com:7101/WebServiceProjectContextRoot/rest/VersionName/ResourceName/describe
「認証タイプ」ドロップダウン・リストから認証レベルを選択します。デフォルトの認証タイプは「なし」で、認証は無効になります。セキュリティが必要な場合は、「ダイジェスト」を使用します。この方法では、パスワードはユーザー・パスワードのMD5ダイジェストとしてネットワーク上を送信され、ネットワーク・トラフィックを傍受しても判別できません。「基本」認証は、主にネットワーク上でのサービス・アクセスに高度なセキュリティを必要としない場合にのみ役立ちます。
注意:
「REST接続の作成」ダイアログで、「接続のテスト」をクリックして、URIに接続できることを確認できます。ただし、URIのサーバーがベースURIに対するリクエストを受け入れないように構成されている場合、テストは失敗します。失敗しても関係なく、「OK」をクリックして接続を作成できます。このようなベースURIを使用していて、サービスに接続できることを確認する必要がある場合は、URLに一時的にリソースを追加して、接続をテストしてから、「OK」をクリックする前にリソースを削除できます。
「次へ」をクリックします。
「OWSMポリシー」ページで、必要に応じてWebサービス・クライアントのポリシーをオプションで設定し、「次へ」をクリックします。
指定したWebサービス接続に基づいて、「リソースの選択」ページにリソースのリストが表示されます。すべてのリソースを選択してデータ・コントロールに追加するか(デフォルト)、またはリソースをいくつか選択してデータ・コントロールに追加できます。
「次へ」をクリックし、次に「終了」をクリックします。
REST接続によって含められたリソースに基づいてデータ・コントロールを作成すると、JDeveloperによってデータ・コントロール定義ファイル(DataControls.dcx
)が作成され、ファイルが概要エディタで開かれ、データ・コントロールの階層が「データ・コントロール」パネルに表示されます。
DataControls.dcx
概要エディタには、各リソースのコレクション・ノードが移入されます。「データ・コントロール」パネルには、それらのコレクションの属性や操作のサブノードに加え、それらの同じコレクション・ノードが表示されます。
たとえば、図21-4に示されたデータ・コントロールには、RESTful Webサービスによって公開されるリソースに対応する、DepartmentsView
というコレクション・オブジェクトがあります。そのサブノードには、そのコレクションおよびネストされたコレクションの属性が含まれ、これらを使用して、値リスト(LOV)コンポーネントを作成できます。また、これにより、標準的なRESTメソッドにマップされる、データ・コントロール・メソッドと組込みデータ・コントロール操作の組合せも公開されます。
図21-4 RESTデータ・コントロールが表示された「データ・コントロール」パネル
複合データ型のパラメータをとる操作の場合は、構造化属性ノードも表示されます。
「データ・コントロール」パネルに表示されるオブジェクトの詳細は、「RESTデータ・コントロールの使用方法」を参照してください。
他の種類のデータ・コントロールと同様に、「データ・コントロール」パネルから項目をドラッグし、それを特定のUIコンポーネントとしてページ上にドロップすることで、データバインドされたユーザー・インタフェースを設計できます。「データ・コントロール」パネルの一般的な使用方法の詳細は、「「データ・コントロール」パネルの使用方法」を参照してください。
「データ・コントロール」パネルでは、各データ・コントロール・オブジェクトがアイコンで表されます。表21-1は、各アイコンが表すもの、「データ・コントロール」パネルの階層内で表示される場所、およびそのアイコンを使用して作成できるコンポーネントを示しています。
注意:
また、ADFビジネス・コンポーネントに基づかない、REST Webサービスに基づくデータ・コントロールを作成することもできます。ただし、そのようなデータ・コントロールでは、公開されるメソッドおよびリソースが多少違います。たとえば、ADFビジネス・コンポーネントに基づかないRESTデータ・コントロールについては、コミット
操作およびロールバック
操作は公開されません。ビジネス・コンポーネントに基づかないRESTデータ・コントロールの作成および使用の詳細は、『Oracle ADFデータ・コントロールによるアプリケーションの開発』のADFモデル・レイヤーを使用したWebサービスの使用に関する項を参照してください。
表21-1 RESTデータ・コントロールの「データ・コントロール」パネルのアイコンおよびオブジェクト階層
アイコン | 名前 | 説明 | 作成する対象 |
---|---|---|---|
データ・コントロール |
データ・コントロールを表します。データ・コントロール自体を使用してUIコンポーネントを作成することはできませんが、そのデータ・コントロールの下に表示される子オブジェクトは使用できます。複数のデータ・コントロールが存在する可能性もあります。これらはそれぞれ、データ関数の論理グループを表しています。 |
他のオブジェクトのコンテナとして機能します。なし。 |
|
メソッド |
Webサービスの一部として公開されているカスタム非HTTPメソッドを表します。
注意: HTTPペイロード・メソッドを指定すると、Webサービス・データ・コントロールによってスキーマが生成され、指定された操作(GET、POST、PUTまたはDELETE)がデータ・コントロール・パネルに表示されます。これらのペイロード操作はメソッドとして表現されます。メソッドが引数をとる場合、その引数は、メソッドのノード内にネストされたパラメータとして「パラメータ」ノードに表示されます。注意: ページの設計中に、これらのペイロード操作メソッドはコマンド・ボタンまたはリンクとしてフォーム上で使用できます。フォームに操作をドロップすると、それらの操作は、入力としてすでにドロップされている対応する入力パラメータを受け取ります。その後、フォームをこのボタンにバインドできます。 |
コマンド・コンポーネント。 パラメータを受け入れるメソッドの場合: コマンド・コンポーネントおよびパラメータ付きフォーム。 詳細は、「ビュー・レイヤーで各機能を起動するコマンド・コンポーネントの使用」を参照してください。 |
|
メソッド戻り |
Webサービス・メソッドによって戻されたオブジェクトを表します。戻されたオブジェクトは、単一の値またはコレクションです。 メソッド戻りは、これを戻すメソッドの下に、子として表示されます。メソッドの戻りオブジェクトの下の子として表示されるオブジェクトは、該当コレクションの属性、親コレクションに関連するアクションを実行する他のメソッド、および親コレクション上で実行可能な操作です。 単一値のメソッド戻り値がドロップされると、メソッドはフレームワークにより自動的に起動されなくなります。メソッドを起動するために、対応するメソッドをボタンとしてドロップする必要があります。また、タスク・フローを使用している場合は、メソッド・アクティビティを作成できます。実行可能ファイルの詳細は、「ページ定義ファイルで定義されるExecutablesバインディング・オブジェクト」を参照してください。 |
コレクションと属性、および問合せフォームの場合と同じコンポーネント。 問合せフォームの詳細は、「ADFによるデータバインドされた検索フォームの作成」を参照してください。 |
|
コレクション |
URLサービスの操作から返されるデータ・コントロールを表現します。コレクションは、メソッド戻りオブジェクト、他のコレクション、または構造化属性の下の子として表示されます。コレクションの下の子は、属性、他のコレクション、カスタム・メソッド、コレクションに対して実行できる組込み操作などです。 |
フォーム、表、グラフ、ツリー、レンジ・ナビゲーションの各コンポーネント、およびマスター/ディテール・コンポーネント。 詳細は、「データバインドされた基本的なページの作成」、「ADFによるデータバインドされた表の作成」、「マスター/ディテール・データの表示」および「データバインドされたチャート・コンポーネントおよびゲージ・コンポーネントの作成」を参照してください。 |
|
構造化属性 |
複合型でありコレクションではない、返されたオブジェクトを表します。たとえば、構造化属性は、現在のサービス・リクエストに割り当てられた単一のユーザーを表現します。
注意: HTTPペイロード・メソッドを指定すると、指定された操作(GET、POST、PUTまたはDELETE)のスキーマがデータ・コントロールによって生成され、各操作の入力パラメータが別々にデータ・コントロール・パネルに表示されます。ページの設計中に、これらの操作の入力パラメータを使用し、編集可能な形式でページ上にドロップできます。 |
ラベル、テキスト・フィールド、日付、値リスト、および選択リストの各コンポーネント。 詳細は、「データ・コントロール属性を使用したテキスト・フィールドの作成」および「データバインドされた選択リストおよびシャトルの作成」を参照してください。 |
|
属性 |
オブジェクト内の個別のデータ要素(行の属性など)を表します。属性は、自分の属するコレクションまたはメソッド戻りの下に、子として表示されます。 |
ラベル、テキスト・フィールドおよび選択リストの各コンポーネント。 詳細は、「データ・コントロール属性を使用したテキスト・フィールドの作成」を参照してください。 |
|
操作 |
親オブジェクトに対してアクションを実行する、組込みデータ・コントロール操作を表します。データ・コントロール操作は、コレクションまたはメソッド戻り値の下の「操作」ノードと、データ・コントロールのルート・ノードの下にもあります。
ビジネス・コンポーネントに基づくRESTデータ・コントロールはトランザクションであるため、ユーザーが実行するすべてのデータ操作はまとめてバッチ処理され、ユーザーが |
ボタン、リンクおよびメニューなどのUIコマンド・コンポーネント。 詳細は、「データ・コントロール操作を使用したコマンド・コンポーネントの作成」および「入力フォームの作成」を参照してください。 |
|
パラメータ |
その上に表示されているメソッドによって宣言されたパラメータ値を表します。パラメータは、メソッドまたは操作の下のノードに表示されます。 |
ラベル、テキストおよび選択リストの各コンポーネント。 |
注意:
REST接続に基づくサービスについて「データ・コントロール」パネルを使用するには、そのサービスが実行され、かつその接続を介してアクセスできることが必要です。それ以外の場合は、「データ・コントロール」パネルでサービスの構造を表示し、それらの要素に基づいてUIコンポーネントを作成できるようにするために必要な情報がありません。
ADFビジネス・コンポーネントのアプリケーション・モジュールによって公開されるRESTful Webサービスに基づくRESTデータ・コントロールを作成した後、宣言的メタデータを使用して、そのデータ・コントロールから作成されたUIコンポーネントのデフォルトの外観や動作の一部を構成できます。この方法で、次のものを構成できます。
属性のデフォルト値
ラベルのUIヒント、ツールチップ、数値書式など
値リスト(LOV)オブジェクト
検証ルール
このメタデータを設定するメカニズムは、エンティティ・オブジェクトやビュー・オブジェクトを構成する場合に提供されるものと同様です。
データ・コントロールを構成可能にするには、DataControls.dcx
ファイルの概要エディタを使用し、データ・コントロールに含まれるオブジェクトに対応するデータ・コントロール構造ファイルを作成します。個別のデータ・コントロール構造ファイルを編集できるようになります。
始める前に:
データ・コントロール構成の一般的な知識があると役立ちます。詳細は、「アプリケーション・モジュールによって公開されたRESTデータ・コントロールの構成」を参照してください。
次のタスクを完了する必要があります。
RESTデータ・コントロールを構成する手順は次のとおりです。
データ・コントロールを編集すると、JDeveloperにより、影響を受けたコレクションのメタデータが含まれているデータ・コントロール構造ファイルが作成され、図21-6に示されているように、そのファイルが概要エディタで開かれます。このファイルには、そのリソース固有のデータ・コントロールの構成データ(データ・オブジェクトに対して指定したUIヒントやバリデータなど)が格納されます。
図21-6 データ・コントロール構造ファイルの概要エディタ
注意:
アプリケーション・モジュールによって公開されたサービスに基づくRESTデータ・コントロールでは、それらのアプリケーション・モジュールの開発者がベース・エンティティ・オブジェクトやビュー・オブジェクトに設定した、一部のUIヒントも継承します。RESTデータ・コントロールにUIヒントを設定した場合、エンティティ・オブジェクトまたはビュー・オブジェクト・レベルで、競合するすべてのものに対してその定義が優先されます。
UIヒント、検証ルールおよびLOVの詳細は、次の項を参照してください。
一意のRESTリソースは、データ属性ではなく特定のリソースURIによって識別されるため、アプリケーション・モジュールによって公開されるサービスに基づくRESTデータ・コントロールのキーは、生成されたcanonical
という属性によって表現されます。図21-6に示されているように、データ・コントロール構造ファイルの概要エディタの「属性」ページで、キー・アイコンによってこのことが示されます。
setCurrentRowWithKey
操作およびsetCurrentRowWithKeyValue
操作を使用する場合は、このことに注意することが重要です。これらの操作では、現在の行として設定する対象を識別するパラメータ(rowKey
)が必要となります。このため、アプリケーション・モジュール・データ・コントロールを構成する場合のようにエンティティ・オブジェクトの主キーを使用するのではなく、生成されたcanonical
属性を使用します。