SharePoint Designer 2013 で SharePoint 2013 上へワークフローを作成するさいには、「SharePoint 2013 ワークフロー」と「SharePoint 2010 ワークフロー」が選択可能になりました。

この「SharePoint 2013 ワークフロー」の特徴として、「HTTP Web サービスを呼び出す」という聞きなれないアクションを利用することが可能になっています。これは、SharePoint REST API やインターネット上で公開されている Web  サービス API、または自身で作成した Web アプリケーションやサービスなどに実装した API を、SharePoint のワークフロー処理から呼び出せるというものです。ちょっとオモシロそうでしたので、どういうものか試してみました。

「SharePoint 2013 ワークフロー」をオンプレミスで利用する場合には、事前にサーバー側で Workflow Manager を構成しておく必要があります。こちらの構成方法は下記 TechNet をご確認ください。

SharePoint Server 2013 でワークフローを構成する
http://technet.microsoft.com/ja-jp/library/jj658586(v=office.15).aspx

利用できそうな Web サービスを探す

どんな Web サービスに対応しているのか調べてみると、API によるレスポンスが OData または JSON となっているものが推奨と書かれていました。

Working with Web Services in SharePoint 2013 Workflows using SharePoint Designer 2013
http://msdn.microsoft.com/ja-jp/library/office/dn567558(v=office.15).aspx

そこで、インターネットを調べてみたところ…、「Weather Hacks」という livedoor が提供している Web サービスが手ごろそうだったので利用することにしました。

お天気Webサービス仕様
http://weather.livedoor.com/weather_hacks/webservice

SharePoint 上にリストを作成する

この API を利用したワークフローを実装するためのリストとして、今回は SharePoint Online 上へ次のようなリストを作成しました。

列名 説明
都市コード API を呼び出すさいに必要となる地域別 ID を入力します。(ID は API 側で定義されている)
お天気 API から返される天気が入力されます。(晴れ、曇りなど)
最高気温 API から返される最高気温が入力されます。
概況 API から返される天気概況文が入力されます。

ワークフローから Web サービスを呼びだす

では、さっそく SharePoint Designer 2013 を利用して、ワークフローの作成を開始したいと思います。今回は、先ほど作成したリストの「リスト ワークフロー」として作成します。ここで、「プラットフォームの種類」として「SharePoint 2013 ワークフロー」を選択します。

20141216-1

次に、さっそく「HTTP Web サービスを呼び出す」アクションをステージに追加します。追加すると、「要求」「この」「応答」「応答ヘッダー」が指定できるようになっていることが分かります。「応答コード」については、アクションを追加した時点ですでに変数が設定されていました。

20141216-2

20141216-3

項目 説明
要求 「辞書」型変数が指定できます。API へリクエストする Body を指定します。今回は必要ナシでした。
この API を利用するための URL を指定します。今回はパラメータとして「都市コード」をクエリ文字列に含めるように設定しました。
応答 「辞書」型変数が指定できます。API からレスポンスで返される Body を格納するための変数を指定します。
応答ヘッダー 「辞書」型変数が指定できます。API からレスポンスで返される Header を格納するための変数を指定します。今回は必要ナシでした。
応答コード API からの HTTP 応答コードを格納しておくための変数があらかじめ指定されています。

というわけで設定の様子をキャプチャで紹介します。

追加したアクションのドロップダウン メニューからプロパティを開き、指定可能な値を確認します。上に書いたほかに、リクエストのヘッダーも指定できるようですね。キャプチャは、このプロパティを見ながら進めます。

20141216-4

まずは、「この」を設定します。最初に、「Address」を指定しましょう。今回はリスト アイテムに入力された値をパラメータに含めるように文字列ビルダーで作成しました。さらに、「RequestType」には「HTTP GET」を指定します。

20141216-5

次に、「応答」を設定します。応答では「ResponseContent」へ新規に「辞書」型変数を作成し指定します。

20141216-6

これで、Web サービスを呼びだすためのアクションの設定は終わりました。

今回はここまで

長くなってしまいましたので、後編に続くということにしたいと思います。後編は、辞書型変数から値を取り出して、リストアイテムに格納する処理を作成し、動作確認までしたいと思います。