Presentation is loading. Please wait.

Presentation is loading. Please wait.

AdvisorEvents.com Building WorkFlow Solutions with Windows SharePoint Services Patrick Tisseghem MVP SharePoint Portal.

Similar presentations


Presentation on theme: "AdvisorEvents.com Building WorkFlow Solutions with Windows SharePoint Services Patrick Tisseghem MVP SharePoint Portal."— Presentation transcript:

1 AdvisorEvents.com Building WorkFlow Solutions with Windows SharePoint Services Patrick Tisseghem (patrick@u2u.net)patrick@u2u.net MVP SharePoint Portal Server 2003 U2U ALS310

2 AdvisorEvents.com Me.About()  Managing Partner U2U .NET Development Training and Services  MVP SharePoint Portal Server  My work? SharePoint Development Workshops Community Work  SmartPart  CAML Query Builder  SharePoint Application Blocks  Blog – http://blog.u2u.info/patrick EMEA Ascend Trainings  Office smart client Trainings  Portal Boot camps and Workshops

3 AdvisorEvents.com Agenda  Workflow out of the box – Is it enough?  Creating a custom workflow solution  SharePoint Workflow Application Block (SWAB)  Summary

4 AdvisorEvents.com Workflow out of the box  Covers only the basic content approval steps  How it works Turn on content approval at the level of the document library or form library Appoint users the role of approvers Submissions will not be visible until approver comes in and approves or rejects  Limitations No parallel or serial approval routes No actions available

5 AdvisorEvents.com What do we miss?  Serial or parallel approval routes  Dynamic list of approvers  Notifying approvers via emails  Richer support for supplying comments when approving or rejecting  Tracking and logging of the workflow steps

6 AdvisorEvents.com Creating a Custom WorkFlow Solution  Quick overview of classes within the WSS object model we will use  Preparing the SharePoint-enabled virtual server  Creating a document library event handler.NET class library implementing the IListEventSink interface Adding our code  Signing the assembly and deployment in the GAC  Attaching the assembly to the document library  Testing and debugging

7 AdvisorEvents.com Sample we will work out Speakers Speaker Document Library 1 2 Public Document Library Reviewers Document Library 6.NET Assembly 3 Reviewers List 4 Reviewers 7 5.NET Assembly 8 11 10 12 Everyone 13 9

8 AdvisorEvents.com Object Model Refresher  SPSite  SPWeb  SPList  SPDocumentLibrary  SPListItem  SPFolder  SPFileCollection  SPFile

9 AdvisorEvents.com Time to get into the code…

10 AdvisorEvents.com Preparing our Virtual Server  SharePoint Central Administration  Configure Virtual Server Settings  Select your Virtual Server  Virtual Server General Settings  Turn on Event Handlers

11 AdvisorEvents.com Creating the Event Handler  Normal.NET Class Library C# or VB.NET Take care of your namespace  Set Reference to Microsoft.SharePoint.dll

