Workflow, Collaboration, Enterprise Content Management

New WSS Workflow Activities for SharePoint Designer

by john holliday 10. December 2009 11:06

One of the great things about Windows Workflow Foundation is the support for declarative no-code workflows that reference pre-compiled workflow activity libraries.  With enough of these activity libraries in place, you can use SharePoint Designer 2007 to build some pretty powerful applications without writing any additional code.  But it also presents a kind of chicken-and-egg problem.  You first need a bunch of quality activities you can stitch together using the declarative tool.

Ryan Miller has published a set of Workflow Activities that you can install on a SharePoint server and then use them from SharePoint Designer to manipulate sites and site collections in ways that go beyond what the out-of-the-box activities allow you to do.  He presents them in a codeplex projectthat contains two categories of activities: site management and list item management activities.

The site management activities include things like creating sites and site collections, setting the site title and theme, activating features and manipulating site groups.  At the item level, there are a couple of unique activities for copying, updating and removing list items.

Check them out.

Getting Ready for TechEd 2008

by John Holliday 18. May 2008 00:34

Well, we're just a couple weeks away from TechEd 2008.  This year, I'm giving four presentations - three breakout sessions and one TLC session, so it should be a lot of fun.  Here are the dates and times:

  • OFC10 - TLC 6/3/2008 3:00PM - 4:15PM
    Building Custom Routers for Records Management in Microsoft Office SharePoint Server 2007

    This talk discusses developer aspects of records management in Microsoft Office SharePoint Server 2007. Custom routers are an important extensibility point for records management and this talk details the requirements for these components. It provides a demo of building a custom router, including deploying it to a SharePoint Server environment.

  • OFC318 6/4/2008 8:30AM - 9:45AM
    XOML, XOML, Everywhere: Building Custom Workflow Editors for SharePoint

    XOML is the markup language behind Windows Workflow Foundation and is the same language used by Microsoft Office SharePoint Designer 2007 to attach declarative, no-code workflows to SharePoint lists and document libraries. This session takes a deep dive into Workflow Markup and explores how you can use it to generate custom workflows from any client application, including Office clients like Word and Excel. The session also shows how to attach custom workflow markup to SharePoint lists using the websvcWebPartPages Web service provided by Windows SharePoint Services.

  • OFC309 6/4/2008 4:30PM - 5:45PM
    Building Document Management Solutions Using SharePoint Content Types

    Windows SharePoint Services 3.0 introduces a new concept called "Content Types" that will dramatically alter the Enterprise Content Management landscape. On the surface, Content Types make it easier to encapsulate field definitions into a nice neat package, but there is a lot more going on under the covers. In this session, we take a deep dive into the world of content types and see how to declare them using XML and how to create them programmatically. Then we use content types to create a real-world document management solution with custom policies that we can use to control every stage of the document lifecycle. At the end of this session, you will have a thorough understanding of what content types are, with a deeper appreciation of the value they bring to document management solution development.

  • OFC404 6/5/2008 10:15AM - 11:30AM
    Turning SharePoint Data into Microsoft Office Documents: A Deep Dive into SharePoint Document Assembly Using Open XML

    Windows SharePoint Services 3.0 introduces a new concept called "Content Types" that will dramatically alter the Enterprise Content Management landscape. On the surface, Content Types make it easier to encapsulate field definitions into a nice neat package, but there is a lot more going on under the covers. In this session, we take a deep dive into the world of content types and see how to declare them using XML and how to create them programmatically. Then we use content types to create a real-world document management solution with custom policies that we can use to control every stage of the document lifecycle. At the end of this session, you will have a thorough understanding of what content types are, with a deeper appreciation of the value they bring to document management solution development.

See you in Orlando!

Technorati Tags: ,,

OBA Book Available from MS Learning

by John Holliday 7. February 2008 12:07

In case you missed it, my most recent authoring adventure, 6 Microsoft Office Business Applications for Office SharePoint Server 2007 is now available from Microsoft Learning, Barnes & Noble, Amazon and Quantum Books. This was a collaborative effort with Rob Barker, Joanna Bichsel, Adam Buenz, Steve Fox, Bhushan Nene and Karthik Ravindran. If you're building OBAs or just want to get a practical perspective on what it takes to build Office Business Apps, then be sure to check it out!

 UPDATE:  You can download the code from my chapter (5) from the following link:

