Visual Studio を使用して SharePoint ワークフローを作成するCreate SharePoint workflows using Visual Studio

新しい SharePoint ワークフロー プラットフォーム内で SharePoint ワークフローを作成する方法の基礎について説明します。Learn the basics of creating a SharePoint workflow in the new SharePoint workflow platform. Provided by:Andrew Connell,

執筆者: Andrew ConnellAndrewConnell.comProvided by: Andrew Connell,


この記事にはエンドツーエンドのコード サンプルが付属しており、記事を読みながら参照したり、独自の 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.

Microsoft では、SharePoint 内のワークフローに以前のバージョンとは大きく異なるアプローチを採用しています。SharePoint ワークフローのベースは Windows Workflow Foundation 4 になり、その実行は ワークフロー マネージャー と呼ばれる SharePoint の外部で実行される新しいコンポーネントにより制御されるようになりました。ワークフロー マネージャー は Windows Workflow Foundation ランタイム、および必要なサービスすべてを可用性とスケーラビリティに優れた方法でホスティングするという役割を果たします。またパフォーマンスとスケーラビリティを維持するためにサービス バスが利用されており、展開すれば、社内展開または Office 365 などのクラウド ベースのサービスの展開のいずれを問わず同様に実行されます。その理由は、ワークフローの実行と関連タスクをすべて ワークフロー マネージャー ファームにハンドオフするように構成されるからです。ワークフロー アーキテクチャに重要な変更が加えられたので、カスタム ワークフローの作成に使用していた 2 つの主要なワークフロー作成ツール (Visual Studio と SharePoint Designer) に対していくつかの変更が必要になりました。この記事では、Visual Studio 2012 をワークフロー作成ツールとして使用して、 sp15allshort 展開 (社内展開または Office 365 展開) で使用できるようにカスタム ワークフローを作成する方法について説明します。Microsoft has taken a very different approach to workflows in SharePoint than in previous versions. SharePoint workflows are now based on Windows Workflow Foundation 4, and their execution is driven by a new component called Workflow Manager, which runs externally to SharePoint.Workflow Manager serves the role as host for the Windows Workflow Foundation runtime and all the necessary services in a highly available and scalable way. It leverages Service Bus for performance and scalability, and when deployed it runs exactly the same in an on-premises deployment as when deployed to a cloud-based service, such as Office 365, because it is configured to hand off all workflow execution and related tasks to the Workflow Manager farm.The dramatic change in the workflow architecture required some changes to the two primary workflow authoring tools for creating custom workflows - Visual Studio and SharePoint Designer. This article will explore using Visual Studio 2012 as your workflow authoring tool to create custom workflows for use in sp15allshort deployments - either on-premises or Office 365 deployments

Visual Studio 2012 でのワークフローの種類Types of workflows in Visual Studio 2012

SharePoint Designer 2013 はステージから成るワークフローのみ作成できますが、Visual Studio はステート マシン ワークフローという別の種類の強力なワークフローをサポートしています。したがって、実際には Visual Studio 2012 (および Visual Studio 2013) ワークフロー開発環境はシーケンシャル、フローチャート、ステート マシンの 3 種類のワークフロー作成をサポートしています。While SharePoint Designer 2013 can only create workflows comprised of stages, Visual Studio supports another powerful type of workflow: the state machine workflow. Effectively, then, the Visual Studio 2012 (and Visual Studio 2013) workflow development environments support three types of workflow authoring: sequential, flowchart, and state machine.


シーケンシャル ワークフローは、特定の経路に従います。意思決定の分岐やループがあったり、終了点がなかったりする場合もありますが、設計プロセスでは予測できる経路に簡単に従うことができます。実際 Visual Studio 内で ワークフロー プロジェクト テンプレートを使用する場合、すべてのワークフローは最初はこの方法になります。A sequential workflow is one that follows a specific path. There may be decision branches, loops, and the workflow may not have a termination point, but it is easy to follow the predictable path in the design process. In fact, is how all workflows start out when you are using the Workflow project template in Visual Studio.

シーケンシャル ワークフローには、1 つの シーケンス アクティビティと、その中に任意の数のアクティビティが含まれます。その一部を他の シーケンス アクティビティとして使用し、一連の小規模な手順としてグループ化できます。A sequential workflow contains a single Sequence activity and then any number of activities within it. Some of these could be other Sequence activities that you use to group together a series of smaller steps.


