パート3: Oracle MAF MobileアプリケーションによるWebサービスの使用
この項では、先ほど完成したアプリケーションを拡張します。まず、Webサービスを検索し、Web Services Description LanguageWSDL)へのアクセス権を取得します。次に、MAFデータ・コントロールを作成し、アプリケーションのページからそれを使用します。
準備 アプリケーション

このチュートリアルは順番に完了できるように作られています。このパートはチュートリアルの3番目で最後のステップですが、パート1とパート2で作成するアプリケーションの完成版をダウンロードすることもできます。アプリケーションの完成版から開始する場合は、右側のDownloadボタンを使用して圧縮ファイルをダウンロードし、作業領域にインポートしてください。

Part 2 solution.zipのダウンロード
ステップ1:Webサービスの検出

    このパートでは、アプリケーションに追加するWebサービスを検索します。これから使用するWebサービスは、webservice.netから取得できます。使用するのは、郵便番号を受け取って天気情報を返す天気Webサービスです。このチュートリアルではこのサービスを使用しますが、どのWebサービスにも簡単に置き換えることができます。

  1. OEPEで開かれているエディタをすべて閉じます。

  2. wsdlをOEPEにダウンロードするための準備として、wsdlリソースを保持するフォルダをプロジェクト内に作成します。
    Project Explorerで「EmployeeView」を右クリックし、「New」→「Folder」を選択します。フォルダ名としてresourceを入力し、「Finish」をクリックします。

    alt text

    alt text
  3. 最初に、使用するWebサービスを任意のブラウザで検索します。ここでは、http://wsf.cdyne.com/WeatherWS/Weather.asmxにナビゲートします。「Service Description」リンクをクリックしてWDSLドキュメントを表示します。

    alt text

    alt text
  4. 先ほど作成したresourceフォルダにこのファイルをWeather.asmx.xmlという名前で保存します。デフォルトでこの名前が指定されているはずです。

    alt text

    alt text
  5. Windowsエクスプローラを使用してファイルを検索し、ファイル名をweather.wsdlに変更します。ファイル拡張子が変更されることを示す警告ダイアログで「Yes」をクリックします。注:拡張子は必ずwsdlを使用してください。

    alt text
  6. OEPEのProject Explorerで、「EmployeeView」→「resource」の順に展開します。weather.wsdlファイルが表示されます。表示されない場合は「resource」を右クリックして「Refresh」を選択します(または[F5]を押します)。

    alt text
  7. weather.wsdl」をダブルクリックしてwsdlエディタで開きます。サービスから使用できるインタフェースを表す図が表示されます。

    alt text
  8. これでWebサービスは用意できたので、アプリケーションの残りの部分のベースになるコンポーネントを作成します。

ステップ2:Webサービス・データ・コントロールの定義

このWebサービスをMAFアプリケーションで使用するには、MAFデータ・コントロールを作成する必要があります。データ・コントロールとは、Webサービスで使用できるサービスまたはメソッドを抽象化したものです。この抽象化レイヤーの存在により、アプリケーション開発者はサービスの実装に関わる詳細事項を気にせずにWebサービスを使用できます。データ・コントロールは、開発要件に関係なく使用できる新たなドラッグ・アンド・ドロップ・コンポーネントになります。

  1. データ・コントロールを作成するには、「weather.wsdl」を右クリックして「Model Components 」→「Create Data Control」の順に選択します。

    alt text
  2. デフォルト名(Weather)のまま「Next」をクリックします。

    alt text
  3. Operationsパネルで「WeatherSoap12」を選択し、「Next」をクリックします。

    alt text
  4. Summaryページで「Finish」をクリックし、データ・コントロールを作成します。影響を受けるファイルを示すダイアログが表示されます。「OK」をクリックしてダイアログを閉じます。

    alt text
  5. Data Control Managerが開きます。Data Control Managerは次のように表示されます。

    alt text

    これで、Weather Webサービスに基づいたデータ・コントロールが作成されました。次の項では、このデータ・コントロールを使用するWeatherページを作成します。