http://johnholliday.net/downloads/6OBAs-Holliday.zip

Technorati: ,

Get Ready for ODC2008

by John Holliday 29. January 2008 09:13

As the new year approaches... Wait! Is it 2008 yet? So much is happening - so fast! Do you ever get that feeling that you'll never catch up? I sure do. Time flies...

For the past few weeks, I've been busy writing chapters for a new book (more on that later), developing and experimenting with new toys and project ideas (lots to talk about) and getting ready for my ODC2008 sessions.

I'll be delivering three sessions this year. One in Karthik Ravindran's architecture track, one in Steve Fox's client track and one in Jerome Thiebaud's server track.

  • ARC303 - Building Collaborative BPM Solutions

This session will cover best practices for leveraging the Microsoft BPM platform offerings (Windows Workflow Foundation, BizTalk, SharePoint Workflow, and Windows Communications Foundation) to integrate comprehensive Business Process Management (BPM) capabilities into Business Solutions built on the Microsoft Office Platform/System. This session will help the audience gain a broad perspective of the BPM scenarios targeted by each component and will offer prescriptive guidance on choosing the right option(s) to address common solution requirements. This session will also show how the various components can interplay and add value to Office Business Applications.

  • CLI307 - Generating Enterprise Content using InfoPath 2007, SharePoint and the Microsoft SDK for Office Open XML Formats

This session will introduce the Microsoft SDK for Open XML formats and show how developers can use the SDK and InfoPath 2007 to generate Microsoft Office documents on the server from data stored in SharePoint form libraries.

  • SER401 - Building Document Management Solutions using Windows SharePoint Services 3.0 Content Types

Windows SharePoint Services 3.0 introduces a new concept call "Content Types" that will dramatically alter the Enterprise Content Management (ECM) landscape. On the surface, Content Types make it easier to encapsulate metadata, but there is a lot more going on under the covers. In this session, we'll take a deep dive into the world of content types and see how to declare them using XML and how to create them programmatically. Then we'll use content types to create a real-world document management solution with custom policies that we'll use to control every stage of the document lifecycle. At the end of this session, you will have a thorough understanding of what content types are with a deeper appreciation of the vale they bring to document management solution development.

I'm grateful for the opportunity to present these sessions (thanks to Karthik, Steve and Jerome), and it looks like this is shaping up to be a great Conference. I'll be arriving early with my friend Andrew Connell if you want to just hang out. Otherwise, I'll look forward to seeing you at the Conference!

Jacksonville Code Camp 2007

by John Holliday 18. August 2007 06:18

If you're going to be in the Jacksonville area next weekend, the Jacksonville Developers User Group (JAXDUG) is hosting the Jacksonville Code Camp 2007 - a *free* full day of sessions (more than 50) from Microsoft Employees, Microsoft MVPs, National, Regional and Local speakers on a variety of topics, including:

  • Visual Studio 2008
  • Microsoft Silverlight
  • WPF, WCF, WWF, LINQ
  • SQL Server, SSIS, SSRS, SSAS
  • WSS, MOSS, OBA

There will be 3 types of sessions:

  • Presentation/Code Focused
  • Chalk Talks
  • Developing the Developer (Business/Soft Skills)

There will be a SharePoint developer track with presentations by myself, Andrew Connell, John Ross, and a bunch of other folks, so come join the fun! 

To register, go to https://www.clicktoattend.com/invitation.aspx?code=119680.

Hope to see you there!

 

JOG April Meeting - Workflow in MOSS

by John Holliday 19. April 2007 07:17

Jacksonville Office Geeks (JOG)
April 2007 Monthly Meeting

Workflow in Office SharePoint Server 2007

Human-based workflow is increasingly becoming a critical component of enterprise content management systems development. Beyond the need to route content through an organization for review and approval, workflows are growing in complexity, touching a broad range of external systems and driving critical business processes. This session will explore in detail the mechanics and the techniques involved in building workflow solutions for the Office SharePoint Server 2007 platform.

