現在表示中:

概要

AEM Forms では、Web サービスを使用してフォームのフィールドを入力することができます。AEM Forms は、Web Services Description Language (WSDL) 1.1 で記述された、ドキュメント/リテラルスタイルおよび SOAP エンドポイントを持つ Web サービスに対応しています。ここでは、ユーザが入力した郵便番号に応じて週刊天気予報を表示するシナリオを考えてみます。たとえば、既存の Web サービスを使用して気象予報データを取得し、データをフォーム内にレンダリングするようなルールを作成することができます。

ここでは、ルールの作成時に Web サービスの URL を直接指定することができます。また、CRX から Web サービスを事前設定することにより、ルールエディターで Web サービスをメニュー項目として利用することもできます。この記事では、特定の入力パラメータと出力パラメータを備えた Web サービスを CRX から事前設定することで、ルールエディター内で Web サービスを利用できるようにする方法について説明します 

このようなルールをルールエディターで作成する際の前提条件は、次のとおりです。

  • 適切な数のフォームオブジェクトを備えたアダプティブフォーム:入力パラメータごとに 1 個のフォームオブジェクト、および出力パラメータ表示用に各 1 個のフォームオブジェクト(つまり、天気予報を表示するには 1 個だけ必要)
  • 入力パラメータと出力パラメータを備えた Web サービスを、CRX から事前設定する

この記事のシナリオでは、www.cdyne.com の Web 天気予報サービスを利用しています。Web 天気予報サービスの詳細については、「Web 天気予報サービス仕様ドキュメント」を参照してください。

添付の Weather_WSDL.zip ファイルを CRX に直接アップロードして、この例を機能させることもできます。 

ダウンロード

CRX からルールエディターに向けた Web サービスを設定する