ステップ3:Webサービス・データ・コントロールの使用

MAFでは、どのデータ・コントロールを使用する手順も同じです。データ・コントロールがJavaクラスとWebサービスのどちらに基づいているかは関係ありません。この項では、weatherデータ・コントロールを使用するアプリケーションに要素を追加します。

  1. 開いているエディタをすべて閉じて、MAF Feature Editorを開きます(ヒント:「EmployeeView」→「MAF」の順に展開し、「MAF Feature Editor」をダブルクリックします)。

    alt text
  2. 新しい機能を追加(「追加」ボタンを使用)し、機能のIdWeatherServiceに設定します。

    alt text
  3. 新しいWeatherService機能を選択し、「Add」ボタンをクリックしてこの機能のコンテンツを作成します。「AMX Page」を選択し、IDはデフォルトにしたまま「OK」をクリックします。

    alt text
  4. amxページのコンテンツを選択した状態で、作成アイコンをクリックしてamxページを作成します。ページの名前をGetWeather.amxに設定し、「Finish」をクリックしてページを作成します。ページ・エディタにページが開きます。

    alt text
  5. 作業内容を保存します。

  6. 次は、このWebサービス・データ・コントロールを使用するページを設計します。

  7. GetWeather.amxページで、headerファセットのValueプロパティをGet Weatherに設定します。

    alt text
  8. primary commandButton」を選択し、Action__backに設定します(ヒント:Properties InspectorとActionの横にあるドロップダウンを使用します)。

    alt text
  9. 作業内容を保存します。

    基本ページがセットアップされます。次は、このWebサービスを使用するデータ・コントロールを追加します。

  10. パレットのDataタブで「Weather」を展開し、GetCityWeatherByZIP(String)を表示します。

    alt text
  11. GetCityWeatherByZIP(String)</amx:facet>終了タグの直後にドラッグし、コンポーネント・タイプとして「Parameter Form」を選択します。Form Configurationのバインディングはそのままにして「Finish」をクリックします。

    alt text
  12. 作業内容を保存します。

    コードを見てわかるとおり、郵便番号を受け取る入力テキスト・コンポーネントへのバインディングがあります。また、Webサービスをコールするバインディングを実行するボタンもあります。不足しているのは、戻り値を表示する出力テキストです。

    alt text
  13. Webサービスの戻り値(結果)を表示するには、Data Paletteで「returnGetCityWeatherByZipResult」を選択し、</amx:panlePage>終了タグの直前にこれをドラッグし、「Form」を選択します。

    alt text

  14. Form Configurationダイアログで、CityTemperatureRelativeHumidityWind以外のValue Bindingsをすべて削除します。「Finish」をクリックしてフォームを作成します。

    alt text
  15. 作業内容を保存します。

    UIに関する考慮事項の1つは、Webサービスをコールするボタンをユーザーがクリックするまで出力テキストを表示しないようにすることです。このUI変更はとても簡単ですが、2つのことを行う必要があります。まず、ボタンがクリックされたら、変数になんらかの値が設定されるようにします。次に、変数が設定されている場合のみ値を表示するよう指示するプロパティを、出力テキストに追加します。

  16. Set Property Listenerをコマンド・ボタンに追加します。まず、埋め込まれている終了タグ・マーク(/)amx:commandButtonの末尾から削除します。

    alt text
  17. この行の末尾に</を入力します。もっとも近くにある閉じられていないタグは、</amx:commandButton>が追加されて自動的に閉じられます。

    alt text


  18. alt text
  19. </amx:commandButton>の前に新しい行をいくつか挿入します。

    alt text
  20. パレットの「Tags」タブを選択し、フィルタを使用してset propertyを探します。

    alt text
  21. 先ほどコマンド・ボタン・タグ内に追加した空の行に、「Set Property Listener」をドラッグします。

    alt text
  22. このダイアログで、Fromの値を#{'Y'}に設定します。

    alt text
  23. Toの値を設定するために、「Bind to a Dynamic value」アイコンをクリックしてExpression Builderを開きます。

    alt text
  24. Expressionに#{viewScope.displayResult}と入力します。

    alt text
  25. OK」をクリックし、「Finish」をクリックしてSet Property Listenerを作成します。

    このSet Property Listenerを作成しておくと、ユーザーが「GetCiyWeatherByZIP」ボタンをクリックしたときにWebサービスがコールされるだけでなく、viewScope変数のdisplayResultがYに設定されるようになります。以降の手順では、変数が設定されていない場合は出力テキストが表示されないように設定します。

  26. 作業内容を保存します。

  27. <amx:panelFormLayout」タグをクリックし、Propertiesタブで「Common」を選択します。

    alt text
  28. Bind to Dynamic Value」アイコン(稲妻マーク)をクリックしてExpression Builderを開きます。

    alt text
  29. Expression Builderで、式#{viewScope.displayResult == 'Y'}を入力し、「OK」をクリックします。

    alt text
  30. 作業内容を保存します。

    アプリケーションはもう少しでデプロイできる状態になります。デプロイできるようにするには、カメラ機能や電子メール機能で行ったのと同様に、デバイス機能へのアクセス権を付与する必要があります。

  31. maf-feature.xml」タブをクリックします。タブが開いていない場合は、Project Explorerを使用してMAF Features Editorを検索して開きます。

    alt text
  32. WeatherService」を展開して「Device Access」を選択します。

    alt text
  33. Device Accessリストで「Network Access」を選択します。すると、要求したアクセス権をアプリケーションに付与する必要があることを示す警告アイコンが表示されます。

    alt text
  34. 作業内容を保存します。

  35. application editor」リンクをクリックしてMobile Application Editorを開きます。

    alt text
  36. Mobile Application Editorで「Network access」を選択し、機能へのアクセス権を付与します。

    alt text
  37. 作業内容を保存します。

    これで、アプリケーションをデプロイできる状態になりました。

    ファイアウォールの内側からエミュレータを実行している場合は、プロキシを構成する特殊なパラメータを使用して、コマンドラインからエミュレータを起動することが必要になります。

    ファイアウォールの内側からでない場合はこれまでと同様にエミュレータを使用できるため、手順38に進みます。

  38. コマンド・ウィンドウを開き、<your Android SDK Install>\sdk\toolsディレクトリにナビゲートします。

    alt text
  39. emulator -avd MAF -verbose -http-proxy MyProxyHere:80と入力してエミュレータを起動します(ヒント:MyProxyHereの部分は、各自のプロキシの名前に置き換えてください。以前に作成したAVDデバイスの名前がMAFの場合はそれを使用しますが、そうでない場合はここで使用した名前に置き換えます)。

    alt text

    これで、アプリケーションはデプロイできる状態になりました。

  40. メニュー・バーで、「Debug」→「Debug Configuration」の順にクリックします。

    alt text
  41. MAF Application」→「MAF」の順に選択し、「Debug」をクリックします。

    alt text
  42. 正常にデプロイされたことを示すメッセージがログ・ウィンドウに表示されたら、デプロイメントは完了です。

    alt text
  43. エミュレータで、「Applications」→「Employee」の順にクリックしてアプリケーションを起動します。

    alt text
  44. WeatherService」機能をクリックします。

    alt text
  45. 記号フィールドに77089(または任意の郵便番号)と入力し、「GetCityWeatherByZIP」をクリックします。

    alt text
  46. Webサービスから結果が返され、フォームに表示されます。

これで、Webサービスを使用するアプリケーションにMAFコントロールが正常に追加されました。これで、このチュートリアルは完了です。

ブックマーク 印刷 すべて表示 | すべて非表示
トップへ戻る
Copyright © 2014, Oracle and/or its affiliates.All rights reserved.