フローチャート ワークフローでは、図 1 のように、実行経路は指定された条件に従ってワークフローのさまざまなセクションに遷移できます。通常フローチャートのアクティビティは、関連付けられている FlowDescision および FlowSwitch アクティビティと共に 1 つのシーケンス アクティビティ内に入れられ、従来の if ステートメントか共通プログラミング言語の switch ステートメントのような働きをします。In flowchart workflow, the execution pathway can transition to different sections of the workflow according to conditions that you specify, as shown in the Figure 1. The flowchart activity, along with the associated FlowDescision and FlowSwitch activity, are typically placed within a Sequence activity and act like either a traditional if statement, or like switch statement in common programming languages.

SharePoint Designer 2013 ベースのワークフロー内のステージ構造はフローチャートの原理に基づいています。この種のワークフローは、シーケンシャル ワークフローとは異なり、定められた経路に従いません。逆にワークフロー内で発生する内容により、ワークフローが従う経路が決まります。The stage construct within a SharePoint Designer 2013 based workflow is based on the principles of a flowchart. These types of workflows, unlike a sequential workflow, do not have a prescribed path in which they follow. Rather the things that happen during the workflow dictate the path the workflow follows.

図 1 Visual Studio 2012 のフローチャート ワークフローFigure 1. Flowchart workflow in Visual Studio 2012

図 1. フローチャート ワークフロー


図 1 で MSDN のワークフロー サンプルとして示されているワークフローは、「SharePoint: カスタム開始フォームを使用した承認ワークフロー」にあります。Note: You can find the workflow depicted in Figure 1 as a workflow sample on MSDN here: SharePoint: Approval workflow that uses a custom initiation form.

ステート マシンState machine

ステート マシン ワークフローは、フローチャート ワークフローと同様に、通常は特定の実行経路に従わず、図 2 のように 2 つ以上の状態で構成されます。State machine workflows, like flowchart workflows, do not typically follow a specific path of execution. Rather, they consist of two or more states as shown in Figure 2.

図 2 Visual Studio 2012 のステート マシン ワークフローFigure 2. State machine workflow in Visual Studio 2012

図 2. ステート マシン ワークフロー


図 1 で MSDN のワークフロー サンプルとして示されているワークフローは、「SharePoint: アクションとイベントに応じて状態にワークフローをルーティングする」にあります。Note: You can find the workflow depicted in Figure 1 as a workflow sample on MSDN here: SharePoint: Route workflows to states depending on actions and events.

それぞれの状態を、複数のワークフロー アクティビティが含まれる小規模なワークフローと見なしてください。特定のアクティビティを、ワークフローがある状態になったり終わったりするとき開始するよう設定できます。実際にステート マシンの関心の対象となるものを遷移として定義できます。状態ごとに 1 つ以上の遷移を持つことができます。遷移は、ある状態から別の状態に移る方法をワークフロー エンジンに示します。Think of each state as a smaller workflow that contains multiple workflow activities. You can set specific activities to start when the workflow enters or exits a given state. What really makes state machines interesting is the transitions that you can define. Each state can have one or more transitions that tell the workflow engine how to move from one state to another state.

ワークフローは、常にステート マシン ワークフロー内のいずれかの状態になろうとします。遷移により、ある状態から別の状態にワークフローが移り始めるタイミングが決まります。現実世界のビジネス プロセスを厳密に反映できるので、他の種類のワークフローよりステート マシン ワークフローの方が好まれる場合が多くあります。しかし、この種のワークフローはあっという間に複雑になりがちです。The workflow is always going to be in one of the states in a state machine workflow. A transition will dictate the trigger for the workflow to move from one state to another. Many people favor state machine workflows over the other types of workflows because they can be made to more closely mirror real world business processes. However these types of workflows can get complicated quickly.

Visual Studio 2012 のワークフロー開発インターフェイスVisual Studio 2012 workflow development interface

SharePoint プロジェクトに新しいワークフローを追加する場合、テンプレートは、メイン コンテナーの働きをする 1 つのシーケンス アクティビティを追加します。フローチャート ワークフローかステート マシン ワークフローを作成する場合は、単にこの既定のアクティビティを削除し、StateMachine または Flowchart アクティビティをデザイン画面にドラッグするだけです。When adding a new workflow to a SharePoint project, the template adds a single Sequence activity which serves as the main container. If you want to create a flowchart or state machine workflow simply delete this default activity and drag either a StateMachine or Flowchart activity onto the design surface.

