SharePoint ワークフローの基礎SharePoint workflow fundamentals

プラットフォーム アーキテクチャの概要およびワークフロー相互運用機能ブリッジを含む SharePoint のワークフロー インフラストラクチャの概要について説明します。Provides a high-level overview of the workflow infrastructure in SharePoint, including a view of the platform architecture and the workflow interop bridge.

SharePoint でのワークフローの概要Overview of workflows in SharePoint

SharePoint のワークフローは、以前のバージョンから大幅に再設計された Windows Workflow Foundation 4 により動作します。Windows Workflow Foundation (WF) は、 Windows Communication Foundation (WCF) により提供されるメッセージング機能上に構築されます。SharePoint workflows are powered by Windows Workflow Foundation 4, which was substantially redesigned from earlier versions. Windows Workflow Foundation (WF), in turn, is built on the messaging functionality that is provided by Windows Communication Foundation (WCF).

概念的には、ワークフロー モデルはビジネス プロセスの構造をしています。したがって、Windows Workflow Foundation 4 ワークフローは、各々がビジネス プロセスの機能コンポーネントを示すワークフローの "アクティビティ" のコレクションの構造をしています。Conceptually, workflows model structured business processes. Therefore, Windows Workflow Foundation 4 workflows are a structured collection of workflow "activities," each of which represents a functional component of a business process.

SharePoint のワークフロー プラットフォームは、Windows Workflow Foundation 4 のアクティビティ モデルを使用して SharePoint ベースのビジネス プロセスを表現します。さらに、SharePoint は、ワークフローを作成する高レベル ステージゲート モデルを導入します。The workflow platform in SharePoint uses the Windows Workflow Foundation 4 activity model to represent a SharePoint-based business process. Additionally, SharePoint introduces a higher-level stage-gate model on which to create workflows.

ワークフロー アクティビティと SharePoint アクションとの間の関係に注意することは重要なことです。ワークフロー アクティビティは、そのメソッドがワークフローの動作を駆動する基となるマネージ オブジェクトのことです。一方、ワークフロー アクションは基となるアクティビティをカプセル化し、SharePoint Designer でユーザー フレンドリーなフォームで示すラッパーです。ワークフロー作成者がワークフロー アクションと対話する一方で、ワークフロー実行エンジンが対応するアクティビティ上で動作します。It is important to note the relationship between workflow activities and SharePointactions. Workflow activities represent the underlying managed objects whose methods drive workflow behaviors. Workflow actions, on the other hand, are wrappers that encapsulate the underlying activities and present them in a user-friendly form in SharePoint Designer. Workflow authors interact with the workflow actions, whereas the workflow execution engine acts on the corresponding activities.

アクティビティ クラスの実装であるアクティビティは、XAML を使用して宣言的に実装されます。The activities, which are implementations of activity classes, are implemented declaratively by using XAML.

ワークフロー アクティビティは、メッセージング API を使用して SharePoint と通信する疎結合された Web サービスを使用して呼び出されます。これらの API は、 Windows Communication Foundation (WCF) によって提供されるメッセージング機能上に構築されます。Workflow activities are invoked using loosely coupled web services that use messaging APIs to communicate with SharePoint. These APIs are built on the messaging functionality that is provided by Windows Communication Foundation (WCF).

メッセージング フレームワークは非常に柔軟で、実質的に、必要となるあらゆるメッセージング パターンをサポートします。なお、SharePoint ファーム上では、Windows Workflow Foundation および WCF はワークフロー マネージャー クライアント 1.0 にホストされます。The messaging framework is very flexible and supports virtually any messaging pattern that you need. Note that on a SharePoint farm, Windows Workflow Foundation and WCF are hosted in Workflow Manager Client 1.0.