12 AdvisorEvents.com Implement IListEventSink  OnEvent member to implement  SharePoint provides you context information through the SPListEvent type argument  Common properties we will use Type, Site, PropertiesAfter, URLAfter using System; using Microsoft.SharePoint; namespace Advisor.WorkFlow.Demo { public class SpeakerDocHandler: IListEventSink { public void OnEvent(SPListEvent listEvent) { }

13 AdvisorEvents.com Checking Type of Event and Item Metadata  SPListEventType Checkin, Checkout, Copy, Delete, Insert, Invalid, Move, Update, UnCheckout  Note: your code gets notified after the event has fired  Use PropertiesAfter to check value of column if((listEvent.Type==SPListEventType.Update) && (listEvent.PropertiesAfter["Status"].ToString()=="Ready For Review")) { }

14 AdvisorEvents.com Lookup Reviewer  Two possibilities here Object model drill-down CAML query SPWeb web = listEvent.Site.OpenWeb("/advisor"); SPList list = web.Lists["Reviewers"]; SPUser reviewer = null; foreach(SPListItem item in list.Items) { if(item.ID==Convert.ToInt32(listEvent.PropertiesAfter["Track"])) { string[] reviewerTmp = item["Reviewer"].ToString().Split(';'); int reviewerID = int.Parse(reviewerTmp[0]); reviewer = web.Users.GetByID(reviewerID); }

15 AdvisorEvents.com Lookup Reviewer  CAML Query SPQuery class  U2U CAML Query Builder Utility Build your query in a WYSIWYG way Helper class to execute query U2U.SharePoint.CAML.Server.Helper caml = new U2U.SharePoint.CAML.Server.Helper(camlFile,track) DataTable tbl = caml.ExecuteQuery();

16 AdvisorEvents.com CAML Query Builder Utility  Free tool available from http://www.u2u.info/sharepoint

17 AdvisorEvents.com Sending the Email  Reviewers can subscribe to alerts  Programmatically sending the email System.Web.dll System.Web.Mail namespace if(reviewer!=null) { SmtpMail.SmtpServer = SMTPServer; SmtpMail.Send(fromEmail, reviewer.Email,"Presentation to review", "A new presentation is ready for your review"); }

18 AdvisorEvents.com Copying Document and Updating MetaData  Using UrlAfter property of SPListEvent to quickly grab the SPFile object  Ways of copying or moving SPFile.CopyTo method SPFile.MoveTo method web.Lists.IncludeRootFolder=true; SPList reviewerLib = web.Lists["Reviewer Library"]; SPFile doc = web.GetFile(listEvent.UrlAfter); doc.CopyTo(reviewerLib.RootFolder.Url + "/" + doc.Name,true); web.Lists.IncludeRootFolder=true; SPList reviewerLib = web.Lists["Reviewer Library"]; SPFile doc = web.GetFile(listEvent.UrlAfter);

19 AdvisorEvents.com Copying Document and Updating MetaData  Problem: Part of the auditing information is overwritten with CopyTo and MoveTo  Reason: Your code is executed with the account of the worker process!  Solution: Read the file content and add a new SPFile object manually to the SPFileCollection of the destination folder SPFolder fld = reviewerLib.RootFolder; SPFileCollection files = fld.Files; files.Add(fld.Url + "/" + doc.Name, doc.OpenBinary(), doc.Author, doc.ModifiedBy, doc.TimeLastModified, doc.TimeCreated);

20 AdvisorEvents.com Copying Document and Updating MetaData  Use the Item collection  Don’t forget the Update() method call doc.Item["Status"] = "Currently in Review"; doc.Item.Update();

21 AdvisorEvents.com Deploying the Event Handler  Strong name the assembly Create a public/private keypair using sn.exe Point to snk file within assemblyinfo file in project  Deploy the assembly in the GAC Drag and drop Gacutil.exe /i  Notes Use fixed version number IISReset is required to test latest copy C# can use postbuildevent in VS.NET

22 AdvisorEvents.com Activating the Event Handler  Advanced settings of document library  Avoid typing mistakes Use.NET Reflector (www.aisto.com) Full Strong Name Full Class Name

23 AdvisorEvents.com Exceptions and Debugging  SharePoint user is not confronted with unhandled exceptions  Developers need to consult application log in event viewer to get description of exception  Use VS.NET to attach to ASP.NET worker process that runs your code and set breakpoints

24 AdvisorEvents.com Things to be aware of  Event-handlers can only be attached to document and form libraries, not to lists  Code runs asynchronously in new thread  Events are notified after the action has occurred  Code is executed with account of the application pool Impersonation within code (P/Invoke) Execute your code in COM+ application Execute your code in a Web Service

25 AdvisorEvents.com WorkFlow Lite  Available for free on GotDotNet  Doing the same things we have done but in a more configurable, generic manner

26 AdvisorEvents.com Workflow Application Block SharePoint Site SharePoint Doc.Lib. Workflow Engine XML Document Library Event Handler

27 AdvisorEvents.com Summary  Library Event Handlers are a great way to extend the functionality of a SharePoint document library or form library Not only workflow, also e.g. version pruning, providing undelete functionality, …  Learn the object model before you start  Think about re-usability (e.g. WorkFlow Lite approach)  Many third-party solutions are available K2 WorkFlow Captaris Teamplate Skelta WorkFlow Nintex SmartLibrary

28 AdvisorEvents.com A DVISOR L IVE Web Update Page AdvisorEvents.com/cmt0506p.nsf/w/cmt0506ud This session WILL NOT have updates.

29 AdvisorEvents.com Thank you! Please remember to fill out your evaluation.


Download ppt "AdvisorEvents.com Building WorkFlow Solutions with Windows SharePoint Services Patrick Tisseghem MVP SharePoint Portal."

Similar presentations


Ads by Google