ワークフローの作成を計画する (SharePoint Server 2010)

 

適用先: SharePoint Foundation 2010, SharePoint Server 2010

トピックの最終更新日: 2016-11-30

ワークフローとは何でしょうか? ワークフローは基本的に 2 つのものから構成されます。ワークフローがユーザーと対話するために使用するフォームと、ワークフローの動作を定義するロジックです。ワークフローがどのように作成されるかを理解するには、この両方を知る必要があります。

ワークフローは Web ブラウザーでユーザーと通信するため、フォームの表示は ASP.NET に依存しています。それに従って、これらのフォームは .aspx ページとして定義されます。ワークフローがそのフォームを表示できるのは、ライフ サイクルの 4 つの段階においてです。

  • 関連付け: 管理者は、ワークフローを特定のドキュメント ライブラリまたはリストに関連付けるときに、この関連付けから生じるすべてのワークフロー インスタンスに適用するオプションを設定できることがあります。このようなオプション設定を可能にする場合、ワークフロー作成者は、管理者が情報を指定できるようにフォームを提供する必要があります。

  • 初期化: ワークフローの開始者は、インスタンスの実行を始める際に、オプションを指定できる場合があります。たとえば、前述の承認シナリオの場合、そのオプションにはワークフロー参加者のリストを指定することや、各自がそのタスクを完了するべき時間を決めることがあります。ワークフローがこれを可とする場合、作成者は、ワークフローの開始者がこれらのオプションを設定できるフォームを提供する必要があります。

  • タスク完了: 実行中のワークフロー インスタンスでは、ワークフローの参加者にフォームが表示され、参加者がタスクを完了する必要があります。このフォームは前のシナリオで承認者がドキュメントにコメントし、承認か拒否かを示すために使用したものです。

  • 変更: ワークフローの作成者は、ワークフローの実行中にワークフローを変更できます。たとえば、ワークフローの実行の開始後に、新たに参加者を加えたり、タスクの完了期限を延長したりできることがあります。このオプションが使用される場合、ワークフローはこの時点でフォームを表示し、参加者が何を変更するべきかを指定できるようにする必要があります。

Microsoft SharePoint Server 2010 を使用して作成されたワークフローでは、InfoPath で作成されたフォームを使用できます。ワークフローのロジックは常に一連のアクティビティとして定義されます。これは WF (Windows Workflow Foundation) に基づく他のワークフローと同じです。ワークフローのロジックとフォームを特定するために、Microsoft は 2 つのツールを提供しています。それぞれのツールは異なるユーザーを対象としています。ソフトウェア開発者は、Windows Workflow Foundation の Workflow Designer 機能を使用できます。このツールは Visual Studio 2010 Professional Edition の内部で実行されるもので、ワークフローに組み込むアクティビティを編成するためのグラフィカル環境を提供します。それほど技術的でない部署のインフォメーション ワーカーでも、Microsoft SharePoint Designer 2010 を使用すれば、コードを記述せずにワークフローを作成できます。以下の 2 つのセクションでは、それぞれのツールを使用してワークフローを作成する方法を説明します。

Visual Studio 2010 および WF Workflow Designer を使用したワークフローの作成

SharePoint Server を使用するワークフローでは、単なる .aspx フォームではなく、Microsoft InfoPath 2010 ワークフロー フォームを使用できます。これらのフォームを作成するために、ワークフロー作成者は Microsoft InfoPath を使用します。このツールは、作成者がフォームのコンテンツを定義できるグラフィカル エディターを備えています。Visual Studio 環境の中ですべての作業を行うことを希望する開発者は、Visual Studio 2010 Professional Edition を使用できます。

InfoPath ワークフロー フォームを作成したら、workflow.xml ファイルを使用して、ASP.NET フォームと同じようにワークフローに添付します。ただし、ASP.NET フォームと異なり、開発者は、InfoPath ワークフロー フォームとワークフローとの間で情報を移動させるためのカスタム コードを記述する必要はありません。代わりに、SharePoint Server と InfoPath がこれに相当するリンクを提供し、ワークフロー作成者の負担を減らします。