ワークフロー マネージャー クライアント 1.0、SharePoint、および SharePoint Designer 2013 はそれぞれ、新しいインフラストラクチャの重要な部分を提供します。Workflow Manager Client 1.0, SharePoint, and SharePoint Designer 2013 each provide significant parts of the new infrastructure:

  • ワークフロー マネージャー クライアント 1.0 は、ワークフロー定義の管理機能を提供します。また、ワークフロー インスタンスの実行プロセスをホストします。Workflow Manager Client 1.0 provides the management of workflow definitions. It also hosts the execution processes for workflow instances.

  • SharePoint は SharePoint ワークフロー用のフレームワークを提供します。これは、SharePoint のドキュメント、リスト、ユーザー、およびタスクを含む SharePoint ベースのビジネス プロセスをモデル化しています。さらに、SharePoint のワークフロー、関連付け、アクティビティ、および他のワークフロー メタデータが、SharePoint に保存され管理されます。SharePoint provides the framework for SharePoint workflows, which model SharePoint-based business processes that involve SharePoint documents, lists, users, and tasks. Additionally, SharePoint workflows, associations, activities, and other workflow metadata are stored and managed in SharePoint.

  • SharePoint Designer 2013 は、以前のバージョンのように、ワークフロー定義を作成し、それらを発行する主要なビジネス ユーザー ツールです。関連付けられた SharePoint コンポーネントを使用して、または使用せずにワークフロー定義をパッケージ化することもできます。SharePoint Designer 2013 is the primary business-user tool for creating workflow definitions and publishing them, as it was in previous versions. It can also be used to package a workflow definition with or without associated SharePoint components.

プラットフォーム アーキテクチャPlatform architecture

図 1 は SharePoint のワークフロー フレームワークの概要を示しています。最初に、この新しいワークフロー インフラストラクチャで新しいワークフロー実行ホストとしてワークフロー マネージャー クライアント 1.0 を導入する方法に注目してください。以前のバージョンでは、ワークフロー実行が SharePoint 自体にホストされましたが、SharePoint ではこの点が変更されています。ワークフロー マネージャー クライアント 1.0 は SharePoint の外部にあり、Microsoft Azure サービス バス上の共通のプロトコルを使用して OAuth 経由で通信します。それ以外の場合は、SharePoint にコンテンツ アイテム、イベント、アプリなどの必要な機能が含まれています。ただし、下位互換性のために SharePoint 2010 ワークフロー ホスト (つまり、Windows Workflow Foundation 3 エンジン) も実装されます。その詳細については、「 SharePoint のワークフロー相互運用機能の使用」を参照してください。Figure 1 depicts a high-level view of the SharePoint workflow framework. Notice, first, how the new workflow infrastructure introduces Workflow Manager Client 1.0 as the new workflow execution host. Whereas in previous versions workflow execution was hosted in SharePoint itself, this has changed in SharePoint. Workflow Manager Client 1.0 is external to SharePoint and communicates using common protocols over the Microsoft Azure service bus, mediated by OAuth. Otherwise, SharePoint includes the feature that you would expect to see: content items, events, apps, and so on. But notice that there is also an implementation of the SharePoint 2010 workflow host (that is, the Windows Workflow Foundation 3 engine) for backward compatibility. You can read more about this in Use workflow interop for SharePoint.

図 1. ワークフロー インフラストラクチャのアーキテクチャの概要Figure 1. High-level architecture of the workflow infrastructure

ワークフロー アーキテクチャの概要

SharePoint では、ワークフロー マネージャー クライアント 1.0 は ワークフロー マネージャー クライアント 1.0 サービス アプリケーション プロキシの形態で表されます。このコンポーネントを使用すると、SharePoint は ワークフロー マネージャー クライアント 1.0 サーバーと通信および対話できます。サーバー間の認証は OAuth を使用して提供されます。Workflow Manager Client 1.0 is represented in SharePoint in the form of the Workflow Manager Client 1.0 Service Application Proxy. This component allows SharePoint to communicate and interact with the Workflow Manager Client 1.0 server. Server-to-server authentication is provided using OAuth.

ワークフローがリッスンしている itemCreateditemUpdated などの SharePoint イベントは、Microsoft Azure サービス バスを使用してワークフロー マネージャー クライアント 1.0 にルーティングされます。戻る際には、プラットフォームは SharePoint REST (Representational State Transfer) API を使用して SharePoint に呼び戻します。SharePoint events for which a workflow is listening, like itemCreated, itemUpdated, and so on, are routed to Workflow Manager Client 1.0 using the Microsoft Azure service bus. For the return trip, the platform uses the SharePoint Representational State Transfer (REST) API to call back into SharePoint.

