Visual Studio 2012 を使用して SharePoint ワークフローの Web サービスを操作するWorking with Web Services in SharePoint Workflows using Visual Studio 2012

Visual Studio 2012 を使用して SharePoint ワークフローの Web サービスを操作する方法を示します。提供元: Andrew ConnellAndrewConnell.comDemonstrates how to use web services in SharePoint workflows using Visual Studio 2012. Provided by: Andrew Connell, AndrewConnell.com

注意

この記事にはエンドツーエンドのコード サンプルが付属しており、記事を読みながら参照したり、独自の SharePoint ワークフロー プロジェクトを開始するときに利用したりできます。This article is accompanied by an end-to-end code sample that you can use to follow the article, or as a starter for your own SharePoint workflow projects. You can find the downloadable code here: LINK. ダウンロード可能なコードは、次の MSDN Code Gallery から見つけることができます: Visual Studio 2012 を使用して SharePoint ワークフローの Web サービスを操作するYou can find the downloadable code in the MSDN Code Gallery, here: Working with Web Services in SharePoint Workflows using Visual Studio 2012.

SharePoint には、ワークフローについて、以前のバージョンの SharePoint とは大きく異なるアプローチが採用されています。Microsoft has taken a very different approach to workflow in SharePoint than in previous versions of SharePoint. ワークフロー チームは Azure チームと協力して、ワークフロー マネージャーという新しい製品を作成しました。The workflow team worked with the Azure team to create a new product called Workflow Manager. ワークフロー マネージャーは、最新バージョンの Windows Workflow Foundation (バージョン 4) ランタイムと必要なすべてのサービスを可用性と拡張性の高い方法でホストする役割があります。Workflow Manager serves the role of hosting the latest version of the Windows Workflow Foundation (version 4) runtime and all the necessary services in a highly available and scalable way. Microsoft Azure Service Bus を活用することでパフォーマンスとスケーラビリティに対応し、展開時にはオンプレミス展開でもクラウドでの展開でも同じように動作します。It takes advantage of Microsoft Azure Service Bus for performance and scalability, and when deployed, it runs the same whether in an on-premises deployment or a deployment in the cloud. その後、SharePoint が接続され、すべてのワークフロー実行と関連タスクをワークフロー マネージャー ファームにハンドオフするよう構成されます。新しいワークフロー アーキテクチャの重要な変更の 1 つは、Visual Studio 2012 を使用してビルドされるものを含む SharePoint のすべてのカスタム フローが完全に宣言型になったことです。SharePoint is then connected and configured to hand off all workflow execution and related tasks to the Workflow Manager farm.One of the more important changes in the new workflow architecture is that all custom workflows in SharePoint completely declarative, including those built using Visual Studio 2012. 以前のバージョンの SharePoint では、Visual Studio 2012 を使用して開発されたワークフローは、すべてが宣言型であったわけではありませんでした。In previous versions of SharePoint, workflows developed with Visual Studio 2012 were not exclusively declarative. 代わりに、宣言型 XAML とコンパイル済みアセンブリの組み合わせでした。Instead, they were a pairing of declarative XAML with a compiled assembly. マネージ アセンブリには、ワークフローのビジネス ロジックが含まれていました。このことは、「コンパイル済みアセンブリなしでどのようにカスタム ビジネス ロジックを実装できるのか」と疑問に思っていた経験豊富な SharePoint 開発者にとって衝撃だったかもしれません。The managed assembly contained the workflow's business logic.This might come as a shock to seasoned SharePoint developers who may be asking, "so how do I implement my custom business logic without a compiled assembly?". 代わりに、カスタム Web サービス (理想的なのは JavaScript Object Notation (JSON) 形式でデータを返す WCF、OData、RESTful Web サービス) を作成すること、およびこの新しいバージョンでいくつかの新しいアクティビティとオブジェクトを使用することをお勧めします。Microsoft suggests that instead you create a custom web service, ideally a WCF, OData, or RESTful web service that returns data in the JavaScript Object Notation (JSON) format, and to use some of the new activities and objects in this new version.

SharePoint ワークフローにおける Web サービスの使用のシナリオScenarios for using web services in SharePoint workflows