ワークフローは多くの点でフローチャートに似ています。それを考えると、開発者がワークフローの動作を指定できるようなグラフィカル ツールの提供が有効です。このツールは Visual Studio 2010 Professional に含まれている SharePoint Workflow ツールです。Windows Workflow Foundation (WF) Workflow Designer を使用するプロジェクト型のツールであり、ワークフローの展開とフォームのサポートを追加します。開発者は、WF Workflow Designer を使用して、ワークフローのアクティビティとそれらの実行順序をグラフィカルに定義できます。次の画面は、それがどのようなものかを Microsoft Visual Studio の単純な例で示しています。

フィードバック収集のワークフロー

Windows SharePoint Services のワークフロー例

使用可能なアクティビティは、画面左のツールボックスに表示されています。開発者はこれらのアクティビティをデザイン画面にドラッグすれば、ワークフローの手順を定義できます。各アクティビティのプロパティは右下隅の [プロパティ] ウィンドウで設定できます。

Windows Workflow Foundation の Base Activity Library には、既に述べた、一連の基本的なアクティビティが提供されています。SharePoint Server にも、ワークフロー作成に特化した一連のアクティビティがあります。以下はそのうち最も重要なものです。

  • OnWorkflowActivated: ワークフローの標準の開始点です。一例を挙げると、このアクティビティは SharePoint の管理者から、ワークフローがドキュメント ライブラリ、リスト、コンテンツ タイプ、またはサイトに関連付けられる際の関連付けフォームを通じて情報を受け取ります。ワークフロー開始時の初期化フォームを通じて情報を受け取ることもあります。ワークフローはすべて、このアクティビティから始める必要があります。

  • CreateTask: タスク リストで特定のユーザーに割り当てられるタスクを作成します。たとえば、前述したシナリオの承認ワークフローは、このアクティビティを使用して、各参加者が使用するタスク リストにタスクを追加します。また、このアクティビティには SendEmailNotification プロパティがあります。このプロパティを true に設定すると、このタスクを作成した人物に自動的に電子メール メッセージが送信されます。

  • OnTaskChanged: タスク完了フォームからの情報を受け取ります。前述のシナリオの承認ワークフローでは、ドキュメントがそれぞれの参加者に承認された際の入力を受け取るために、このアクティビティを使用しています。

  • CompleteTask: タスクを完了されたものとしてマークします。

  • DeleteTask: タスク リストからタスクを削除します。

  • OnWorkflowModified: 変更フォームからの情報を受け取ります。変更フォームを使用して、ワークフローのこのインスタンスの動作を変更できます。ワークフローの作成者がこのアクティビティのインスタンスをワークフローに含めないことを選択した場合、ワークフローを実行中に変更することはできません。

  • SendEmail: 指定されたユーザーまたはグループに電子メールを送信します。

  • LogToHistoryList: ワークフローの実行に関する情報を履歴リストに書き込みます。このリストの情報は、ユーザーがワークフローの進捗状況を確認するために使用され、ワークフローの完了後はその履歴を調べるために使用されます。この種のモニタリングを可能にするには、ワークフローの作成者がワークフロー実行時の適切な時点で情報を履歴リストに書き込む必要があります。SharePoint Server にはワークフローを追跡するための独自のメカニズムがあるため、WF の標準的な追跡サービスをサポートしません。

簡単なワークフローの一般的なパターンは、OnWorkflowActivated アクティビティで始まり、CreateTask アクティビティを使用して、ワークフロー参加者にタスクを割り当てるというものです。その後、BAL 標準の While アクティビティを使用して、ユーザーがタスクを完了するまで待機します。タスクがいつ完了したかを把握するためには (おそらくユーザーはタスクを複数回変更した後、[タスクの完了] チェック ボックスをオンにします)、While の中で OnTaskChanged アクティビティを実行して、ユーザーがフォームに入力した情報をすべて抽出します。ユーザーがタスクを完了すると、CompleteTask アクティビティが実行され、DeleteTask が続く場合もあります。ワークフローはその後、CreateTask を使用してタスクを割り当て、次の参加者に進み、と続いていきます。そしてもちろん、電子メールの送信、履歴リストへの情報記録、任意のコードを実行する BAL の Code アクティビティに至るまで、さまざまなことが起こり得ます。