開発者がカスタム ワークフローを構築するには、その前に Visual Studio 2012 のツール ウィンドウとデザイン画面をよく理解しておく必要があります。図 3 のように、要素の多くはごく一般的です。Before building a custom workflow, developers should have a good understanding on the tool windows and design surface that Visual Studio 2012 provides. Many of the elements are quite common, as shown in Figure 3:

図 3. Visual Studio 2012 のワークフロー作成インターフェイスFigure 3. Visual Studio 2012 workflow authoring interface

図 3. ワークフロー オーサリング インターフェイス

ワークフロー開発インターフェイス、つまりワークフロー デザイナーには、次の主な要素があります。The workflow development interface - that is, the workflow designer - has the following key elements:

  1. [ ソリューション エクスプローラー] は、プロジェクトをファイル ツリーとして表示します。Solution Explorer displays your project as a file tree.

  2. [ ワークフロー ツールボックス] には、ワークフローの構成に使用できるすべてのアクティビティが含まれています。このツールボックスからデザイナー画面にドラッグ アンド ドロップします。Workflow toolbox contains all of the activities that you can use to assemble a workflow. You drag and drop from the toolbox to the designer surface.

  3. [ ワークフロー デザイナー画面] は、ワークフローの要素を構成してリンクする場所です。Workflow designer surface is where you assemble and link the workflow elements.

  4. [ プロパティ グリッド] は、[ ソリューション エクスプローラー] 内で選択したアクティビティやアイテムのプロパティを表示します。プロパティの値を設定したり変更したりする場合に使用します。Property grid displays properties of a selected activity or item in Solution Explorer. Use this to set or change property values.

  5. [ 出力ウィンドウ] は、変数、引数、インポートといったワークフロー アクティビティ要素に関する情報を表示します。Output pane displays information about workflow activity elements - variables, arguments, and import.

  6. [階層リンク] ナビゲーション タブを使用すると、開発中のワークフローのさまざまな部分を拡大したり縮小したりできます。Breadcrumb navigation tabs allows you to zoom in and out on various portions of a workflow under development.