Speaker: John Holliday, SharePoint MVP

When: Thursday, April 26, 2007 (6 - 8 PM)
Where: Modis Building (downtown Jacksonville, FL), Conference Room A (2nd Floor)

Registration RSVP is requested by registering here:
https://www.clicktoattend.com/invitation.aspx?code=117565

Technorati : , , ,
Del.icio.us : , , ,

Professional SharePoint 2007 Book Excerpt

by John Holliday 4. April 2007 23:29

Wrox Press has posted a promotional excerpt from the Professional SharePoint 2007 Development book due out in June. The topic is "Creating Content Type Metadata for SharePoint 2007 Document Management Solutions" from one of my chapters. To read the excerpt, go to http://www.wrox.com/WileyCDA/Section/id-305185.html. Comments and feedback are welcome.

Technorati : , , ,
Del.icio.us : , , ,

Add Your Own Custom Workflow Activities to SharePoint Designer 2007

by John Holliday 27. March 2007 09:24
Update (4/4/2007):  I've just learned that another SharePoint blogger has written about this very topic 3 months ago.  The weird part is that the custom action he created also writes to the event log.  In all honesty, this was sheer coincidence (I really should learn to do a search before posting!).  In the interest of fairness and in the spirit of giving credit where it is due, you should check out the following articles by fellow SharePoint MVP Carlos Segura Sanz:
 
http://www.ideseg.com/AddCustomWorkflowActivitiesToSharePointDesignerPart1.aspx
http://www.ideseg.com/AddCustomWorkflowActivitiesToSharePointDesignerPart2.aspx

If you've used SharePoint Designer 2007 to create custom workflows for SharePoint lists, then you know it's a powerful tool for automating business processes. The built-in workflow designer lets you construct fairly sophisticated workflows without writing any code at all. Using this tool to create a workflow is about as easy as setting up a custom rule using the Outlook rules wizard.

Out of the box, you get about two dozen or so activities that you can use to construct your workflows. These activities are pretty comprehensive and let you do things like create and modify list items, send emails, create todo items, etc. But what if you need to do other things? What if you've written some custom activities that, for example, talk to your back-end systems or perform some highly specialized operation?

Well, there's good news. You can extend SharePoint Designer 2007 so you can reference your own custom activities directly from the workflow designer. What's nice about this is that it gives you a tool that both developers and business analysts can use when designing a business process automation solution. The developer can focus on creating libraries of custom activities while the business analyst or administrator focuses on the high-level logic that invokes the activities to do the actual work.

WSS.ACTIONS

What makes this work is a file on the SharePoint server named WSS.ACTIONS. This file is located in the 12\TEMPLATE\1033\Workflow folder. Whenever you open or create a workflow in SharePoint Designer, this file is downloaded to configure the workflow designer interface. It describes the kinds of activities that can be used in a declarative workflow, along with detailed information about how to present the rules you will use to build conditions, specify actions and interact with each activity. By editing the information in this file, you can completely customize the user interface presented in the workflow designer.

The steps to add a simple activity to the SharePoint Designer interface are:

  1. Create a custom activity assembly,

  2. Sign and deploy the activity assembly to the GAC,

  3. Configure SharePoint to recognize the custom activity,

  4. Create a .ACTIONS file to be used by SharePoint Designer

Creating a Custom Activity

The first step is to identify or create the custom activity you want to surface in the designer. The following code gives an example of a simple activity that writes a message to the system event log.

using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Collections;
using System.Diagnostics;
using System.Drawing;
using System.Workflow.ComponentModel.Compiler;
using System.Workflow.ComponentModel.Serialization;
using System.Workflow.ComponentModel;
using System.Workflow.ComponentModel.Design;
using System.Workflow.Runtime;
using System.Workflow.Activities;
using System.Workflow.Activities.Rules;


namespace MyCustomActivity
{
  public partial class EventLogger: Activity
  {
    public EventLogger()
    {
      InitializeComponent();
    }

    public static DependencyProperty MessageProperty
      = System.Workflow.ComponentModel.DependencyProperty.Register(
      "Message", typeof(string), typeof(EventLogger));