SharePoint Server によるすべてのアクティビティは、SharePoint 環境内でワークフローを動作させることが目的です。ワークフローが実行するビジネス ロジックは、ワークフローの作成者にすべて任されます。実際、ワークフローを作成する開発者は、SharePoint Server と WF の提供するアクティビティのみを使用するように求められているわけではなく、自由に自身のカスタム アクティビティを作成し、使用できます。

前述のとおり、Windows Workflow Foundation はシーケンシャル ワークフロー、並列ワークフロー、およびステート マシン ワークフローをサポートしています。WF Workflow Designer を使用して作成されたワークフローも、いずれかのオプションを使用できます。これを可能にするため、SharePoint Server では、これらのワークフロー スタイル用のプロジェクト タイプを、それぞれのワークフロー スタイルに付き 1 つずつ Visual Studio に追加しています。

どのスタイルを選択した場合でも、開発者は、ワークフローのロジックだけを定義するのではなく、ワークフローで使用する .aspx フォームまたは InfoPath フォームも指定する必要があります。このために、開発者は element.xml という名のファイルを使用します。このファイルは、ワークフローがフォームを表示できる 4 つの各段階で、必要に応じて表示されるべきフォームを開発者が指定するためのテンプレートを提供します。

開発者はワークフローとそれが使用する .aspx フォームの間で情報を渡すための作業をする必要があります。Microsoft.Windows.SharePoint.Workflow 名前空間は、開発者にオブジェクト モデルを公開します。この名前空間を使用することによって、ワークフロー作成者は ASPX フォームからワークフローに、また逆方向に情報を渡すことができます。

ワークフローとそのフォームが作成されると、開発者はそれらを "機能" としてパッケージ化する必要があります。SharePoint の管理者はこの機能をインストールする必要があります。それは、ワークフローのアセンブリを対象となるシステムのグローバル アセンブリ キャッシュにインストールすることを含みます。これで新しいワークフローは、ドキュメント ライブラリ、リスト、コンテンツ タイプ、またはサイトと関連付けできるワークフロー テンプレートとして管理者に見えるようになります。

ソフトウェア開発者にとって、Visual Studio と WF Workflow Designer を使用してワークフローを作成することは、特に複雑ではありません。開発者はこの環境での作業の特性を理解する必要がありますが、作業の多くは開発者が精通しているものです。しかし、ワークフローを作成するのは、ソフトウェア開発者ばかりではありません。次に説明するように、Microsoft SharePoint Designer 2010 を使用すれば、プロの開発者でなくてもワークフローを作成できます。

Microsoft SharePoint Designer 2010 を使用したワークフローの作成

Microsoft SharePoint Designer 2010 は、無料でダウンロードできる別個のアプリケーションです。Microsoft SharePoint Designer を使用して、インフォメーション ワーカーやその他の作業者は、ワークフローとして実装されたアプリケーション ロジックを SharePoint サイトに追加できます。これは疑いなく有益な目的ですが、Microsoft SharePoint Designer はまた別の重要な問題を解決するものでもあります。開発者が Visual Studio を使用して作成したワークフローは、他の機能と同じように、SharePoint Server を実行中のサーバーに展開する必要があります。しかし多くの SharePoint 管理者は、好き勝手なコードがサーバーに展開されることを許しません。システムを不安定にするリスクが大きすぎると信じているからです。しかし、ドキュメントやリスト アイテムに関連付けられた簡単なビジネス ロジックを作成できることは非常に有益であり、多くの SharePoint ユーザーがそれを必要としています。Microsoft SharePoint Designer は、それほど技術的でない人々にもワークフローを作成できるようにするばかりでなく、ビジネス ロジックを SharePoint Server を実行するサーバー上で定義し、展開するための、より安全な方法を提供することによって、この問題を解決します。