SharePoint ワークフロー中で Web サービスを活用したシナリオは、容易に想像することができます。SharePoint 2007 または SharePoint 2010 を使用してワークフローを作成してきた開発者は、こうしたワークフローは本来、プログラミングに関連するものであるため、カスタム コードでの作業には精通しているものです。こうしたワークフローにカスタム コードを追加することは特に必須ではありませんでしたが、きわめて一般的に実施されてきました。It is not difficult to conceive of scenarios where you would leverage a custom web services in a SharePoint workflow. Developers who authored workflows using SharePoint 2007 or SharePoint 2010 are accustomed to working with custom code, since these workflows were inherently programmatic. You were not required to add custom code to these workflows, but doing so was quite common.

SharePoint ワークフローは純粋に宣言型になっているため、従来、カスタム コードの記述で対応してきた多くの事例で、これまでワークフローから呼び出され、使用されていた外部の Web サービスに記述されたコードでの処理が必要になります。With SharePoint workflows to being purely declarative, many cases where you may have written custom code must now be handled with code written in an external web service that is called and consumed by the workflow.

SharePoint ワークフローではどのような Web サービスでも使用できます。とは言え、ワークフローにとって Atom または json のいずれかの形式で提供される Open Data protocol ( OData ) によってデータを送る Web サービスとやり取りするのが最も簡単な方法です。OData は、SharePoint ワークフロー (SharePoint Designer 2013 と Visual Studio 2012 の両方) で完全にサポートされので、最良の方法です。SharePoint workflows can consume any sort of web service. That said, it is easiest for workflows to interact with web services that pass data using the Open Data protocol ( OData ), as provided in either of the formats Atom or json. OData is the best approach because it is fully supported by the SharePoint workflow authoring tools (both SharePoint Designer 2013 and Visual Studio 2012).

さらに匿名 Web サービスのほか、各種の認証によって保護された Web サービスもサポートされます。実際、個々のサービス呼び出しについて要求と応答の処理を全面的に制御することができます。したがって、たとえば、あるワークフローに含まれる一連のアクティビティを使用して、特定の OAuth トークンを取得した後、 OAuth 2.0 を使用してセキュリティが保護されたサービスに対する今後の要求に当該のトークンを組み込むことができます。In addition, both anonymous web services as well as those protected with different types of authentication are supported. In fact, you have full control over the request and response handling for each service call. Thus, for example, you can use a series of activities within a workflow to first authenticate using one service to obtain an OAuth token, and then include that token in future requests to services secured using OAuth 2.0.

ワークフローでの Web サービスの活用Leveraging web services in workflows

SharePoint ワークフローで Web サイトを使用するには、次の 2 つの段階を伴います。まず、SharePoint に新たに導入された HttpSend アクティビティを使用して Web サービスを呼び出します。 HttpSend では、最も単純な Web サービスを呼び出すことができます。また複雑なタスクの場合は、HTTP の動詞とヘッダーが提供されます。図 1 に、 HttpSend アクティビティで利用できる各種のプロパティを示します。Working with web services in SharePoint workflows involves two stages. The first is simply calling the web service, which you do by using a new HttpSend activity introduced with SharePoint. HttpSend lets you call into the simplest web services or, for more complex tasks, provides HTTP verbs and provides specific HTTP headers. Figure 1 shows many of the properties that are available on the HttpSend activity.

図 1. HttpSend アクティビティのプロパティ ツール ウィンドウFigure 1. Properties Tool Window for the HttpSend Activity

図 1. HttpSend のプロパティ ツール ウィンドウ

サービス要求で使用するメソッドの種類も指定する必要があります。図 1 では、[ 要求] ブロックの中でメソッドの種類 (この例では GET) を指定できます。 GETPUTPOST、および DELETE の各オプション (これ以外にもあります) を指定できます。これが、アクティビティの URI で定義されたリソースをどのように処理するかについて、Web サービス、特に RESTful サービスに指示を与えるための主な方法です。You must also specify the method type you wish to use in the service request. Notice in Figure 1 that in the Request block you can specify the method type (in this case, GET). Available options include GET, PUT, POST, and DELETE (although there are others). This is the primary way to tell web services, specifically RESTful services, what to do on the resource defined in the URI of the activity.

