Workflow functionality in SharePoint Designer 2010 has been significantly enhanced over 2007. I’ve had mixed feelings about the process in 2007, mainly because of the difficulty in customizing task assignments and because workflows could only run in the security context of the item submitter. This security limitation was a huge annoyance when building more complex workflows that queried several lists, because we had to make sure that the submitters had appropriate rights on each list. In some cases, we had to come up with strange workarounds when we dealt with HR lists, such as vacation days, that we needed the workflow to update, but users to only view. Luckily, both of these issues are resolved in SharePoint 2010. In fact, we’ve been able to enhance and simplify our vacation request and new matter intake workflows by using these new features.
SharePoint Designer 2010 gives you the ability to create impersonation steps, which run in the security context of the workflow author. So it’s simple to create an entire process that will run in the context of the item submitter, but have one step which runs with elevated permissions. In that way we could setup an HR workflow that checks how many vacation days you have left and updates the number, without having to give the actual user anything more than read rights to the HR list. You only need to make sure the workflow author has the elevated permissions required on the list.
Another interesting feature is the ability to use Visio 2010 Premium to design the layout for workflows and then import them into SharePoint Designer. While this sounds good, I found it less useful in practice. First, it’s limited to Visio Premium, which many companies might not have. Second, you can only create a layout, but cannot set any of the actual parameters or configuration settings. Thirdly, I found that when I imported the Visio project into SharePoint Designer, it didn’t look anything like what I expected. So I decided to just stick with using SharePoint Designer for the entire process for our workflows.
Another great feature is the ability to create globally reusable workflows that are tied to content types. This lets you reuse workflows between many lists and libraries, rather than having to be tied into a single library.
The new task processes also make the workflow process more powerful and give you full control over how tasks should look and function. As with any workflow activity, you can insert it by simply typing a few words in the text box in the workflow designer. The approval task process is a prebuilt process that can be inserted into workflows for gathering approval on an item.
You would start off by selecting participants for your approval process, the duration for each task, the due date, and instructions that should be sent in the email.
You then have full control over the approval workflow and individual tasks, and can customize all of the emails that get sent for task assignments. You can also easily customize InfoPath forms that users see when approving items. The following screen shots show samples of the steps that can be customized in the approval and task workflows:
My overall impression is that the workflow engine in SharePoint Designer 2010 has been considerably improved and should be the starting point when considering what tools to use for building workflows. Much more complex workflows can be build now versus what was possible in 2007. In the case that you need custom actions that are not available out of the box, those can be built in Visual Studio and imported into SharePoint, for use in SharePoint Designer. But there’s a lot of functionality that can be leveraged in SharePoint Designer before considering custom development in Visual Studio or third party tools.