Microsoft SharePoint Designer が処理しようとするワークフロー シナリオは、Visual Studio と WF Workflow Designer が処理するものとは多少異なっています。Visual Studio と WF Workflow Designer が複雑なアプリケーションを作成できることは間違いありません。一方、Microsoft SharePoint Designer の目的は、ユーザーが SharePoint のサイトにビジネス ロジックを追加できるようにすることです。たとえば、あるサイトにユーザーが変更要求を提出できるリストがあるとします。Microsoft SharePoint Designer を使えば、変更要求が受理、または却下されたときに提出者に自動的に通知されるワークフローを作成できます。同様に、カスタム ワークフローで特定のドキュメント ライブラリに新しいドキュメントが追加されるときは、常に特定のユーザー グループに通知することもできます。この種のカスタム通知の実行は複雑ではありません。ワークフローの作成は簡単です。しかし、管理者はユーザーの書いたコードをインストールしたがらないため、SharePoint Server の以前のバージョンでは困難でした。

ここに明らかな疑問があります。Microsoft SharePoint Designer を使用して作成されたロジックは、なぜ違う扱いを受けるのでしょうか? SharePoint 管理者が管理するシステムに、このツールを使用して作成したワークフローを展開することの許可を得るにはどうすればよいでしょうか? その答えは、Microsoft SharePoint Designer を使用して作られたワークフローには、管理者によってコントロールされるリスト上のアクティビティしか使用できないからです。SharePoint Server で提供されるアクティビティに加え、サイト管理者は、開発者が作成したカスタム アクティビティをこのリストに含めることを選択することもできます。何ができるかをワークフローに正確に定義することにより、SharePoint の管理者は、Microsoft SharePoint Designer を使用して作成したロジックを展開したときに、そのロジックがシステムの不安定化要因にならないと確信できます。

Microsoft SharePoint Designer は、開発者ではなくインフォメーション ワーカーを意図しており、さらに単純なシナリオを強調しているため、Visual Studio がホストする WF Workflow Designer とは異なるワークフロー作成モデルを使用しています。グラフィカルなアプローチの代わりに、Microsoft SharePoint Designer は規則ベースのアプローチを使用します。これは多くの人に馴染みのあるツール、Microsoft Outlook の自動仕分けウィザードに似ています。以下の画面は Microsoft SharePoint Designer のユーザーがワークフローの手順を定義する方法を説明しています。このワークフローでは、並列に行われている操作と直列に行われている操作があります。以前のバージョンの SharePoint Server では、直列に行われる操作 (連続して行われる操作) しかサポートされませんでした。

プロセス順序のワークフロー

Process Order Workflow

各手順に条件とアクションを指定できます。条件は、上の図の If 文に見られるように、その手順でアクションが実行されるべきかどうかを決定します。選択できるアクションには、エンターテイナーをイベントに割り当てる、承認を収集するなどがあります。これらの各アクションは、実際はいくつかの SharePoint Server アクティビティによって実行され、ここで使用されるアクティビティは Visual Studio と WF Workflow Designer で使用されるものと同じです。このアクションのリストには、開発者の作成したカスタム アクティビティも含めて、このサイトの SharePoint の管理者が許可する他のアクティビティを含めることもできます。SharePoint Server には、Microsoft SharePoint Designer の特殊なデザイナーの中にある "一連のタスクを作成し、それらが完了するまで待機する" という一般的な承認またはフィードバック収集パラダイムのカスタマイズをユーザーに許可する特別なアクティビティ セットもあります。