また、集合的に Workflow Services Manager と呼ばれる SharePoint ワークフロー オブジェクト モデルへの追加もあります。これを使うと、ワークフローとその実行を管理および制御できます。サービス マネージャーの相互作用の主なゾーンは、展開、メッセージング、インスタンス制御、および SharePoint 2010 ワークフローとの相互運用性 (下位互換のため) です。There are also additions to the SharePoint workflow object model, called collectively the Workflow Services Manager, which allow you to manage and control your workflows and their execution. The primary zones of interaction for the services manager are deployment, messaging, instance control, and (for backward compatibility) interoperability with SharePoint 2010 workflows.

最後にワークフロー作成コンポーネントがあります。SharePoint Designer は、SharePoint 2010 と SharePoint のワークフローの両方を作成および展開できるようになりました。Visual Studio 2012 は宣言型のワークフロー作成用のデザイナー画面を提供するだけでなく、ワークフロー マネージャー クライアント 1.0 の機能を完全に統合する SharePoint アドインおよびソリューションを作成できます。Finally, there is the workflow authoring component. SharePoint Designer can now create and deploy both SharePoint 2010 and SharePoint workflows. Visual Studio 2012 not only provides a designer surface for creating declarative workflows, but it can also create SharePoint Add-ins and solutions that fully integrate Workflow Manager Client 1.0 functionality.

ワークフローのサブスクリプションと関連付けWorkflow subscriptions and associations

SharePoint ワークフローの最も重要な変更がワークフロー処理を Microsoft Azure のような外部のワークフロー ホストに移動することであるため、SharePoint メッセージおよびイベントは Microsoft Azure のワークフロー インフラストラクチャに接続することが不可欠でした。さらに、Microsoft Azure でインフラストラクチャを顧客データに接続する必要もありました。ワークフローの関連付け (サブスクリプションの WF コンセプトに構築) は、これらの要件に対応する SharePoint インフラストラクチャの一部です。Because the most significant change to SharePoint workflows is the moving of workflow processing onto external workflow hosts like Microsoft Azure, it was essential for SharePoint messages and events to connect to the workflow infrastructure in Microsoft Azure. In addition, it was necessary for Microsoft Azure to connect the infrastructure to customer data. Workflow associations (which are built on the WF concept of subscriptions) are the SharePoint infrastructure pieces that support these requirements.

Microsoft Azure 発行/購読サービスMicrosoft Azure publication/subscribe service

ワークフローの関連付けおよびサブスクリプションを議論する前に、pub/sub、または単に PubSub と呼ばれる Microsoft Azure発行/購読サービスについて説明します。PubSub は非同期のメッセージング フレームワークです。メッセージ送信者 (発行者) は、メッセージ受信者 (購読者) にメッセージを直接送信することはありません。代わりに、発行者がメッセージ購読者については知らずにクラスとしてメッセージをレンダリングします。続いて購読者は、発行者に関わらず自身で作成したサブスクリプションに基づいて関心のあるメッセージを識別し、発行されたメッセージを使用します。Before you can discuss workflow associations and subscriptions, you must look at the Microsoft Azure publication/subscribe service, which is sometimes referred to as pub/sub, or simply PubSub. PubSub is an asynchronous messaging framework. Message senders (publishers) do not send messages directly to message receivers (subscribers). Instead, messages are rendered by publishers as classes that have no knowledge of the message subscribers. Subscribers, then, consume published messages by identifying messages of interest, regardless of the publisher, based on subscriptions that they have created.

このようにメッセージの作成からメッセージの使用を切り離すことによって、スケーラビリティと柔軟性が得られます。また、発行者側でのマルチキャスト メッセージングが可能で、購読者側では不特定多数のメッセージを使用できます。This decoupling of message creation from message consumption allows for scalability and flexibility. It enables multicast messaging on the publisher side, and for promiscuous message consumption on the subscriber side.


PubSub 機能は、Microsoft Azure Service Bus の一部であり、WCF やその他のサービス エンドポイントの接続オプションを提供します。The PubSub feature is a part of the Microsoft Azure Service Bus, which provides connectivity options for WCF and other service endpoints. これには REST エンドポイントが含まれます。このエンドポイントはネットワーク アドレス変換 (NAT) 境界の外側に配置するか、動的に割り当てられて頻繁に変化する IP アドレスにバインドするか、またはその両方にすることができます。These include REST endpoints, which can be located behind network address translation (NAT) boundaries, or bound to frequently changing, dynamically assigned IP addresses, or both. Azure Service Bus の詳細については、「サービス バス」を参照してください。For more information about the Azure Service Bus, see Service Bus.

