Working With Event Handlers in Share Point 2007
Working With Event Handlers in Share Point 2007
SharePoint 2007
Dallas SharePoint Developers Group
8 October 2008
Miguel Wood, TekFocus
Introducing Event Handlers
• An event handler is a Microsoft® .NET assembly
containing one or more classes handling events that
are triggered by Microsoft® SharePoint® Products and
Technologies Avoid deletion of task when
not completed yet
Web Events fired at the level of the site (e.g. adding and SPWebEventReceiver
removing sites)
Email Provides a method for trapping the event when a list SPEmailEventReceiver
receives an e-mail message (EmailReceived)
In SharePoint 2003, event handlers were often used for simple workflow
applications for document or form libraries (the only list types that supported event
handling in SharePoint 2003).
In SharePoint 2007, Windows Workflow Foundation (WF) from the .NET 3.0
framework is used for creating both sequential and state machine workflows. You
should avoid creating highly complex event handlers in SharePoint 2007. As a
general rule, if your event handler must perform more than one or two operations,
you should consider using a workflow rather than an event handler.
Workflow or an Event Handler?
●
Are most appropriate for long- ●
Respond in near real-time to
running processes that may user-initiated actions on a list
span minutes, hours, or days, ●
Could be used to piece
and involved many individuals together workflows
(actors) ●
Very simple workflows may be
●
Could be used to respond to easier to implement as an
list events in real time event handler
Event Handler Basics in
SharePoint 2007
●
Synchronous event handlers fire before an event is processed by SharePoint (e.g. ItemUpdating)
●
Asynchronous event handlers fire after an event is processed by SharePoint (e.g. ItemUpdated)
System.Object
Microsoft.SharePoint.
SPEventReceiverBase
SPEventProperties Class Hierarchy
System.Object
ItemAdded
●
ItemAdded
●
ItemAdding
●
ItemAdding
●
●
SiteDeleted ●
FieldAdded ItemAttachmentAdded
●
ItemAttachmentAdded
●
ItemAttachmentAdding
●
ItemAttachmentAdding
●
ItemAttachmentDeleted
●
ItemAttachmentDeleted
SiteDeleting FieldAdding
●
● ● ItemAttachmentDeleting
●
ItemAttachmentDeleting
●
ItemCheckedIn
●
ItemCheckedIn
●
ItemCheckedOut
WebDeleted FieldDeleted
●
● ● ItemCheckedOut
●
ItemCheckingIn
●
ItemCheckingIn
●
ItemCheckingOut
●
ItemCheckingOut
●
ItemDeleting
●
ItemDeleting
●
ItemFileConverted
●
ItemFileConverted
●
●
WebMoved ●
FieldUpdated ItemFileMoved
●
ItemFileMoved
●
ItemFileMoving
●
ItemFileMoving
●
ItemUncheckedOut
●
ItemUncheckedOut
●
●
WebMoving ●
FieldUpdating ItemUncheckingOut
●
ItemUncheckingOut
●
ItemUpdated
●
ItemUpdated
●
ItemUpdating
●
ItemUpdating
●
EventProperties Class Properties
●
●Cancel
●
●Cancel ●
ErrorMessage
AfterProperties
●
AfterProperties
●
AfterUrl
●
●
AfterUrl
●
●ErrorMessage
●
BeforeProperties
●
●EventType BeforeProperties
● ●
BeforeUrl
●
BeforeUrl
●
●EventType
● ●Field
●
Cancel
●
Cancel
●
●FieldName Context
●FullUrl
● ●
● Context
●
●FieldXml
● CurrentUserId
●
CurrentUserId
●
●NewServerRelativeUrl
● ErrorMessage
●
ErrorMessage
●
●List
●
EventType
●
EventType
●
●ReceiverData
●
ListId
●ListId
●
●
ListId
●
ListItem
●
ListItem
●ServerRelativeUrl
●
● ●ListTitle
●
ListItemId
●
ListItemId
●
●RecieverData
●
ListTitle
●SiteId
●
● ListTitle
●
●SiteId
● ReceiverData
●
ReceiverData
●
●Status
● RelativeWebUrl
●
RelativeWebUrl
●
●Status
●
SiteId
●
SiteId
●
●UserDisplayName
●
●UserDisplayName
●
Status
●
Status
●
UserDisplayName
●
●Web
●
●Web Versionless
●
● Versionless
●
●WebId
● WebUrl
●
WebUrl
●
●WebId
●
Zone
●
●WebUrl
● Zone
●
Feature Receivers
• Events are triggered when a Feature is
– Installed
– Uninstalled
– Activated public class FeatureReceiver : SPFeatureReceiver
{
– Deactivated public override void FeatureInstalled
(SPFeatureReceiverProperties properties) {}
public override void FeatureUninstalling
(SPFeatureReceiverProperties properties) {}
public override void FeatureActivated
(SPFeatureReceiverProperties properties) {}
public override void FeatureDeactivating
(SPFeatureReceiverProperties properties) {}
}
Demo
Get handle
to list item
that raised
the event Yes Set Notes
field to
current
date/time
Calculate the
extended price
Set
Approver
based on
ext price
Extended price amount
> 5,000 ?
Update the
list item
No fields based
on business
rules
End setFields()
Demo
Get handle
to item to
be deleted
Get
properties
of user
requesting
deletion
Cancel deletion
and display
Can task be message
No indicating why task
deleted?
can’t be deleted
Yes
End deleteItem()
Resources
• Visual Studio Extensions for Windows SharePoint Services, v1.1 (
www.microsoft.com/downloads/details.aspx?FamilyID
=3E1DCCCD-1CCA-433A-BB4D-97B96BF7AB63&displaylang=en)
• Windows SharePoint Services 3.0 SP1 Developer Evaluation Image (
www.microsoft.com/downloads/details.aspx?FamilyID
=1beeac6f-2ea1-4769-9948-74a74bd604fa&DisplayLang=en)
• Application Development Exams
– 70-541 TS: Windows SharePoint Services 3.0 (
www.microsoft.com/learning/exams/70-541.mspx)
70-542 TS: Microsoft® Office SharePoint® Server 2007 (
www.microsoft.com/learning/exams/70-542.mspx)