たとえば、特定のアイテムに関するすべてのプロパティが取得されるように、 Uri には、項目の一意のアドレスが記載され、メソッドが GET に設定されます。 Uri には、アイテムの削除のために、同じ一意のアドレスが保持されますが、メソッドは DELETE に設定されます。アイテムの更新時も、メソッドが POST に設定される点を除き、同様です。アイテムの作成時は、 Uri は、アイテムを作成するコレクションの一意のアドレスを参照し、メソッドは POST に設定されます。アイテムの作成時、または更新時に、サービスによりデータには、 HttpSend アクティビティの RequestContent プロパティで指定した要求内のコンテンツとして引き渡すものを使用していることが条件付けられます。For instance, to get all the properties of a specific item, the Uri would contain the unique address of the item, and the method would be set to GET. To delete the item, the Uri would remain the same unique address of the item but the method would be set to DELETE. The same is true for updating an item except the method would be set to POST. In creating an item, the Uri would point to the unique address of the collection where the item is to be created, and the method would be set to POST. When creating or updating items, services require the data to use what is passed along as content in the request, indicated using the RequestContent property on the HttpSend activity.

ここで説明する Web サービスで実施する 2 つの段階は、Web サービスを対象としたデータの送信と受信に関するものです。 HttpSend アクティビティで RequestContent または ResponseContent プロパティを使用するかどうかを問わず、JavaScript Object Notation (JSON) 文字列としてフォーマットした複雑な構造としてデータを渡すことができます。なお、これらの json 文字列は手動で作成したり、操作したりする必要はありません。代わりに、タスクがより容易になる DynamicValue という新しいオブジェクト タイプが用意されています。The second stage of working with web services that we're going to cover involves submitting or receiving data from a web service. Regardless of whether you use the RequestContent or ResponseContent properties on the HttpSend activity) you can pass the data as a complex structure, which are formatted as JavaScript Object Notation (JSON) strings. The good news is, you don't have to create and manipulate these json strings manually. Instead, Microsoft gives you a new object type, the DynamicValue, that makes your task much easier.

DynamicValue DynamicValue オブジェクトには、階層データをはじめ、Web サービス呼び出しの応答も格納できます。また、応答中のアイテム数をカウントする、応答から値を抽出する、アイテムの更新または作成に使用する新しい構造体を構築する場合に利用できる DynamicValue オブジェクトに関連付けられた一連のアクティビティもあります。DynamicValue objects can store hierarchal data as well as store the response of a web service call. Furthermore, there is a series of activities associated with DynamicValue objects that you can use to count the number of items in the response, extract values from the response, or build up a new structure for updating or creating items.

SharePoint ワークフローのための Web サービスの作成Creating web services for SharePoint workflows

Web サービスの呼び出しがサポートされている一方、ワークフロー内でのカスタム コードのサポートが得られていなければ、この段階で開発者は、サービスの作成方法がわかっていなければなりません。SharePoint ワークフローで使用するカスタム Web サービスを作成するためのオプションが数多くあります。 HttpSend アクティビティ値と DynamicValue のデータ型は、RESTful サービス、および OData プロトコルに準拠したサービスに最も適しています。With the support for calling web services and the lack of supporting custom code within workflows, developers will now need to know how to create services. There are plenty of options for creating custom web services for use in SharePoint workflows. The HttpSend activity and DynamicValue data type are best suited for RESTful services and those that conform to the OData Protocol.

OData は、REST サービスの原理に基づいてデータを作成、使用するためのプロトコルです。成熟度、信頼性、および強度に優れた HTTP プロトコルを使用してデータの交換を標準化する目的で開発されました。OData の指定が終わった段階で、異なる組織がテクノロジ スタック上にそれぞれ異なるプロトコルを実装しました。Microsoft も独自のバージョンの OData を実装し、これに Windows Communication Foundation (WCF) Data Services 5.0 というブランドを付けました。OData is a protocol for creating and consuming data based on the principles of REST services. It was developed in an effort to standardize exchanging data using the mature, reliable, and robust HTTP protocol. Once the OData specification was complete, different organizations implemented the protocol on their own technology stacks. Microsoft implemented its own version of OData and branded it Windows Communication Foundation (WCF) Data Services 5.0.

SharePoint で実装された RESTful サービスでは、これらのサービスが WCF Data Services (具体的には、OData 3.0 仕様を補完している WCF Data Services 5.0) を使用して構築されているため、実際に OData がサポートされています。The RESTful services implemented by SharePoint actually support OData because they were built using WCF Data Services, specifically WCF Data Services 5.0, which implements the OData 3.0 specification.

OData サービスの CRUDQ 操作を実装Implement OData Service CRUD-Q operations

