Workflow, Collaboration, Enterprise Content Management

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: ,,

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Content Management | Office System | SharePoint Development | SharePoint Workflow

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!

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Office System | SharePoint Development | Smart Client | SharePoint Workflow

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!

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Content Management | Office System | SharePoint Development | SharePoint Workflow

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!

 

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

InfoPath Forms | Office System | SharePoint Development | SharePoint Workflow

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 : , , ,

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

SharePoint Development | SharePoint Workflow

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 : , , ,

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Content Management | Records Management | SharePoint Development | SharePoint Workflow

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 : , , ,

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

SharePoint Development | SharePoint Workflow

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 : , , ,

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

SharePoint Development | SharePoint Workflow

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 : ,

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Code Generation | InfoPath Forms | Office System | SharePoint Development | SharePoint Workflow

Content Types - The Soul of a New Paradigm

by John Holliday 20. October 2006 00:12

As you probably know by now, SharePoint 2007 has a new feature called Content Types. Having been asked by more than a few friends and colleagues what they are, or more precisely, what benefits they offer, I decided to share my thoughts. So here goes...

List : Content Type :: Data Structure : Object

I know it's an over-simplification, but think about it. List is to content type as data structure is to object.

Remember when objects were all the rage? You know, back when the computing paradigm shifted from "structured" to "object-oriented"? Back then, we used to think about a data type (data structure, really) as a named collection of properties we could treat as a single unit. There were built-in data types with predefined operations we could use to develop applications.

Now, what is a SharePoint List? It is fundamentally a named table with a collection of properties (columns) that we treat as a single unit. There are built-in list types with predefined operations we use to develop SharePoint applications.

Object-orientation introduced the notion that we could model the real world more accurately by binding operations (at least conceptually) to data types and call them "methods". (I think it's interesting that whenever the paradigm shifts, we start renaming things.)

So we ended up with a nice programming idiom that allowed us to express things like:

Foo f = new Foo(); f.Name = "John"; f.Print();

The problem with lists in WSS v2 was that the only "operations" allowed were the built-in operations exposed by the SharePoint API. If we wanted to do anything else, we had to implement it ourselves through quite a bit of effort in most cases. If you're like me, you must have often wondered how great it would be if you could derive your own list types from the built-in lists and extend them with your own custom methods.

So here's another one to ponder: workflow is to content type as method is to object.

Workflow : Content Type :: Method : Object

Content types represent an evolution of the SharePoint List to include custom operations, called "workflows". A content type is basically a named collection of properties (columns) that we treat as a single unit. At the same time, list columns themselves have evolved. Now it's possible to define Site Columns that can be shared among several lists. Content types can be based on other content types all deriving from a common parent - the System content type. Sound familiar?

So what benefits do content types offer over standard SharePoint Lists?

Consider a typical project proposal. Using content types, we can define a Proposal type and require that whenever a new instance is created, the proposal must be approved by a manager and then distributed to a select list of reviewers who must examine the proposal before it is submitted. All we do is identify the workflows. SharePoint manages the association at the server farm level through an external mapping table.


Proposal Content Type

The beauty is we only have to do this once. From then on, the proposal content type is available throughout the site and can be attached to lists and document libraries as often as we like. We can go on to derive new, more specialized content types from it and automatically inherit all of the meta-data as well as the workflow associations.

Another benefit is that you can define search queries based on content types. So, for example, you can define search conditions such as 'where content type = proposal'. If you change a content type, you can automatically push those changes out to all derived content types. Similarly, if you change a site column definition, that change is automatically reflected in all content types that reference the column.

Yet another benefit is that you can associate multiple content types with the same list. So, for example, you could create a single document library that contains many different kinds of proposals, all based on different content types with different workflow associations and meta-data.

To me, it's all about having the tools to describe operations that occur at the enterprise level and depend on humans to get work done. Bill Gates once referred to it as the "digital nervous system" of an organization. With Content Types and Workflow, we now have a programming idiom that allows us to describe the path that information takes as it moves through the enterprise. We have the ability to encapsulate business processes and bind them to a hierarchy of reusable data types that are bound to the content itself.

For more information about content types, check out the SDK. Also, Andrew May has created some nice diagrams of content types and related technologies.

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

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

SharePoint Development | SharePoint Workflow

Copyright © 2005-2008, John F. Holliday
This work is licensed under a Creative Commons License Powered by BlogEngine.NET 1.4.0.0

About Me

John Holliday

Independent author, consultant, trainer, and software developer specializing in enterprise content management, collaboration, workflow and business process automation. SharePoint training for developers and administrators

 

Recent comments

Comment RSS