AEM Forms は、Web Services Description Language (WSDL) 1.1 で記述された、ドキュメント/リテラルスタイルおよび SOAP エンドポイントを持つ Web サービスに対応しています。次の手順を実行して、CRX からルールエディターに向けた Web サービスを事前設定します。

  1. http://[server]:[port]/[ContextPath]/crx/deに移動して、管理者としてログインします。

  2. /apps フォルダ内にノード(ここでは「GetCityForecastByZIP」)を作成します。

    注意:

    Webサービスノードは、/apps フォルダに作成します。デフォルトでは、Web サービスは apps および libs フォルダーにセットアップできます。ただし、CRX 内の他の場所を管理者が 1 つ以上設定し、アダプティブフォームのユーザーがそこで Web サービスを設定することができます。ユーザーには CRX 内の apps および libs フォルダーへのアクセス権がない場合があるため、この手順が必要なことがあります。詳しくは、「CRX で Web サービスの場所を設定する」を参照してください。

    1. apps フォルダーを右クリックし、「作成ノードを作成」を選択します。

    2. フォルダー名(ここでは「GetCityForecastByZIP」)を指定し、ノードタイプが nt:unstructured であることを確認して「OK」をクリックします。

    3. すべて保存」をクリックします。

  3. 次のプロパティを新しく作成したノード(ここでは「GetCityForecastByZip」)に追加し、「すべて保存」をクリックします。

    プロパティ タイプ 説明
    guideComponentType String
    Web サービスとして識別されたコンフィギュレーションを指定する定数 fd/af/webServices
    URL String 設定する Web サービスの URL http://wsf.cdyne.com/WeatherWS/Weather.asmx?WSDL
    jcr:title String ルールエディターのドロップダウンに表示される Web サービスの名前 都市の週間天気
    operation String 設定中の Web サービスの運用
    GetCityForecastByZIP
  4. Web サービスノード(ここでは「GetCityForecastByZip」)の下に、次のような nt:unstructured タイプのサブノードを作成し、「すべて保存」をクリックします。

    • input
    • output
  5. 「input」ノードの下で、事前構成する入力パラメータごとにサブノードを作成します。Web 天気予報サービスのシナリオでは、ユーザーが郵便番号(ZIP コード)を入力するためのノードを作成します。

    以下の手順を使用して、入力パラメータ用のノードを作成します。

    注意:

    入力ノードを追加しない場合、フォーム内のオブジェクトとルールには、Web サービスで使用されるすべての入力パラメータが入力されます。

    1. 「input」ノードを右クリックして、「作成」/「ノードを作成」を選択します。

    2. 子ノードの名前(ここでは「ZIP」)を入力して「OK」をクリックします。

    3. プロパティを子ノードに追加します。Web 天気予報サービスのシナリオでは、次のプロパティを子ノードに追加し、「すべて保存」をクリックします。

       プロパティ タイプ 説明
      ID String
      Web サービスで使用される、入力パラメータの ID
      ZIP
      jcr:title
      String ユーザーに表示される、入力パラメータの名前 郵便番号
      defaultValue String パラメーターのデフォルト値
      90028
      非表示
      Boolean パラメータを非表示にするかどうか
      False

      注意:

      非表示プロパティが true に設定されている場合は、DefaultValue プロパティの値を指定する必要があります(ユーザにとって、入力パラメータを表示した上で値を入力することは不可能です)。

  6. 「output」ノードの下で、構成に含める(かつユーザーに表示する)出力パラメータごとにサブノードを作成します。

    以下の手順を実行して、出力パラメータ用のノード(ここでは「weather Date」)を作成します。

    注意:

    出力ノードを追加しない場合、フォーム内のオブジェクトとルールには、Web サービスで使用されるすべての出力パラメータが入力されます。

    1. 「output」ノードを右クリックし、「作成」/「ノードを作成」を選択します。

    2. 子ノードの名前(ここでは「weather Date」)を入力して「OK」をクリックします。

    3. プロパティを子ノードに追加します。

      Web 天気予報サービスのシナリオでは、次のプロパティを子ノードに追加し、「すべて保存」をクリックします。

      プロパティ タイプ 説明
      ID String
      Web サービスで使用される、出力パラメータの ID です。ID では、大文字と小文字が区別されます。

      GetCityForecastByZIPResponse.GetCityForecastByZIPResult

      ForecastResult.Forecast.Date

      jcr:title
      String ユーザーに表示される、出力パラメータの名前 日付

      上記の手順を使用して、2 番目のサブノード(ここでは「Weather Description」)を作成し、以下のプロパティをサブノードに追加します。

       

      プロパティ Type 説明
      ID String
      Web サービスで使用される、出力パラメータの ID です。ID では、大文字と小文字が区別されます。

      GetCityForecastByZIPResponse.GetCityForecastByZIPResult

      ForecastResult.Forecast.Desciption

      jcr:title
      String ユーザーに表示される、出力パラメータの名前 説明

      注意:

      id プロパティの値には、「Description」ではなく「Desciption」というパラメーター名が含まれます。これは WSDL の仕様によるものです。

CRX で Web サービスを事前設定した後は、アダプティブフォームのルールエディターからWeb サービスに基づいてルールを作成します。必要に応じて、事前設定された Web サービスを利用できるアダプティブフォームを作成します

CRX で Web サービスの場所を設定する

デフォルトでは、Web サービスは apps および libs フォルダーにセットアップできます。ただし必要に応じて、CRX 内の他の場所を管理者が 1 つ以上設定し、アダプティブフォームのユーザーがそこで Web サービスを設定することができます。ユーザーには CRX 内の apps および libs フォルダーへのアクセス権がない場合があるため、この手順が必要なことがあります。

CRX で Web サービスの場所を設定するには、以下の手順を実行します。


  1. http://[server]:[port_number]/system/console/configMgr に移動し、管理者としてログインします。

  2. アダプティブフォーム設定サービスを開きます。

  3. 「WSDL Config Search Paths」(WSDL 設定検索パス)で、設定パスを変更または追加します。

    ConfigureWebService
  4. 「保存」をクリックします。

GetCityForecastByZIP 事前設定用のアダプティブフォームを作成する

GetCityForecastByZip 事前設定に基づいてルールを記述するには、アダプティブフォームに次の項目を設ける必要があります。

  • ユーザーが郵便番号を入力するための入力フィールド
  • 入力された郵便番号に応じて週刊天気を表示するための表このシナリオでは、maxOccur プロパティを 7 に設定することで、テーブルの行を反復可能にします。ここで 7 行に設定するのは、曜日ごとに天気予報を描画するのに必要だからです。

Web 天気予報サービスを基にルールを作成するためのフォームは、次のようになります。