    [Category("MyCustomActivity"), Browsable(true)]
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
    public string Message
    {
      get
      {
        return ((string)(base.GetValue(EventLogger.MessageProperty)));
      }
      set
      {
        base.SetValue(EventLogger.MessageProperty, value);
      }
    }

    protected override ActivityExecutionStatus
      Execute(ActivityExecutionContext executionContext)
    {
      using (EventLog log = new EventLog("MyCustomActivity"))
      {
        try
        {
          log.Source = "EventLogger Activity";
          log.WriteEntry(this.Message, EventLogEntryType.Information);
        }
        catch
        {
        }
      }
      return ActivityExecutionStatus.Closed;
    }
  }
}

In this code, the Message property is used to specify the text that will be displayed in the event log, and we use a dependency property to enable the workflow to bind data to it. As with all workflow activities, the Execute method performs the action.

Deploying and Registering the Activity

After you build the custom activity assembly, sign it and copy it to the GAC. You then have to tell SharePoint to trust the assembly. This is similar to configuring a web part as a safe control, but instead of adding an entry to the <SafeControls> section, you add an entry to the <System.Workflow.ComponentModel.WorkflowCompiler> section. Edit the web.config file for your SharePoint web application and add an <authorizedType> element as in the following example:

<authorizedType Assembly="JohnHolliday.Workflow.EventLoggerActivity, Version=1.0.0.0,
      Culture=neutral, PublicKeyToken=0b97b340d4a71524"
      Namespace="MyCustomActivity" TypeName="*" Authorized="True" />

Creating the .ACTIONS File

The final step is to create the .ACTIONS file that describes the activity to SharePoint Designer. Since this is an XML file, you can create it using Visual Studio or any XML editor. Unfortunately, the XML schema for this file is not part of the SharePoint SDK. So I have created a WSSACTIONS.XSD schema file which you can download here. (Thanks to Scot Hillier for helping to uncover some of the more elusive enumerations like DesignerType and OperatorTypeFrom, etc.) Using the schema file in Visual Studio lets you use intellisense when creating the .ACTIONS file and makes the job of declaring custom activities much easier.

This file describes the public properties exposed by the activity and tells SharePoint Designer how to map those properties into rules that can be displayed to the user. The following code shows a custom .ACTIONS file for the custom EventLogger activity.

<?xml version="1.0" encoding="utf-8" ?>
<WorkflowInfo>
<Actions Sequential="then" Parallel="and">
   <Action Name="Write Message To Event Log"
      ClassName="JohnHolliday.Workflow.EventLogger"
 Assembly="JohnHolliday.Workflow.EventLoggerActivity, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0b97b340d4a71524"
      AppliesTo="all" Category="MyCustomActivities">
   <RuleDesigner Sentence="Write '%1' to the event log">
      <FieldBind Field="Message" DesignerType="TextArea" Id="1"/>
   </RuleDesigner>
   <Parameters>
      <Parameter Name="Message" Type="System.String, mscorlib" Direction="In"/>
   </Parameters>
</Action>
</Actions>
</WorkflowInfo>

The Actions tag tells SharePoint Designer what to display for each action in the set. Within that, the Action tag describes the individual action. The Name attribute is what gets displayed in the designer. The ClassName and Assembly attributes are used in the generated XAML for the workflow. The interesting part is the way the RuleDesigner and Parameter tags work. The RuleDesigner tag lets you setup a sentence that gets displayed in the designer as you build up the workflow. The Sentence attribute allows you to bind to the activity properties and then substitute their values when the activity is executed.

Remember the Message property of the custom activity? The FieldBind tag includes a Field attribute that specifies this property by name. The DesignerType attribute specifies which kind of control to use to gather the data, and the Id property specifies the substitution id to use when building the sentence. Now look at the Parameter tag. This specifies the activity side of the contract and is used when calling the Execute method of the activity on the server.

You can declare as many actions as you want in the file. A good rule of thumb is to use a separate .ACTIONS file for each logical group of custom activities you wish to deploy. Once you've created your .ACTIONS file and copied it to the server, you can refresh the site in SharePoint Designer and your custom activity will appear in the workflow designer as shown below.

