Ahmed’s Dev-Shop

Workflow Options with SharePoint (from out-of-the-box to customization)

Posted in Sharepoint, software, Uncategorized, workflows by Ahmed Siddiqui on December 7, 2010

A value adding mindset encourages adding some value in order to justify one’s existence on the planet. An easier way to do so is disallowing the problems, you’ve already dealt with, to bother others. So here I am going to try the easier way.

There can be multiple options to implement a functionality but there’s only one which should be opted, the most economical one. But how you can choose the best solution till you are unaware of all the available solutions. Yes you can choose the best -you-know but it’s not necessarily the best available —here best means the most optimal solution according to your case specific needs.

Hence in order to choose the best solution, you need to know all the available solutions with their benefits (pros) and costs (cons). So in the given context I am sharing the options, I am aware of, available for implementing workflows with SharePoint.


1.   By enabling ‘Required Approval’ feature on list items

If you just need a moderation by admin on the contents –whether it’s a document or any other list item–added or modified by content editors, using a workflow would  be an overkill. You may just enable  “Approval Required” option on lists to get items approved by admin. This simple feature can also be used where a Accept/Reject decision with Comments/Remarks is sufficient for the approval of an Leave Application, where the approver can be the HR manager.


2.   Using built-in OOTB (out-of-the-box) workflows

There are few very basic built-in workflows in SharePoint which can be implemented with in minutes but are very rigid and inextensible. Opt only if the following applies:

  • You need very simple approvals and you are sure that the functionality wouldn’t extend
  • No split join or parallel approvals are required
  • Inputs from approvers, except  accept/reject and comments, is not required
  • More suitable for in-house implementation not in projects where you are always expecting challenging changes request from an inconsiderate client


3.   With SharePoint designer

With SharePoint designer simple workflows can be designed with the help of a wizard using built-in activities.

  • Unlike with the OOTB workflows, you can also access other SharePoint contents in the site like Lists and lookups
  • You can also define workflow variables and use them in the activities and notifications.
  • With some tweaking you can also apply branching or parallel approvals.
  • Unfortunately SPD workflow definitions are not portable but fortunately these are part of site backups.


4.    With SP Designer and Workflow Foundation

If the built-in activities and customization with SharePoint Designer is not sufficient you may have to go for the option 5 or 6, but wait, may be you can go for an 80-20 approach, by implementing the 80% (or 90%) simple functionality without  OOTB and SPD while 20% (or 10%) missing complex activities can be written with Workflow Foundation. Instead of writing the complete workflows in WF, it would be more economical interim approach in such scenario. But start writing your own activities, don’t forget to have a look at the activities already written by the communities  at Codeplx.


5.    Featured third party solutions

When advance features are required within very short delivery time, you’ve to look for an off-the-shelf featured solution. Which fulfills all or most of the requirements without requiring too much training and implementation efforts. But in that case you have to carefully review the comparison of the available solutions, since even the most popular and well promoted solutions can become a nightmare since you are already short of time and can’t bear the cost of experiments. There are couple of products available like Nintex, K2.Net, Ultimus etc while I am not going to rank them in this post.


6.    Writing your own with Workflow Foundation

When you business logic gets involved or you need advance workflow features like conditions, loops, split and merge, or routing based on input values (state machine), or communication with other adapters or external systems; you simply cant go with the above options. For such advance workflows, the natural option in .NET is writing workflows and activities using Windows Workflow Foundation where you can also use the WCF communicating with external systems. But before opting this option, one should be aware of the fact that beside how this solution is marketed, this is not a workflow solution but a foundation to develop one, as its name depicts.


7.    Writing you own workflow engine from scratch

This option is feasible for very few since making this riskiest decision requires really convincing  reasons, for instance:

  • You are a workflow solution provider who’s interested to own the product
  • Your team has understanding of the patterns and practices of writing workflow applications
  • Your Experience on challenging workflow applications and awareness of the challenges
  • Study of few good workflow solutions that how they address common workflow problems
  • Sufficient resources for development so you wouldn’t go short of them in the middle of the development

I am pessimistic  when it comes to writing your own product, specially when it’s as challenging as a workflow solution as I’ve seen a lot more failures than successes.