はじめに
本連載では、Visual Studio 2010によるSharePoint 2010開発を扱います。第3回となる今回は、SharePoint 2010のワークフローの作成方法を解説します。
対象読者
- Visual Studio 2010によるSharePoint 2010開発に関心がある開発者
- SharePoint 2010のワークフローの開発に関心がある開発者
開発環境の整備
本連載の第1回を参考にして、SharePoint 2010の開発環境を整えてください。
SharePoint 2010のワークフロー機能
SharePoint 2010のワークフロー機能は、.NET Framework 3.5のWindows Workflow Foundation(WF)を基盤としています。
WF自体は、.NET Framework 3.0から導入されたマイクロソフトが提供しているワークフローのためのフレームワークです。執筆時点では、.NET Framework 4に含まれるWF 4が最新ですが、SharePoint 2010ではWF 3.5を使用します。WF 4は、それまでのWF 3.5から大幅な変更が加えられており、基本的には互換性はありませんのでご注意ください。将来的には、SharePointでもWF 4のワークフローが使用可能になることが予想されます。
WFでは、業務における種々の処理の流れ(フロー)を、アクティビティと呼ばれる特定の処理の組み合わせで実現します。Visual Studioのツールボックスから、提供されているアクティビティをデザイン画面に貼りつけてプロパティを設定します。このようにデザイン画面上でアクティビティを組み合わせることにより、コードをそれ程記述することなく実行可能なワークフローを作成することができます。
WF 3.0/3.5では、シーケンシャルワークフローとステートマシンのワークフローの2種類のワークフローを作成できます。SharePoint 2010のワークフロー機能でも、これら2種類のワークフローを作成できます。Visual Studio 2010には、SharePoint 2010におけるそれぞれのワークフロー用のプロジェクトテンプレートが用意されています。
表1に、シーケンシャルワークフローとステートマシンのワークフローの違いを簡単にまとめます。
ワークフローの種類 | 説明 |
シーケンシャルワークフロー | 一連のアクティビティを1つずつ順番(シーケンシャル)に実行する。条件分岐や繰り返し、並列処理にも対応。 |
ステートマシンのワークフロー | ステートマシンとしてワークフローをモデル化する。イベントにより別のステート(状態)に移行し処理が実行される。最終ステートに来た時点でワークフローが完了する。 |
WF 3.0/3.5自体の基本的な機能や提供されているアクティビティを解説しようと思うとそれだけでかなりのボリュームになってしまうため、SharePoint 2010開発を解説する本稿ではこれらの点は扱いません。CodeZineにおけるWFについての過去の記事を参照してください。
- WF(Windows Workflow Foundation)チュートリアル 前編
- WF(Windows Workflow Foundation)チュートリアル 中編
- WF(Windows Workflow Foundation)チュートリアル 後編
- Visual Studio 2008で標準搭載されたWindows Workflow Foundation
SharePoint 2010におけるワークフロー機能では、WF 3.0/3.5が標準で提供するアクティビティに加えて、SharePointワークフロー用のさまざまなアクティビティが提供されています。主なアクティビティについて、表2にまとめます。
アクティビティ | 説明 |
CompleteTask | タスクを完了する |
CreateTask | タスクを新規作成する |
DeleteTask | タスクを削除する |
LogToHistoryListActivity | ワークフローの履歴にログを追加する |
OnTaskChanged | タスクの変更時に呼ばれる |
OnTaskCreated | タスクの作成時に呼ばれる |
OnTaskDeleted | タスクの削除時に呼ばれる |
OnWorkflowActivated | ワークフローの初期化時に呼ばれる |
OnWorkflowItemChanged | アイテムの変更時に呼ばれる |
OnWorkflowItemDeleted | アイテムの削除時に呼ばれる |
SendEmail | メール送信 |
UpdateTask | タスクを更新する |
CreateItemActivity | アイテムを新規作成する |
DeleteItemActivity | アイテムを削除する |
UpdateItemActivity | アイテムを更新する |
SharePoint 2010では、特定のリストやライブラリに関連付けられているワークフローのことをリストワークフローと呼び、どのリストやドキュメントにも関連付けられておらずサイト上から実行可能なワークフローのことをサイトワークフローと呼びます。シーケンシャルワークフローとステートマシンのワークフローのどちらにおいても、プロジェクト作成時のウィザード中で、リストワークフローかサイトワークフローのどちらを作成するかを選択するように求められます。