Web サービスの一般的な使い方は、データベース中のデータを対象に単純な作成、読み取り、更新、削除、クエリ (CRUDQ) を実行することです。SharePoint ワークフローで使用する OData サービスは、WCF を使えばきわめて簡単に作成できます。既に特定のデータベースが存在することを前提とすれば、ほとんどコーディングの必要のない次の 4 つの簡単なステップに従って作成できます。A common use for web services is performing simple create, read, update, delete, and query (CRUD-Q) operations on data within a database. Creating an OData service for use with a SharePoint workflow is quite simple using WCF. Assuming you have an existing database there are four short steps that require very little coding:

  1. Entity Framework を使用してデータベースのモデルを作成します。コードの記述は必要ありません (Visual Studio によりウィザードが提供されます)。Create a model of your database using the Entity Framework. There is no code required (Visual Studio, provides a wizard).

  2. 新しい WCF データ サービスを作成します。コードの記述は必要ありません (Visual Studio によりウィザードが提供されます)。Create a new WCF data service. There is no code required (Visual Studio provides a wizard).

  3. サービス コード ファイルで、エンティティ モデル (ステップ 1 で作成したモデル) の名前をサービスのソースに設定し、モデル中の各エンティティについてアクセシビリティとアクセス許可を設定します。いずれのステップも、わずか 2 行のコードが必要になります。In the service code file, set the name of the entity model (created in step #1) to the source of the service, then set the accessibility and permission for the entities in the model. Both steps require as little as two lines of code.

  4. ワークフロー マネージャーがアクセスできる場所にサービスを公開します。Publish the service to a location that Workflow Manager can access.

OData サービスの操作の実装Implement OData service operations

Web サービスを使用して実施すべきもう 1 つのタスクは、CRUDQ モデルにあてはめられるビジネス ロジックを実行することです。たとえば、新規の銀行ローンを作成する CRUDQ 操作をサポートする OData サービスの例を考えてみます。 ここでは、このサービスを呼び出して、将来のローンに対して現在の金利を取得できるようにクレジット スコアを提供することによって消費者をサポートするものと仮定します。この種のタスクは、特定のメソッドを呼び出して、整数で渡すことにより、応答が取得されるため、CRUDQ モデルには該当しません。Another task you'll want to accomplish using web services is running business logic that may not fit into the CRUDQ model. For example, consider an OData service that supports CRUD-Q operations for creating new bank loans. Suppose this service also supports consumers calling the service and providing a credit score to retrieve a current interest rate for a prospective loan. This type of task does not fall into the CRUDQ model, since it calls a method and passes in an integer to receive a response.

このシナリオは、OData および WCF のデータ サービスが サービスの操作 を提供することによってサポートされます。サービスの操作は一般的なもので、たとえば、アドレス http://[..]/_api/web/lists/GetByTitle('ListTitle') を使用して特定のリストを取得する場合など、SharePoint サービス内でも使用されます。 GetByTitle メソッドは、SharePoint のチームが開発したサービス オペレーターです。開発者は、WCF Data Services を使用して作成したカスタム Web サービス内に独自のカスタム サービス操作を作成します。OData and WCF data services support this scenario by providing you with service operations. Service operations are common and are even used within SharePoint services, for instance, when retrieving a specific list using the address http://[..]/_api/web/lists/GetByTitle('ListTitle'). The GetByTitle method is a service operator the SharePoint team created. Developers create their own custom service operations in custom web services created using WCF Data Services.

チュートリアル: Visual Studio 2012 によるワークフローの作成Walkthrough: Create a workflow with Visual Studio 2012

次のチュートリアルでは、Northwind データベースで OData Web サービスを呼び出すカスタム ワークフローを作成する方法を示します。Northwind データベースは、 OData.org でホストされています。The following walkthrough demonstrates how to create a custom workflow that calls an OData web service on the Northwind database. You can find the Northwind database hosted at OData.org.

ワークフローが完了すると、ユーザーは顧客 ID を入力し、ワークフローを開始します。ワークフローが開始すると、追加の顧客情報が取得され、リスト アイテムが、取得されたデータで更新されます。When the workflow is completed, users will enter a customer ID, then start the workflow. When started, the workflow retrieves additional customer information and updates the list item with the data it has retrieved.

  1. Visual Studio 2012 を開始して、SharePoint でホストされる新規のアプリ プロジェクトを作成します。Start Visual Studio 2012 and create a new SharePoint-hosted app project.

  2. このプロジェクトで、新規のカスタム リストを作成し、「顧客」という名前を付けます。In this project, create a new custom list and name it "Customers".

  3. 新しいリストで次のフィールドを作成します。各フィールドについて既定のデータ型を string のまま設定します。In this new list, create the following fields. Leave the default data type for each field as string:

    • 顧客 ID (既定の「Title」フィールドの名前を変更します)CustomerId (renamed from the default "Title" field)
  • 顧客名Customer Name

  • ジョブ タイトルJob Title

  • アドレスAddress

  • 国/地域設定Country/Region

  • 勤務先電話番号Business Phone

  • Fax 番号Fax Number

  1. [ソリューション エクスプローラー][追加] > [新しいアイテム] をクリックしてプロジェクトにワークフローを追加します。次に、[新しいアイテムの追加] ダイアログ ボックスで [Office/SharePoint] から [ワークフロー] プロジェクトのアイテムを選択します。Now, add a workflow to the project by clicking in Solution Explorer on Add > New Item; then, in the Add New Item dialog box, select the Workflow project item from the Office/SharePoint category.

  2. ワークフローに「CompleteCustomerDetails」という名前を付け、[ 次へ] をクリックします。Name the workflow "CompleteCustomerDetails" and click Next.

  3. [ カスタマイズ ウィザード] から要求されたら、「Complete Customer Details」という名前を付け、[ リスト] ワークフローに設定します。[ 次へ] をクリックします。When prompted by the Customization wizard, name the workflow "Complete Customer Details" and set it to be a List workflow. Cick Next.

  4. 次のウィザード ページで、関連付けを作成するためのボックスをオンにして、[ 顧客リスト] を選択し、ワークフロー履歴とタスク リストについて [ 新規作成] を選択します。[ 次へ] をクリックします。On the next wizard page, check the box to create an association, select the Customer list, then select Create New for the workflow history and task lists. Click Next.

  5. ウィザードの最後のページで、ワークフローを手動で開始するためのボックスをオンにします。自動的に開始するためのオプションは オフ のままにします。[ 完了] をクリックします。On the final wizard page, check the box to start the workflow manually; leave the option to start automatically un -checked. Click Finish.

  6. この時点で、Visual Studio では、 Sequence アクティビティを 1 つだけ含むワークフロー デザイナー画面が表示されます。At this point, Visual Studio displays the workflow designer surface that contains a single Sequence activity.

  7. [ シーケンス] アクティビティの名前を [ ルート] に変更します。Change the name of the Sequence activity to Root.

  8. ルートアクティビティの中に Sequence アクティビティを 4 つ追加し、次のように名前を付けます。Add four more Sequence activities inside the Root activity and name them as follows:

    • InitInit
  • Get Customer Data From ServiceGet Customer Data From Service

  • Process Service ResponseProcess Service Response

  • リスト アイテムを更新するUpdate List Item

  1. この段階で、図 2 のようなワークフローが表示されます。At this point, the workflow will appear as shown in Figure 2.

    図 2. 4 つの空のシーケンスを含む完全な顧客の詳細のワークフローFigure 2. Complete Customer Details Workflow with Four Empty Sequences

図 2. 顧客の完全な詳細ワークフロー

ユーザーが入力した顧客 ID を取得するGet the customer ID entered by the user

ワークフローが最初に行うべきことは、ユーザーが入力した顧客 ID を取得することです。そのためには、2 つの変数を作成する必要があります。The first thing the workflow needs to do is retrieve the customer ID, as entered by the user. To do this, you need to create two variable.

  1. ワークフロー デザイナーの下方にある [ 変数] タブをクリックして、2 つの変数を作成します。Click the Variables tab at near the bottom of the workflow designer and create two variables

    • CustomerItemProperties (data type = DynamicValue; scope = Init)。この変数により、リスト アイテムからすべてのプロパティを取得するアクティビティが返す結果セットが格納されます。CustomerItemProperties (data type = DynamicValue; scope = Init). Use this variable to store the result set returned by the activity that gets all properties from the list item.

      注意

      既定では、DynamicValue データ型は表示されません。Note: The DynamicValue data type is not shown by default. これを見つけるには、[変数の型] 列の [型の参照] オプションを選択します。To find it, select the Browse for Types option in the Variable Type column. ダイアログの上部の検索ボックスに、「DynamicValue」と入力し、その後、[Microsoft.Activities.DynamicValue] を選択します。In the search box at the top of the dialog, enter DynamicValue, and then select the Microsoft.Activities.DynamicValue.

    • CustomerId (data type = String; scope = Root): この変数により、ユーザーが入力した顧客 ID を格納します。CustomerId (data type = String; scope = Root): Use this variable to store the customer ID entered by the user.

  2. ツールボックスの [ SharePoint - リスト] セクションから [ LookupSpListItem] アクティビティを探し、これを [ Init] シーケンスにドラッグします。図 3 のようにアクティビティ プロパティを設定します。Locate the LookupSpListItem activity in the SP - List section of the toolbox and drag it to the Init sequence. Set the activity properties as shown in Figure 3.

    図 3. LookupSPListItem アクティビティのプロパティ ツール ウィンドウFigure 3. Properties Tool Window for the LookupSPListItem Activity

図 3. プロパティ ツール ウィンドウ

<span data-ttu-id="0c536-233">このアクティビティにより、ワークフロー マネージャーは、SharePoint REST API を使用して、現在のリスト アイテムのプロパティを取得し、先に作成した **DynamicValue** 変数に **JSON** 応答を格納するようになります。</span><span class="sxs-lookup"><span data-stu-id="0c536-233">This activity tells Workflow Manager to use the SharePoint REST API to retrieve the properties of the current list item and to store the **JSON** response in the **DynamicValue** variable that you just created.</span></span>
  1. [ LookupSpListItem] アクティビティの [プロパティの取得] リンクをクリックして、リスト アイテムから顧客 ID を取得します。これにより、[ GetDynamicValueProperties] アクティビティがデザイン画面に追加されます。Retrieve the customer ID from the list item by clicking the Get Properties link in the LookupSpListItem activity. Doing this adds a GetDynamicValueProperties activity to the design surface.

  2. 図 4 のように、[プロパティ] ダイアログボックスで、省略記号 ([…]) をクリックして、プロパティ セレクターを開きます。In the Properties dialog box, click the ellipsis ( ???) to open the Property selector, shown in Figure 4. ウィザードで、[エンティティ型][顧客のリスト アイテム] に設定し、次の図のように、[パス] を [顧客 ID] に、[割り当て先] を 顧客 ID にそれぞれ設定した状態でプロパティ、顧客 ID を追加します。In the wizard, set the Entity Type to List Item of Customers, then add a single property, CustomerId, with the Path set to CustomerId and Assign To set to CustomerId (the variable previously created), as shown in the following figure.

  3. [プロパティの作成] をクリックして、[パス] 列に CustomerId を入力します。Click Create Property and enter CustomerId in the Path column.

  4. [ 割り当て先] 列に、先に作成した変数、[ 顧客ID] を入力します。図 4 に記入の済んだ [ プロパティ] ダイアログ ボックスを示します。In the Assign To column, enter CustomerId, which is the variable we created earlier. Figure 4 shows the completed Properties dialog box.

    図 4. GetDynamicValueProperties アクティビティのプロパティ ダイアログFigure 4. Properties dialog for the GetDynamicValueProperties Activity.

図 4. アクティビティからの プロパティ ダイアログ

Northwind OData Web サービスの呼び出しCall the Northwind OData web service

ワークフローには、顧客 ID への参照が含まれているため、次のステップでは、Web サービスの呼び出しを行います。これには主に、[ サービスから顧客データを取得] シーケンスを使用して行います。The workflow now has a reference to the customer ID, so the next step is to call the web service. To do this, we'll be working primarily with the Get Customer Data from Service sequence.

  1. [ サービスから顧客データを取得] シーケンスを選択して、新しい変数を 2 つ作成します。Select the Get Customer Data from Service sequence and create two new variables:

    • NorthwindServiceUri (data type = String; scope = [ サービスから顧客データを取得])。この変数により、Web サービスのクエリ実行に使用する URI が格納されます。NorthwindServiceUri (data type = String; scope = Get Customer Data from Service). This variable stores the URI that is used to query the web service.
  • NorthwindServiceResponse (data type = DynamicValue; scope = Root)。この変数により、Web サービスの応答が格納されます。NorthwindServiceResponse (data type = DynamicValue; scope = Root): This variable will store the web service response.
  1. Web サービスのクエリに使用する URL を作成するには、ワークフロー ツールボックスから [ 割り当て] アクティビティを探し、[ サービスから顧客データを取得] シーケンスにドラッグします。[ 割り当て] アクティビティは、名前と値をペアを表す 2 つ部分で構成されています。To create the URL to query the web service, start by locating an Assign activity in the workflow toolbox and drag it to the Get Customer Data from Service sequence. Notice that the Assign activity has two parts representing a name-value pair.

  2. [ 割り当て] アクティビティの左の部分を [ NorthwindServiceUri] に設定します。Set the left portion of the Assign activity to NorthwindServiceUri.

  3. アクティビティの右の部分を文字列、 "http://services.odata.org/Northwind/Northwind.svc/Customers('" + CustomerId + "')?$format=json" に設定します。図 5 に記入の済んだアクティブを示します。Set the right portion of the activity to the string "http://services.odata.org/Northwind/Northwind.svc/Customers('" + CustomerId + "')?$format=json". Figure 5 shows the completed activity.

    図 5. OData サービスを含む変数の設定に使用する割り当てアクティビティFigure 5. Assign Activity Used to Set a Variable Containing the OData Service

図 5. アクティビティの割り当て

  1. [ 割り当て] アクティビティのすぐ後に、 HttpSend アクティビティをツールボックスから [ サービスから顧客データを取得] シーケンスにドラッグします。Drag an HttpSend activity from the toolbox to the Get Customer Data from Service sequence, immediately following the Assign activity.

  2. 図 6 に示す値を使用して [ HttpSend] アクティビティにプロパティを設定します。Set the properties on the HttpSend activity using the values shown in Figure 6.

    図 6. HttpSend プロパティFigure 6. HttpSend Properties

図 6. HttpSend プロパティ

Northwind OData Web サービス応答の処理Process the Northwind OData web service response

Web サービス要求が出され、結果がローカル変数に格納されたら、次のステップとして、応答を処理します。応答に含まれる個々の値は、それぞれ個別の変数に追加する必要があります。Once the web service request has been made and the results are stored in a local variable, the next step is to process the response. Each value in the response needs to be added to a different variable.

  1. このチュートリアルの冒頭で作成した下記の各フィールドについて変数を作成します (顧客 ID フィールドは除きます)。Create a variable for each of the fields that we created at the start of this walkthrough (except the customer ID field), shown here:

    • 顧客名Customer Name
  • ジョブ タイトルJob Title

  • アドレスAddress

  • 国/地域設定Country/Region

  • 勤務先電話番号Business Phone

  • Fax 番号Fax Number

  1. 個々のフィールド名に従って各変数に名前を付けます。Name each of these variables according to its respective field name.

  2. 変数の型はすべて String とします。変数の範囲はすべて Root とします。All of the variables should be of type String; all of the variables should be scoped to Root.

  3. GetDynamicValueProperties アクティビティを [ サービス要求処理] シーケンスに追加します。Add a GetDynamicValueProperties activity to the Process Service Request sequence.

  4. [プロパティ] ウィンドウで、図 7 のように、[ソース] の値を NorthwindServiceResponse に設定します。In the Properties window, set the Source value to NorthwindServiceResponse, as shown in Figure 7.

  5. [プロパティ] プロパティで省略記号ボタン ( ...) をクリックし、図 7 のように、[パス] 列と [割り当て先] 列に値を入力します。Click the ellipsis button ( ???) button on the Properties property and then provide values in the Path and Assign To columns as shown in Figure 7. [顧客] リスト フィールドで作成した値が [割り当て先] 列の値になります。Notice that the values in the Assign To column are the variable you created for each of the Customers list fields.

    図 7. プロパティ ダイアログの GetDynamicValueProperties およびコンテンツのプロパティ ツール ウィンドウFigure 7. Properties tool window for GetDynamicValueProperties and contents for Properties dialog

図 7. プロパティ ツール ウィンドウ

顧客リスト アイテムの更新Update the customer list item

最後のステップとして、リスト アイテムを更新します。The last step is to update the list item.

  1. [ リスト アイテムの更新] シーケンスに UpdateListItem アクティビティを追加し、[ プロパティ] ウィンドウを使用して次の値を設定します。Add an UpdateListItem activity to the Update List Item sequence and use the Properties window to set the following values:

    • [ ListId] : (最新リスト)ListId: (current list)
  • [ItemId]: (最新アイテム)ItemId: (current item)
  1. ListItemPropertiesDynamicValues プロパティの省略記号 ([...]) ボタンをクリックし、表示されるダイアログ ボックスで、[エンティティ型][顧客のリスト アイテム] に設定します。Click the ellipsis button ( ???) button on the ListItemPropertiesDynamicValues property and in the resulting dialog box, set Entity Type to List Item of Customers.

  2. 最後に、Web サービスから抽出する個々の値について、図 8 のようにワークフロー中の各変数にリスト アイテムの値を設定します。Finally, for each of the values extracted from the web service, set the values on the list item to the variables in the workflow, as shown in Figure 8.

    図 8. 値を設定した ListItemPropertiesDynamicValue ダイアログFigure 8. ListItemPropertiesDynamicValue Dialog with Values Set

図 8. ListItemPropertiesDynamicValue ダイアログ

ワークフローのテストTest the workflow

これでワークフローが作成されたので、正しく動作するはずです。その安定性を確認するために、テストしてみます。The workflow is now complete and should function properly. To confirm its stability, you should test it.

  1. [ F5] を押してデバッグを開始します。Visual Studio により SharePoint でホストされるアプリが構築、展開されます。Press F5 to start debugging; Visual Studio builds and deploys the SharePoint-hosted app.

  2. ブラウザーが開いたら、[ 顧客] リストに移動し、図 9 に示すように「ALFKI」という [ 顧客 ID] の顧客レコードを 1 つ作成し、アイテムを保存します。When the browser opens, navigate to the Customers list, create a single customer record with a Customer Id of "ALFKI", as shown in Figure 9, and then save the item.

    図 9. 新しいリスト アイテムFigure 9. New List Item

図 9. 新しいリスト アイテム

  1. 次に、ワークフローを手動で開始し、リスト アイテムに戻ります。ページを随時更新して、図 10 のようにワークフローに最新のリスト アイテムが表示されるようにします。Next, manually start the workflow and then go back to the list item. Keep refreshing the page to see the workflow update the list item, as shown in Figure 10

    図 10. リスト アイテムの更新Figure 10. Updated List Item

図 10. リスト アイテムの更新

<span data-ttu-id="0c536-p150">リスト アイテムは、ワークフローを開始したユーザーに代わり、SharePoint でホストされるアプリによって更新されます。ただし、このチュートリアルでは、管理者によって開始されています。</span><span class="sxs-lookup"><span data-stu-id="0c536-p150">Notice that the list item was updated by the SharePoint hosted app on behalf of the person who started the workflow. In this walkthrough, however, it was started by the administrator.</span></span>

結論Conclusion

SharePoint には、新製品、ワークフロー マネージャー 1.0 によって実行が支援される新しいワークフローが導入されています。社内展開、Office 365 でのホストのいずれであれ、SharePoint 展開の選択に依存することなく、すべてのカスタム ワークフローが必ず動作するように、現在ではワークフローが完全に宣言型になっています。したがって、旧バージョンの SharePoint の Visual Studio で作成したワークフロー中のカスタム コードとして実装されていたカスタム ビジネス ロジックは、もうサポートされません。SharePoint introduced a new workflow architecture facilitated by a new product: Workflow Manager 1.0. To ensure that all custom workflows worked regardless of the SharePoint deployment choice, either on-premises or hosted in Office 365, all workflows are now 100-percent declarative. Therefore, custom business logic previously implemented as custom code in Visual Studio-authored workflows in previous versions of SharePoint are no longer supported.

Microsoft では、新しい HttpSend アクティビティを使用して、ワークフロー マネージャーでの Web サービスの呼び出しに対するサポートを導入しています。またワークフロー マネージャーには、Web サービスに送信する構造体を作成したり、データ型が DynamicValue という応答を使用したりする際に必要なサポートも導入されています。ワークフローの作成時には、このデータ型と対応するアクションを使用することにより、SharePoint ワークフロー中で外部 Web サービスを利用しながら強固なビジネス プロセスの作成や活用が促進されるようになります。Microsoft introduced support for calling web services in Workflow Manager using the new HttpSend activity. Workflow Manager also introduced support for creating structures to submit to web services as well as consuming their responses called the DynamicValue data type. When creating workflows, use this data type and associated actions to facilitate creating and leveraging robust business processes in SharePoint workflows by using external web services.

関連項目See also