ユーザー インターフェイスは Visual Studio と WF Workflow Designer によって使用されるグラフィカルなアプローチとは大きく異なって見えますが、Microsoft SharePoint Designer は標準の WF ワークフローを作成します。実際に生成されるのは、シーケンシャル ワークフロー、パラレル ワークフロー、または WF ルール エンジンを使って表現された条件で両方を組み合わせたワークフローです。しかし、このツールで作成されたワークフローには、いくつかの制限があります。たとえば、Visual Studio と WF Workflow Designer を使用して作られたものとは違い、実行中に変更を加えることはできません。また作成できるのはシーケンシャル ワークフローとパラレル ワークフローだけであり、ステート マシン ワークフローはサポートされません。また、このツールで作成されたワークフローは、設計時に特定のドキュメント ライブラリ、リスト、またはサイトに対して作成できます。ワークフローの作成者は、どのライブラリ、リスト、コンテンツ タイプにも関連付けできるような汎用のワークフロー テンプレートを後から作成することもできます。これはワークフローの使い方を限定する一方で、ワークフローの展開をよりシンプルにします。事実、ユーザーは、Microsoft SharePoint Designer でワークフローの作成を終えると、このツールを使用してワンクリックでワークフローをターゲット サイトに展開し、ワークフローを起動できます。これは、Visual Studio と WF Workflow Designer を使用して作成したワークフローに必要な、複数段階の展開プロセスに比べてずっと簡単です。

Microsoft SharePoint Designer を使用して作成したワークフローで、カスタマイズしたフォームを表示することもできます。ワークフロー作成者が .aspx ページを作成する必要はなく、代わりにツールがページを生成します。作成者は、どのフィールドを含めるかなど、ページの外観について詳細を指定します。残りの処理は Microsoft SharePoint Designer によって行われます。ただし、ワークフローのライフ サイクルでフォームが使用される 4 つの段階のうち、Microsoft SharePoint Designer を使用して作成されたワークフローで使うことができるのは、初期化とタスク完了の 2 つだけです。このツールで作成されたワークフローは特定のドキュメント ライブラリ、リスト、コンテンツ タイプ、またはサイトに関連付けられている必要があります。関連付け手順は必要なく、関連付けフォームもありません。このワークフローは実行中に変更できないため、変更フォームも不要です。

Microsoft SharePoint Designer では、Microsoft Visio 2010 で作成されたワークフローをインポートすることもできます。これにより、管理職やワークフロー作成者は、使い慣れたグラフィカル環境を使用してワークフローを作成できます。ワークフロー作成者は、グラフィカル環境で作成されたワークフローのロジックを Microsoft SharePoint Designer にインポートし、必要に応じて修正してから SharePoint サイトに公開できます。

SharePoint Server には、ドキュメント指向のワークフローを作成するための多くの機能があります。ただし、究極的には、開発と実行用のプラットフォームです。それ自体は、エンド ユーザーが直接使用できるワークフロー機能を提供していません。SharePoint Server で実行されるワークフローには、Office クライアント アプリケーションで参加者どうしが対話できないなど、他の制約もあります。

ワークフロー作成ツールの比較

次の表は、SharePoint Designer と Visual Studio 2010 Professional Edition の WF Workflow Designer を比較し、SharePoint Server のワークフローの作成をサポートする Microsoft のこの 2 つのツールの重要な相違点を示したものです。

互換性/必要条件 SharePoint Designer Visual Studio の WF Workflow Designer

サイト管理者が許可した操作のみを使用してワークフローを作成できるか?

はい

いいえ

ブラウザーだけでなく、クライアント アプリケーションからもワークフローにアクセスできるか?

はい

はい

Microsoft Visio Professional を使用してワークフロー ロジックを作成できるか?

はい

いいえ

コードを書く必要があるか?

いいえ

はい

SharePoint Server から提供されるアクティビティの他に、追加のアクティビティが提供されるか?

いいえ

はい

カスタム アクティビティを作成できるか?

いいえ

はい

ワークフローで InfoPath フォームを使用できるか?

はい

はい

実行中にワークフローを変更できるか?

いいえ

はい

ワンクリックでワークフローを公開できるか?

はい

はい

リモートでワークフローを展開できるか?

はい

いいえ

ファーム間でワークフローを使用できるか?

いいえ

はい

ワークフローをサイト コレクションに適用できるか?

はい

はい