InfoPath REST サービスにつなぐデータ接続 [郵便番号検索]
こんにちは、奥田です。
InfoPath では、受信送信のデータ接続が利用できますが、InfoPath で REST サービスにつなぐデータ接続を作成できるようになりました。今日は InfoPath で REST サービスに接続するやり方をご紹介します。
http://(URL)?[パラメータ] のように REST サービス呼び出しを実行するときにはパラメータを URL にセットしますが、InfoPath で REST サービスを利用する際には、フォームに入力されたデータをパラメータにセットする形になることがほとんどかと思います。そのため InfoPath では [REST URL の変更] という動作が用意されています。
今回は、郵便番号検索サービスを利用して、次図のような郵便番号の入力から住所を自動表示するサンプルをベースに使い方をご紹介します。
<フォーム内容>
・ 郵便番号のテキスト ボックス (フィールド名は Zip とします)
・ 住所のテキスト ボックス (フィールド名は Address とします)
・ [郵便番号検索] ボタン
<接続するサービス>
・ http://zip.cgis.biz/ で提供されている郵便番号検索サービスを利用させていただきました。
http://zip.cgis.biz/xml/zip.php?zn=1050001 とリクエストを送信することで、住所が XML でかえってきます。
<InfoPath での設定>
1. REST サービスに接続する受信データ接続を作成します。
・ 戻り値の型を取得するため、仮の値をパラメータでセットした URL を指定します。
・ 郵便番号をフォーム内で入力されてから呼び出しを行いたいので、[フォームを開くとき自動的にデータを取得する] オプション
はオフにします。
2. [郵便番号検索] ボタンのルールとして、次の設定を行います。
・ 1つ目の動作 (REST URL にパラメータをセットする)
– [REST URL の変更] 動作
– 1 の手順で作成したデータ接続を選択
– URL に cancat関数を利用して、パラメータをセットする
cancat(“サービスのURL”,”?パラメータ名=”,<パラメータにしたいフィールド>)
・ 2つ目の動作 (サービス呼び出し)
– データのクエリを送信する
– 1 の手順で作成したデータ接続を選択
・ 3つ目の動作 (サービスからの戻り値をフィールドにセットする)
– フィールドの値を設定する
– サービスから取得したデータをセットしたいフィールドを選択 (今回だったら Address)
– サービスの戻り値から値をセット (セカンダリ データソースからフィールドを選択)
以上です。