[ 出力ウィンドウ] (図 3 の #5) は、現在の適用範囲のワークフロー内の変数をすべて表示できるので重要です。適用範囲は、標準的なプログラミング オブジェクト指向の設計の場合と同じ働きをします。適用範囲がルートである変数は下位のすべての適用範囲 (クラス内のメソッドなど) にアクセスできますが、下位の適用範囲の変数 (クラス内のメソッドなど) はその適用範囲とその子のみアクセスでき、並行している適用範囲や親の適用範囲内にはアクセスできません。The Output pane (#5 in Figure 3) is important because it allows you to see all of the variables in your workflow at the current scope. Scoping works the same way as it does in standard programming object oriented design: a variable scoped at the root is accessible to all lower scopes (such as methods within a class), but a variable within a lower scope (such as a method in a class) is only accessible within that scope and its children, but not parallel or parent scopes.

開始フォームから渡される引数など、値をワークフローに渡すために使用される引数の一覧を表示するには、[ 引数] タブをクリックします。Click on the Arguments tab to see a list of the arguments that are used to pass values into the workflow, such as those passed from an initiation form.

カスタム ワークフローを作成する方法How to create a custom workflow

Visual Studio 2012 以降を使用してカスタム ワークフローを作成するには、SharePoint 開発者向けサイトへのアクセス権があることを確認してください。このチュートリアルの場合、SharePoint のローカル インストールを使用することをお勧めします。その理由は、ローカルにテストされたワークフローは WriteLine アクティビティを使用して Test Service Host コンソール ユーティリティにデバッグ情報を書き込むことができるからです。このユーティリティは、Visual Studio 2012 以降の Professional、Premium、Ultimate エディションの既定のインストールの一部である Office Developer Tools for Visual Studio 2013 に付属しています。To create a custom workflow using Visual Studio 2012 or later, ensure that you have access to a SharePoint developer site. For this walkthrough, it is recommended that you use a local SharePoint installation. This is because workflows tested locally can write debugging information to the Test Service Host console utility using the WriteLine activity. This utility is included with the Office Developer Tools for Visual Studio 2013, which are part of the default installation of Visual Studio 2012 and later in the Professional, Premium, and Ultimate editions.

新しいアプリ プロジェクトの作成Create a new app project

  1. Visual Studio で、新しい SharePoint アドイン プロジェクトを作成して、SharePoint でホストされるアプリになるように構成します。In Visual Studio, create a new SharePoint Add-ins project and configure it to be a SharePoint-hosted app.

  2. このプロジェクトで、新しい [ お知らせ] リスト インスタンスを追加します。このリストは、ワークフローのテストに使うアイテムのコンテナーとして使用します。In this project, add a new Announcement list instance. We use this list as a container for items that we are going to use to test the workflow.

  3. [ ソリューション エクスプローラー] でプロジェクト アイコンを右クリックし、[ 追加]、[ 新しいアイテム] の順に選択して、ワークフロー アイテムをプロジェクトに追加します。Add a workflow item to the project by right-clicking the project icon in Solution Explorer and selecting Add, then New Item.

  4. [ 新しいアイテムの追加] ダイアログ ボックスで、[ Office/SharePoint] カテゴリから [ ワークフロー] プロジェクト アイテムを選択し、名前を「My First Workflow」にして、[ 次へ] をクリックします。In the Add New Item dialog box, select the Workflow project item from the Office/SharePoint category and name it "My First Workflow". Click Next.

  5. [ SharePoint カスタマイズ ウィザード] で名前の入力を求められたら、既定値のままにして、[ リストのワークフロー] になるように設定して、[ 次へ] をクリックします。When prompted by the SharePoint Customization Wizard for a name, leave the default, then set it to be a List Workflow. Click Next.

  6. ウィザードの次のページで、関連付けを作成するボックスをオンにし、作成したばかりの [お知らせ] リストを選択し、必要なワークフロー履歴とタスク一覧に関する を選択してから [次へ] をクリックします。On the next page of the wizard, check the box to create an association, then select the Announcements list that we just created; select for the required workflow history and task lists and then click Next.

  7. ウィザードの最後のページで、ワークフローを手動で開始するボックスをオンにし、2 つの自動開始オプションをオフのままにして、[ 終了] をクリックします。図 4 のように、Visual Studio により自動的に、必要な要素がプロジェクトに追加され、Workflow.xaml ファイルがデザイナーに読み込まれます。On the final page of the wizard, check the box to start the workflow manually, leaving the two automatic start options unchecked; then click Finish. Visual Studio automatically adds the required elements to the project and loads the Workflow.xaml file into the designer, as shown in Figure 4.

    図 4 ワークフロー アイテムを追加した後の既定のデザイナー画面Figure 4. Default designer surface after adding the workflow item

図 4. 既定のデザイナー画面

ワークフローのステップの整理Organize workflow steps

特定のビジネス プロセスを自動化するために、1 つのステップ、つまり シーケンスにグループ化した任意の数のアクティビティをワークフローに含めることができます。しかし、1 つの シーケンスにグループ化するアクティビティの数が多すぎると、ワークフローが複雑になりすぎ、従ったりデバッグしたりしにくくなります。これは、一般的なプログラミング言語で、非常に長くて複雑なメソッドを作成するのが賢明でないことに似ています。代わりに、特定のタスクを共通のシーケンスで実行するように、連携して動作するアクティビティをグループ化する必要があります。To automate a given business process, workflows can contain any number of activities that you group together into a step, or Sequence. However, if you group too many of these activities in a single Sequence, the workflow becomes cluttered and difficult to follow and debug. This is similar to how in a common programming language it is ill-advised to create extremely long and complex methods. Instead, you should group activities that work together to perform a specific task in a common sequence.

このワークフロー サンプルは、ワークフローをセグメント化する方法を示しています。図 5 のように、デザイナー画面で、新しいプロジェクトで既存の既定シーケンス アクティビティに 2 つの新しいシーケンス アクティビティを追加し、名前を「Child Sequence 1」と「Child Sequence 2」に変更します。さらに (図 5 には示されていません)、元のシーケンス アクティビティの名前を「Root」に変更します。This workflow sample will illustrate this practice of segmenting your workflows. In your new project, on the designer surface, to the existing default Sequence activity, add two new Sequence activities and rename them "Child Sequence 1" and Child Sequence 2", as depicted in Figure 5. Also (though not shown in Figure 5), change the name of the original Sequence activity to "Root".

図 5 既定のルート シーケンスに子シーケンスを追加するFigure 5. Adding child sequences to the default, or root, sequence

図 5. 子シーケンスの追加

注釈を使用してワークフローにコメントを挿入するComment your workflow using annotations

C#、VB.NET や C++ などの一般的なプログラミング言語を使用している場合は、該当するコメント指定子を使用してコードにコメントを挿入できます。コードへのコメントは、コード ベースのテストと保守にとって重要です。そこで、Visual Studio の annotations という機能により、ワークフローの開発時にコメントを挿入できるようになっています。When using a common programming language like C#, VB.NET, or C++, you can comment your code by using appropriate comment specifiers. Commenting code is important for testing and maintaining a code base. Well, Visual Studio allows you also comment your workflow development by providing a feature called annotations.

特定のワークフロー アクティビティにコメントを挿入するには、アクティビティを選択し、[ コメント] を選択して、[ コメントの追加] を選択します。アクティビティのタイトル バーの右側にある山形記号を逆にした小さいアイコンは、注釈があることを知らせます。アイコンをマウスでポイントするかクリックすると、メッセージが表示されます (図 6 を参照)。図 6 のように、アクティビティに対する注釈を常に表示されるように固定するオプションがあります。You can comment a given workflow activity by selecting the activity, the selecting Annotations, then Add Annotation. A small icon of inverted chevrons on the right side of the activity's title bar signals that it has an annotation. Hover over or click on the icon to see the message (shown in Figure 6). You have the option to pin the annotation to the activity so it is always visible, as shown in Figure 6.

図 6 アクティビティに対する注釈Figure 6. Annotation on an activity

図 6. アクティビティの注釈

リスト アイテムから値を取得するObtain values from list items

ワークフローを作成する際には、共通のタスクとして、リスト アイテムのプロパティを取得します。そのためには、 LookupSPListItem アクティビティを使用します。 このアクティビティは、SharePoint REST API を使用して Web サービスを呼び出し、リスト アイテム上の情報を検索します。その方法を次の手順で示します。A common task you will encounter when creating workflows is getting properties of a list item. To accomplish this task, use the LookupSPListItem activity. What this activity does is make a web service call using the SharePoint REST API to lookup information on the list item. The following procedure shows how to do this:

最初に、 LookupSPListItem アクティビティをツールボックスから Child Sequence 1 アクティビティにドラック アンド ドロップします。First, drag a LookupSPListItem activity from the toolbox and drop it in the Child Sequence 1 activity.

デザイナーにアクティビティを追加した後に、一対のプロパティ ListIdItemId を設定する必要があります。任意のリスト内の情報を検索するようにこれらのプロパティを設定できますが、[ 現在のリスト] と [ 現在のアイテム] のショートカットを使用して、これらの値を自動的に見つけるよう ワークフロー マネージャー に指示します。After adding the activity to the designer, you have to set a couple of properties: ListId and ItemId. These properties can be set to lookup information in any list, but using the shortcuts for current list and current item tell Workflow Manager to figure these values out automatically.

Web サービスを呼び出しているので、このアクティビティからの戻り値のタイプは、 Result プロパティを反映して、 DynamicValue になります。したがって、Web サービス呼び出しの出力を格納するこのデータ タイプの変数が必要です。実際にはこの方法は非常に簡単で、 LookupSPListItem アクティビティの [ プロパティの取得] リンクをクリックするとほとんど自動的に実行されます。Because we are making a web service call, the return value from this activity, reflected in the Result property, is of type DynamicValue. Therefore, we need a variable of that data type in which to store the output output of the web service call. This is actually pretty easy to do because clicking the Get Properties link in the LookupSPListItem activity much of this automatically:

  • 最初に、タイプ DynamicValue の新しい変数が作成されます。First, it creates a new variable of type DynamicValue.

  • 次に、この新しい変数が LookupSPListItem アクティビティ上の Result プロパティのソースになるように設定されます。Next, it sets this new variable to be the source for the Result property on the LookupSPListItem activity.

  • 次に、 GetDynamicValueProperties アクティビティがワークフローに追加され、この変数から値を取得できるようになります。It then adds a GetDynamicValueProperties activity to the workflow so that we can retrieve the value from the variable.

  • 最後に、変数が GetDynamicValueProperties アクティビティ上の Source プロパティにバインドされます。Finally, it binds the variable to the Source property on the GetDynamicValueProperties activity.

もちろん、すべて手動で実行することもできますが、このツールのおかげでプロセスが簡単になります。必要に応じて変数の名前を変更できます。Of course, you could have done all of this manually, but the tools simplify the process. If necessary, you can change the names of the variables.

もちろん、ワークフローを起動したリスト アイテムから値を取得することが目標です。次に、[担当者] 列でこれらのプロパティの値を以前に作成した変数にバインドするか、変数を自動的に作成する [変数の読み込み] リンクを使用します。The point, of course, is to get some values from the list item that triggered the workflow: Now the Assigned To column is where the values of these properties are bound to variables previously created or use the Populate Variables link that will create the variables automatically.

  1. 図 7 に示すように、GetDynamicValueProperties アクティビティ上の Properties プロパティで、省略記号ボタン [???] をクリックして[プロパティ] ダイアログ ボックスを開きます。On the Properties property on the GetDynamicValueProperties activity, click on the ellipses button [ ???] to open the Properties dialog box, shown in Figure 7.

    図 7 [プロパティ] ダイアログ ボックスを使用して値を抽出するFigure 7. Extract values using the Properties dialog box

図 7. リスト アイテムからの値の抽出

  1. 次に、[ エンティティの種類] を、アイテムの種類と一致するように変更します。この例では、[ List Item of Announcements] リスト アイテムです。Next change the Entity Type to match the type of the item; in this case it is the List Item of Announcements list item.

  2. Title フィールドと Created By フィールドの、2 つの検索するプロパティを選択します。Select the two properties to retrieve: the Title and Created By fields.

  3. [ 担当者] 列で、作成した変数にこれらのプロパティをバインドします。または、[ 変数の読み込み] リンクを使用すると、変数が自動的に割り当てられます。The Assign To column is where you bind these properties to the variables that we created. Alternatively, you can use the Populate Variables link, which assigns the variables automatically.

図 7 で、ツールにより変数が作成され、データ タイプも正確に一致していることに注意してください。また、[ 作成者] フィールドが整数であることにも注意してください。作成者が番号で示されるというのは、ユーザーにとってあまり便利とは言えません。この点については、この後でワークフロー内で対応します。Notice in Figure 7 how the tool created the variables and even matched the data types correctly. Also notice how the Created By field is an integer. It is not really useful to show the user a number for the author is it? This will be addressed later in the workflow.

ユーザー プロパティの取得Get user properties

カスタム ワークフローの開発には、ユーザーの検索という別の一般的なタスクもあります。たとえば、現在ワークフローではお知らせアイテムの作成者が認識されていますが、ID で認識されているだけです。この ID は、サイトの [ ユーザー情報リスト] に追加されたユーザーの ID で、これらのユーザーのプロファイル情報のキャッシュ コピーです。本当に必要なのは、氏名かログイン名です。Another common task in custom workflow development is looking up users. For instance, our workflow currently knows who created the announcement item, but only knows them by their ID. This ID is the ID of the user that has been added to the site's User Information List, which is a cached copy of their profile information. What is really desired is their name or login name.

ユーザー情報を取得するには、次のようにします。To get user information, do the following:

  1. 最初のシーケンスの名前 (Child Sequence 1) を "Get Item Properties" に変更し、2 つ目シーケンスの名前を "Get Author Properties" に変更します。Rename our first sequence ( Child Sequence 1) to "Get Item Properties" and name the second sequence to "Get Author Properties".


    ユーザー ID が含まれる変数の適用範囲が、作業対象のシーケンスだけでなくワークフロー全体であることを確認します。Note: Make certain the variable that contains the user ID is scoped to the whole workflow and not just to the sequence we were working on. 次に、図 8 のように変数の適用範囲を変更します。Let's change the scope of the variable now, as shown in Figure 8.

    図 8. 変数の適用範囲の変更Figure 8. Changing the scope of variables

図 8. 変数範囲の変更

  1. 次に、ユーザーの情報を取得し、ワークフロー内で LookupSpUser アクティビティをドラッグ アンド ドロップして、名前を「Get Announcement Author」に変更します。このアクティビティは、SharePoint REST API を呼び出し、特定の ID を渡します。ブラウザーを使用して http://../_api/web/SiteUsers に移動し、REST サービスの外観を確認してください。返されるプロパティにも注目してください。すぐ後で必要になります。Now, to get the user information, drag-and-drop a LookupSpUser activity in the workflow and rename it to "Get Announcement Author". This activity will call the SharePoint REST API and pass in a specific ID. Verify what the REST service looks like by using the browser and navigating to http://../_api/web/SiteUsers. Take notice of the properties returned, too, as we will need these in a moment.

  2. 各ユーザーには特定の URL があり、ユーザー情報を取得するための ID が含まれていることに注意してください。アクティビティは GetUserById サービス オペレーターを呼び出して検索対象のユーザーの ID を渡すことにも注意してください。この ID を渡すには、 LookupSPUser アクティビティの PrincipalId プロパティを CreatedBy 変数になるように指定します。これはお知らせアイテムの作成者を示す整数です。Notice that each user has a specific URL that includes their ID to get the user information. Also notice that the activity is likely calling the GetUserById service operator and passing in the ID of the user to lookup. Pass this in by specifying the PrincipalId property of the LookupSPUser activity to be the CreatedBy variable, which is the integer of the author of the announcement item.

  3. 図 9 のように、 LookupSPUser アクティビティは LookupSPListItem アクティビティと同様にタイプ DynamicValue の値を返すので、このタイプの変数を作成して応答に関連付けてから、この変数を LookupSPUser アクティビティの Result プロパティにバインドします。Just like the LookupSPListItem activity, the LookupSPUser activity returns a value of type DynamicValue, so create a variable of that type to associate with our response and then bind this variable to the Result properties of the LookupSPUser activity, as shown in Figure 9.

    図 9 LookupSPUser アクティビティの出力の更新Figure 9. Updating the output of the LookupSPUser activity

図 9. LookupSPUser 出力の更新

  1. 前述のように、 GetDynamicValueProperties アクティビティを使用して AuthorProperties 値から結果を取得します。しかし、今回 Entity Type には設定できるオプションはないことに注意してください。このことは問題ではありません。その理由は、ブラウザーで実際の Web サービス応答 LookupSPUser を表示できるからです。表示するには、図 10 のように、検索しているプロパティへのパスを入力して (この例では d/results/(0)/LoginName) から、もう 1 つパスを入力して作成者の表示名を取得します。As we did earlier, use a GetDynamicValueProperties activity to pull the results out of the AuthorProperties value. However, notice this time around that the Entity Type does not have an option that we can set. This is not a problem, because the actual web service response the LookupSPUser can be seen in the browser. To see it, enter the path to the property you are looking for, which, in this case is d/results/(0)/LoginName; then, enter another to get the display name of the author, as shown in Figure 10.

    図 10. LookupSPUser アクティビティからの値の取得Figure 10. Retrieving values from the LookupSPUser activity

図 10. LookupSPUser からの値の取得

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

最後に、ワークフローをテストします。まず、2 つの WriteLine アクティビティを追加します。こうすると、2 つの変数の内容を表示できます。ワークフローをテストすると、図 11 のように Test Service Host コンソール ユーティリティは 2 つの値を書き出します。Finally, let's test the workflow. Start by adding two WriteLine activities. These allow us to show the contents of our two variables. When testing the workflow, the Test Service Host console utility will write out the two values as shown in Figure 11.

図 11 Test Service Host コンソールを使用したテストFigure 11. Test using Test Service Host Console

図 11. ワークフローのテスト


この記事では、最初に、ワークフロー マネージャー ファームに接続しているときに Visual Studio 2012 以降を使 用して作成できる、 SharePoint に関するさまざまな種類のワークフローについて説明しました。次に、ワークフローを起動するリスト アイテムから値を収集するワークフローを作成する方法と、 LookupSPUser アクティビティを使用してユーザーのログイン名や表示名を取得するなどの共通タスクを実行する方法について説明しました。さらに、ワークフローを整理された状態に保ち、注釈を使用してコメントを追加するための推奨されるいくつかの方法を示しました。This article first explained the different types of workflows that can be created using Visual Studio 2012 and later for SharePoint when it has been connected to a Workflow Manager farm. Next it demonstrated how to create a workflow that not only collected values from the list item that triggered the workflow, but it also demonstrated how to perform a common task such as obtaining a user's login name and display name using the LookupSPUser activity. In addition, the article touched on a few good practices for keeping workflows organized and adding comments using annotations.

関連項目See also