はじめに
作成に入る前に、本連載の第1回『SharePoint 2010開発の紹介』を参考にして、SharePoint 2010の開発環境を整えてください。
対象読者
- Visual Studio 2010によるSharePoint 2010開発に関心がある開発者
- SharePoint 2010のイベントレシーバーの開発に関心がある開発者
SharePoint 2010のイベントとイベントレシーバー
SharePoint 2010では、Webサイト、リストやリストアイテムなどに対する処理や操作の前後に発生するさまざまなイベントが定義されています。
SharePointのイベントは、サイトイベント、Webイベント、リストイベントなど、主に5つの種類に分かれます。これら5つのイベントの種類にそれぞれ対応したイベントレシーバーのクラスがMicrosoft.SharePoint名前空間には用意されています(表1)。
| イベントの種類 | 説明 | 対応するイベントレシーバークラス |
| リストイベント | リストに対する処理の前後に発生するイベント | SPListEventReceiver |
| リスト項目イベント | リストのアイテムに対する処理の前後に発生するイベント | SPItemEventReceiver |
| リスト電子メールイベント | リストがメールを受信した時に発生するイベント | SPEmailEventReceiver |
| Webイベント | サイトコレクションやサイトに対する処理の前後に発生するイベント | SPWebEventReceiver |
| リストワークフローイベント | ワークフローに対する処理の前後に発生するイベント | SPWorkflowEventReceiver |
SPEmailEventReceiverクラスを除くどのイベントレシーバーも、SPEventReceiverBaseクラスから派生しています。また、どのイベントレシーバークラスも直接インスタンス化はせず、派生させて使用する必要があります。Visual Studio 2010でイベントレシーバープロジェクトを作成する際に、ウィザード内でどのイベントレシーバーを使用するかを選択することにより、そのイベントレシーバーの派生クラスを自動生成できます。
次に、イベントの種類別にすべてのイベントをまとめます(表2)。多くの場合、「~されています」と「~されました」のように、何かの処理や操作の前後にそれぞれイベントが発生することが分かります。これらをBeforeイベントとAfterイベントと呼びます。
| イベントの種類 | イベント | 説明 |
| リストイベント | FieldAdded | フィールドが追加されました |
| FieldAdding | フィールドが追加されています | |
| FieldDeleted | フィールドが削除されました | |
| FieldDeleting | フィールドが削除されています | |
| FieldUpdated | フィールドが更新されました | |
| FieldUpdating | フィールドが更新されています | |
| ListAdding | リストが追加されています | |
| ListDeleting | リストが削除されています | |
| ListAdded | リストが追加されました | |
| ListDeleted | リストが削除されました | |
| リスト項目イベント | ItemAdding | 項目が追加されています |
| ItemUpdating | 項目が更新されています | |
| ItemDeleting | 項目が削除されています | |
| ItemCheckingIn | 項目がチェックインされています | |
| ItemCheckingOut | 項目がチェックアウトされています | |
| temUncheckingOut | 項目のチェックアウトが取り消されています | |
| ItemAttachmentAdding | 項目に添付ファイルが追加されています | |
| ItemAttachmentDeleting | 項目から添付ファイルが削除されています | |
| ItemFileMoving | ファイルが移動されています | |
| ItemAdded | 項目が追加されました | |
| ItemUpdated | 項目が更新されました | |
| ItemDeleted | 項目が削除されました | |
| ItemCheckedIn | 項目がチェックインされました | |
| ItemCheckedOut | 項目がチェックアウトされました | |
| ItemUncheckedOut | 項目のチェックアウトが取り消されました | |
| ItemAttachmentAdded | 項目に添付ファイルが追加されました | |
| ItemAttachmentDeleted | 項目から添付ファイルが削除されました | |
| ItemFileMoved | ファイルが移動されました | |
| ItemFileConverted | ファイルが変換されました | |
| ContextEvent | リストがコンテキストイベントを受け取りました | |
| リスト電子メールイベント | EmailReceived | リストが電子メールメッセージを受け取りました |
| Webイベント | SiteDeleting | サイトコレクションが削除されています |
| WebDeleting | サイトが削除されています | |
| WebMoving | サイトが移動されています | |
| WebAdding | サイトがプロビジョニングされています | |
| SiteDeleted | サイトコレクションが削除されました | |
| WebDeleted | サイトが削除されました | |
| WebMoved | サイトが移動されました | |
| WebProvisioned | サイトがプロビジョニングされました | |
| リストワークフローイベント | WorkflowStarting | ワークフローが開始されています |
| WorkflowStarted | ワークフローが開始されました | |
| WorkflowPostponed | ワークフローが延期されました | |
| WorkflowCompleted | ワークフローが完了しました |
表2をご覧いただくと分かるように、サイト、リスト、リストアイテムなどSharePointの各構成要素に対して、さまざまなイベントが定義されています。これらのイベントを扱うイベントレシーバーを作成することにより、SharePointのサイトを細かく制御することが可能となります。たとえば、リスト作成時のBeforeイベントをキャッチし一定の条件に適合する場合にのみリスト作成を許可するなどの業務上のルールに応じた振る舞いを追加できます。
Visual Studio 2010で作成したイベントレシーバーは、SharePointのサイトに配置するだけで、特に他の手順を必要とすることなくサイト上で実行されます。