ワークフローの関連付けと関連付けの範囲Workflow associations and association scope

ワークフローの関連付けでは、ワークフロー定義を特定の既定値と共に特定の SharePoint 範囲にバインドします。関連付け自体はサブスクリプション ルールのセットを表します。これらのルールは、適切な (購読した) ワークフロー インスタンスを確実に使用するように受信メッセージを処理する Azure 発行/購読サービスに保存されます。Workflow associations bind workflow definitions to specific SharePoint scope, with specific default values. The associations themselves represent a set of subscription rules that are stored in the Azure publication/subscription service that process incoming messages to ensure that they are consumed by appropriate (that is, subscribed) workflow instances.

既定では、メッセージング インフラストラクチャは次の範囲のワークフローに対応します。By default, the messaging infrastructure supports workflows at the following scopes:

  • SPList (リスト ワークフロー用)SPList (for list workflows)

  • SPWeb (サイト ワークフロー用)SPWeb (for site workflows)

前のバージョンとは異なり、SharePoint はコンテンツ タイプ ( SPContentType ) を範囲にしたワークフローはサポートされていません。ただし、メッセージング インフラストラクチャは拡張可能なため、任意の範囲に対応できます。開発者としては、特定の WorkflowSubscription インスタンスにある EventSourceId プロパティを任意の guid に設定できます。その後、その EventSourceId 値を使用して、指定された WorkflowSubscription の新しいワークフロー インスタンスを生じさせる PublishEvent(Guid, String, IDictionary<String, Object>) を呼び出すことができます。Unlike previous versions, SharePoint does not support workflows that are scoped to a content type ( SPContentType ). However, the messaging infrastructure is extensible, so it can support any arbitrary scope. As a developer, you can set the EventSourceId property on a given WorkflowSubscription instance to any guid. You can then use that EventSourceId value to call PublishEvent(Guid, String, IDictionary<String, Object>), which triggers a new workflow instance of the specified WorkflowSubscription.

Microsoft Azure のワークフロー サービスWorkflow service in Microsoft Azure

SharePoint ワークフローの関連付けは、Microsoft Azure 内のワークフロー サービスによって表されます。アプリケーションがワークフローの関連付けおよびそのデータを取得する必要がある場合、指定した範囲で使用可能なワークフロー サービスすべてに対して最初に問い合わせをする必要があります。Associations for SharePoint workflows are represented by their workflow service within Microsoft Azure. When an application has to acquire a workflow association and its data, it must first query for all of the workflow services that are available at a given scope.

同様に、ワークフロー インスタンスはポインターをそれぞれのワークフロー サービスに戻します。これが正しい関連付けが決定される手段となります。Similarly, workflow instances carry a pointer back to their respective workflow service. This is the means by which its correct association is determined.

ワークフローの開始Starting workflows

ワークフローは、手動でまたは自動的に開始できます。Workflows can be started either manually or automatically.

手動ワークフローManual workflows

手動ワークフローは、PubSub サービスが StartWorkflow メッセージを受信すると開始します。このメッセージには次の宣言型の情報が含まれます。Manual workflows are started when the PubSub service receives a StartWorkflow message. The message contains the following descriptive information:

  • 関連付け識別子 ( WorkflowSubscription インスタンス)。The association identifier (that is, the WorkflowSubscription instance).

  • 発行元のアイテム コンテキストの ID。これは、 PublishEvent メソッド呼び出しの ItemId パラメーターおよび EventSource プロパティを使用して渡されます。The ID of the originating item context. This is passed in with the ItemId parameter and the EventSource property on the PublishEvent method call.

  • 手動開始用のイベント タイプ ( WorkflowStart)。The event type for a manual start ( WorkflowStart).

  • 必要に応じた、サブスクリプションまたは Init フォームからの追加のワークフロー開始パラメーター。これは、サブスクリプションでは CorrelationId となり、 Init フォームでは WFInstanceId となります。Additional workflow initiation parameters, either from the subscription or from the Init form, as appropriate. This would be CorrelationId for the subscription and WFInstanceId for the Init form.

自動開始ワークフローAuto-start workflows