Summary

Workflow activities are a lot like web parts. The richer your collection of activities, the more powerful workflows you can build. You can leverage the power of Visual Studio to create specialized custom workflow activities and take advantage of the flexibility built into SharePoint Designer 2007 to create declarative workflows that incorporate your custom activities but require no coding. This is a great way to surface customized functionality to a wider audience of administrators, developers and business analysts.

Technorati : , , ,
Del.icio.us : , , ,

Pressure is a fat muse sitting on your head...

by John Holliday 22. February 2007 11:19

...with a bull horn in one hand and a rubber mallet in the other. "Wake Up!" I can still hear the words ringing in my ears. "Keep Writing!" Sweat dripping onto the keyboard.

But wait! There's good news, friends. I'm done! Finished!

Well, almost. There's still the editing and review cycle. But for all of you who've been wondering where I've been for the past couple months. Well, it's all about the book. Professional SharePoint 2007 Development from Wrox Press, that is. Stay tuned for more details, but here's the blurb from the Wiley site:

Beginning with an introduction to the technologies in Microsoft's application platform, this thorough guide then goes on to highlight the technologies in SharePoint 2007 that are new for developers.

The author team focuses on how SharePoint fits in and complements the underlying platform; this is discussed throughout the book so that readers can learn how to take existing investments in the MSFT platform and move those to SharePoint.

Places special emphasis on the key areas of SharePoint development: base platform, collaboration, portal and composite application frameworks, enterprise search, ECM, business process/workflow/electronic forms and finally business intelligence.

Demonstrates how to develop applications with RSS, blogs, and wikis; use and customize enterprise search, XML, XSLT in search, and the search Web service; build Portal solutions; and develop Collaboration using calendars, tasks, issues and email event.


I did the ECM chapters (Document Management, Records Management, Web Content Management and Workflow). It's due out in June. Man, this is exciting!

More stuff coming soon, so stay tuned.

J

Technorati : , , ,
Del.icio.us : , , ,

Atlanta Code Camp - 2007

by John Holliday 5. January 2007 16:00

Registration for the 3rd annual Atlanta Code Camp is now open!

Here's the link to register (you'd better hurry):
https://www.clicktoattend.com/invitation.aspx?code=113135

The 3rd annual Atlanta Code Camp will take place on January 20th. The event is completely free and lunch is included. Doors open at 7:30am at the Decatur campus of DeVry University. Here's the address:

250 North Arcadia Ave
Decatur , GA 30030

If you are coming in from out of town, the event organizers are recommending the Holiday Inn in Decatur. Ask for the DeVry University rate to get a $99/night rate. Parking is extra and costs $7/day.

Holiday Inn
130 Clairemont Ave
Decatur, GA 30030
404-372-0204

And be sure to catch my session, "Building Document Management Solutions using Windows SharePoint Services v3.0 Content Types". Here's the session abstract:

Windows SharePoint Services 3.0 introduces a new concept called "Content Types" that will dramatically alter the Enterprise Content Management landscape. On the surface, Content Types make it easier to encapsulate field definitions into a nice neat package, but there is a lot more going on under the covers. In this session, we'll take a deep dive into the world of content types and see how to declare them using XML and how to create them programmatically. Then we'll apply content types to create a real-world document management solution with custom policies that we'll use to control every stage of the document lifecycle. At the end of this session, you will have a thorough understanding of what content types are with a deeper appreciation of the value they bring to document management solution development.

Hope to see you in Atlanta!

Technorati : ,
Del.icio.us : ,

Twitter Facebook Linked-In Subscribe

Pro SharePoint 2007 Development  Pro SharePoint 2007 Records Management Development  6 Office Business Applications for SharePoint 2007

CAML.NET

SharePointPro 2010 SummitSharePoint Evolutions 2010


SharePoint Job Tweets



SPDEVNET

Developer Resources

  • Fields WSS XSLT - Custom XSLT stylesheet that displays the default SharePoint column definitions in a table.
  • Custom Action Identifiers - A sortable table of default field definitions, including CAML declarations for writing content types.
  • CAML.NET Documentation - Online documentation for the CAML.NET class library.