次の方法で共有


ワークフロー作成ツールを選択する (SharePoint Foundation)

 

適用先: SharePoint Foundation 2010

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

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

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

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

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

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

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

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

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

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

Windows SharePoint Services のワークフロー例

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

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

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

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

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

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

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

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

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

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

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

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

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

どのスタイルを選択しようと、開発者はワークフローのロジック以上のものを定義する必要があります。開発者はワークフローが使用するべき .aspx フォームも指定する必要があります。このために、開発者は 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 Foundation を実行するサーバーに展開される必要があります。しかし、多くの SharePoint 管理者は、任意のコードをサーバーに展開することを許可しません。これは、システムを不安定にするリスクが大きすぎると考えるためです。ドキュメントとリスト アイテムに関連付けられたわかりやすいビジネス ロジックを作成できることは非常に有用であり、それは多くの SharePoint ユーザーが必要としているものです。また、高度な技術的知識を持たない人々にワークフローの作成を許可することに伴い、Microsoft SharePoint Designer では、ビジネス ロジックを定義し SharePoint Foundation を実行中のサーバーに展開するためのより安全な方法を提供することによって、この問題に対応しています。

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

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

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

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

Process Order Workflow

各手順に条件とアクションを指定できます。条件は、上の図の条件文 (If ステートメント) に見られるように、その手順でアクションが実行されるべきかどうかを決定します。選択できるアクションには、エンターテイナーをイベントに割り当てる、承認を収集する、などがあります。これらのアクションはそれぞれ、実際には SharePoint Foundation のアクティビティによって実行されます。ここで使用されるアクティビティは、Visual Studio と WF Workflow Designer が使用したものと同じです。このアクションのリストには、開発者の作成したカスタム アクティビティも含めて、このサイトの SharePoint の管理者が許可する他のアクティビティを含めることもできます。

ユーザー インターフェイスは 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 Foundation は、ドキュメント指向のワークフロー作成のために多くの機能を提供しています。しかし最終的に、それは開発、実行用のプラットフォームです。それ自体は、エンド ユーザーが直接使用できるワークフロー機能を提供していません。SharePoint Foundation を使用して作成されたワークフローには、Office クライアント アプリケーションで参加者同士が対話できないなど、他の制約もあります。

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

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

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

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

はい

いいえ

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

はい

はい

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

はい

いいえ

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

いいえ

はい

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

いいえ

はい

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

いいえ

はい

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

いいえ

はい

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

はい

はい

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

はい

いいえ

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

いいえ

はい

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

はい

はい