AFforWeatherRule

アダプティブフォームの作成に関する詳細は、「アダプティブフォームの作成」を参照してください。

アダプティブフォームで Web サービスを呼び出すためのルールを作成する

CRX で Web サービスを設定し、ルールを作成するのにふさわしいアダプティブフォームを構築した後は、Web サービスを呼び出してフォームオブジェクトを入力するためのルールを記述することができます。

以下の手順を実行して、フィールド(ここでは「郵便番号」)用に Web サービスベースのルールを作成します。

  1. 適切なフォームを、オーサリングモードで開きます。「ZIP Code(郵便番号)」フィールドをタップし、 をタップします。次に、ルールエディタを起動し「作成」をタップします。

    CreateRuleVisualEditor
  2. 状態の選択」のドロップダウンをタップし、「Is Changed(変更済み)」を選択します。

    「Is Changed」イベントは、フィールド(ここでは郵便番号)の値が変更されるたびにルールを起動します。このルールを別の形式で作成するには、ルールエディターで他のイベントと演算子を使用することができます。

    2_WSWriteRuleVisualEditor_IsChanged
  3. 「Then」文で、「アクションの選択」ドロップダウンから「サービスの呼び出し」を選択します。「Web サービス URL の入力」ドロップダウンが表示されます。

    3_WSWriteRuleVisualEditor_Invoke
  4. Web サービス URL の入力」フィールドで をタップし、CRX で設定した Web サービス(ここでは「Weekly weather of a city」)の名前を選択します。「Input」と「Output」のプレースホルダが表示されます。

    CAR で設定されていない Web サービスを呼び出すには、「Web サービス URL の入力」フィールドに Web サービスの URL を直接入力します。

    4_WSWriteRuleVisualEditor_WeatherWeek

    注意:

    このシナリオでは、入力ノードは CRX から作成しますが、その一方でパラメータのデフォルト値は 90028 に設定されています。デフォルトの郵便番号(90028)に対して天気予報を表示するには、手順 5 をスキップします。「郵便番号」フィールドでユーザーが指定した値を入力として使用するには、手順 5 に進みます。 

    注意:

    Web サービスの名前を選択した際に「Input」と「Output」のプレースホルダが表示されない場合は、CRX から該当出力フォルダの ID プロパティを確認します。正確な ID が正しい場合に入力されていることを確認してください。

  5. CRX に設定されているデフォルト値ではなく、郵便番号フィールドにユーザーが指定した値を使用するには、次の手順を実行します。

    1. 「入力」プレースホルダでは、デフォルト値を削除し、コンポーネントを入力することを選択します。

      5_WSWriteRuleVisualEditor_Input
    2. 「フォームオブジェクト」タブの「入力」ドロップオブジェクトから「ZIP Code(郵便番号)」フィールドを選択するか、またはドラッグ&ドロップします。

  6. 「出力」プレースホルダで、「フォームオブジェクト」タブから、表に表示された 2 個の「テキストボックス」フィールドをドロップオブジェクトまでドラッグ&ドロップします。オ

    1. 「GetWeatherInformationResult.WeatherDescription.Date」出力パラメータの下に、テーブル内の日付に関連するテキストボックスをドラッグ&ドロップします。 

    2. 「GetWeatherInformationResult.Weather Description.Description」出力パラメータ内に、テーブル内の天気に関連するテキストボックスをドラッグ&ドロップします。

      6_WSWriteRuleVisualEditor_InputOutput
  7. 完了」をクリックして、ルールを保存します。

ウェブサービスベースのルールを使用した、フォームオブジェクトの入力

Web サービスベースのルールを作成したアダプティブフォームでは、次の手順を実行することにより、Web サービスを使用してフォームオブジェクトを入力できるようになります。

  1. 「郵便番号」フィールドで都市の郵便番号を入力し、天気予報を確認します。 

    AFforWeatherRule

    郵便番号フィールドからカーソルを移動すると、テーブルには週の曜日ごとの天気予報が入力されます。たとえば、カリフォルニア州サンノゼの郵便番号(95111)を入力し、Tab キーを押すか、またはマウスのカーソルを「郵便番号」フィールドから動かすと、表には次のように週間天気が表示されます。

    WeatherRuleInfo

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー