As promised in my intro to workflow post on the SharePoint blog, I'd like to walk you through one of the workflows that come with SharePoint Server 2007 to give you a feel for the SharePoint workflow user experience and some basic concepts and terminology. Today I’ll flesh out the same scenario I described in my intro: getting approval on a document.
Let’s say that I’ve written an article that I’m going to post as a blog entry;). Before I post it, I need to get it approved by my content managers. Rather than send an email and wait for responses, let’s start an Approval workflow on the document:).
Starting the workflow
I can start a workflow by opening the context menu on my document in the SharePoint list, and selecting the Workflows option. But with SharePoint Server 2007, I can also start the workflow directly in my Office 2007 client applications by going to File->Start Workflows. Client integration such as this is a key advantage of workflow in SharePoint Server 2007 vs. core Windows SharePoint Services.
Next, I get a list of workflows that are available for this document (The available workflows are set by the list or site administrators in a process called workflow association, or adding a workflow to a library or list.).
When I click on the “Approval” workflow, I’m presented with a workflow initiation form, which lets me set information that workflow needs to start, such as the people who should approve the document, a due date, and some instructions or comments. An interesting thing to note here is that the form that appears if I start from the browser or client is exactly the same; we’re using one InfoPath form, and we get a rich-reach symmetric experienceJ.
I enter the names of the approvers: John, Mary, and Bob. I fill out the other fields and I click on the start button, and I get an email that the workflow has begun.
Interacting with the Workflow via Tasks
Approval workflows assign tasks in serial by default, so the workflow assigns a task to John to approve this document. This task is a list item in a “Tasks” list in SharePoint, where our team manages our tasks.
John gets an email notification that he has an approval task for my article. From the task, he opens the document. In Word, a business bar appears telling him he has a workflow task assigned to him for this document with a button that says “Edit this task”. John clicks on the button and up pops an InfoPath form with some controls and buttons to Approve or Reject. Again, with InfoPath forms, this is a symmetric experience when you edit your task in the browser or client.:) John likes the article, so he hits the approve button.
The workflow then assigns a task to Mary, who is going out of town and won’t have time to read it. So she clicks on the “Reassign task” link in her task form and enters Susie to take over for her. The task gets reassigned to Susie, who approves. The workflow assigns a task to Bob.
In the meantime, I’m curious to see what people have said, so I open the workflow status page and see John’s comments and approval, see that Mary’s task has been assigned to Susie who has approved, and that Bob has an open task. Phew, one to go:P.
But Bob reads it and doesn’t like one of the sections. D’oh! Luckily for me, there’s a “Request a change” option on his form; he clicks on this and enters his comments. A task gets assigned to me, I fix the doc and complete my task. Bob gets a new approval task, and this time he approves. Finally, I get an email telling me that the workflow has completed, and I publish my entry to the blog.
So that’s a quick walkthrough of using workflow. There are also lots of options you can set for these workflows when you associate them with a list, such as default approvers or stopping when someone rejects. You can also modify the workflow in-flight by adding approvers or updating task descriptions and due dates, so I’d encourage you to play around with it if you get the chance and see what interesting things you can do.
Next time I’ll cover how to associate a workflow with a library and modify a running workflowJ Stay tuned!