自動開始ワークフローは、PubSub サービスへの Add メッセージを使用して開始されます。メッセージには次の宣言型の情報が含まれます。Auto-start workflows are initiated by using an Add message to the PubSub service. The message contains the following descriptive information:

  • 発行元のアイテム コンテキストの ID。The ID of the originating item context.

  • イベント自体は通常の SharePoint Add イベントです。The event itself is a normal SharePoint Add event.

  • ワークフローの開始パラメーター。The workflow initiation parameters.


繰り返し可能なイベント (たとえば、OnItemChanged イベント) でワークフローが自動的に開始する場合、関連付けのワークフローの既存の実行中のインスタンスの実行が終わるまで、指定した関連付け別のワークフローを開始できません。If a workflow automatically starts on a repeatable event (for example, the OnItemChanged event), it cannot start another workflow of a given association until the existing running instance of the association's workflow has completed running.

ワークフローのサブスクリプションWorkflow subscriptions

関連付けを自然に補うものはサブスクリプションで、ワークフローはこれを使って関連付けと対話できます。ワークフローは、サブスクリプションを Azure サービス バス上で create メソッドと delete メソッドを使用して作成する必要があります。The natural complement to associations are subscriptions, which allow the workflow to interact with associations. The workflow must create subscriptions on the Azure Service Bus using create methods and delete methods.

サブスクリプションを作成し、ワークフローをインスタンス化するメソッドの署名によって、オプションのパラメーターと必須のパラメーターの両方を指定します。The signatures of the methods that create the subscription and instantiate the workflow specify the parameters???both optional and required. パラメーターのリストはワークフロー作成者によって決定されるため、ワークフロー定義ごとに異なる場合があります。The list of parameters is determined by the workflow author, so they may differ from one workflow definition to another. サブスクリプション パラメーターのリストは、ワークフロー定義のメタデータとして指定されます。The list of subscription parameters is specified as metadata of the workflow definitions. サブスクリプション パラメーターは、サブスクリプションが作成されるときに提供されます。The subscription parameters are provided when the subscription is created. 初期化パラメーターのリストは、ワークフロー定義の一部として XAML で指定されます。The list of initialization parameters is specified in XAML as part of the workflow definition. 初期化パラメーターは、ワークフローのインスタンス化時に提供されます。The initialization parameters are provided when the workflow is instantiated.

サブスクリプションは、特定の SharePoint オブジェクトの SPList インスタンスまたは SPWeb インスタンスにバインドされます。Subscriptions are bound to a specific SharePoint object???either an SPList instance or an SPWeb instance. サブスクリプション オブジェクトの種類は、サブスクリプションが作成されるときに必須パラメーターの値として渡されます。The subscription object type is passed in as a value of a required parameter when the subscription is created. オブジェクトの種類は、サブスクリプションが、登録先のオブジェクト上で発生するイベントにのみ応答できるようにサブスクリプションの範囲を定義します。The object type defines the subscription scope so that a subscription can only respond to events that occur on the object to which they are subscribed.

SharePoint ワークフロー相互運用機能SharePoint workflow interop

SharePoint ワークフロー相互運用機能を使用すると、(Windows Workflow Foundation 3 上に構築されている) SharePoint 2010のワークフローをWindows Workflow Foundation 4 に基づいた SharePointのワークフローから呼び出すことができます。これにより、2010 のワークフローを 2013 のワークフロー内から実行できます。SharePoint workflow interop enables SharePoint 2010 workflows (which are built on Windows Workflow Foundation 3) to be called from SharePoint workflows, which are based on Windows Workflow Foundation 4. This allows you to execute 2010 workflows from within 2013 workflows.

このことは、再利用のために SharePoint 2010を SharePointのワークフローと組み合わせて使用する場合に重要です。また、SharePointではまだ実装されていない SharePoint 2010のアクティビティや機能の使用が必要になることもあります。This is important because you may have SharePoint 2010 that you may use to reuse in conjunction with your SharePoint workflows. Additionally, you may wish to use activities or features from SharePoint 2010, which are not yet implemented in SharePoint

SharePoint ワークフロー相互運用機能の詳細については、「 SharePoint のワークフロー相互運用機能の使用」を参照してください。For a full discussion of SharePoint workflow interop, see Use workflow interop for SharePoint.

関連項目See also