In feedback process (where multiple users are assigned a feedback task), a typical pattern is that one user is the manager (“the pivot”) of the process, everybody else can set their decisions but no decision stops the process, the pivot is the only one who can set the final decision and stop the process. If few participants hadn’t set their decision while the pivot fills his feedback task – their task will be cancelled. In this article I will show how to implement this in SharePoint designer 2010 (without any code, of course).
The basic idea in setting “pivot feedback process” is to create two “custom task process” (SPD action) which run in parallel. One is for the common participants who are here to tell their decision, the second task process is for the pivot (manager) who can set the final decision and make the workflow go ahead.
Step 1 – Start a new SPD workflow
Create new SharePoint designer workflow (List or Reusable). If you create a Reuable workflow make sure that one column must be part of the content type, see step 3′.
Step 2 – Create two task process activities
In a parallel block, Create two custom task process action, one is for the common participants, the second is for the pivot. As for any custom task process, set the task assignee, task title, and all other common task proprties.
Step 3 – In the subject list/content type, create a column – “WorkflowCommand” to pass messages between the two task process actions
We need a column to allow the pivot task process tell the other task process (common participants) when to stop.
Step 4 – Set actions for each task
This is where the magic lies – when the pivot task is completed we set the WorkflowCommand column to the value “StopProcess”, this signals to the other task process that the pivot has made a decision. In the common paricipants task process, after each task is assgigned to a participant, we wait and listen to the column WorkflowCommand, if the value is equal to “StopProcess” – we’ll end the task process.
To achieve this, go inside the pivot custom task action, click “change the behaviour of a single task”, then inside “When a task completed” set the value of the WorkflowCommand column to “StopProcess”.
Next, enter the common participants task process action, click “change the behaviour of a single task”, then inside “When a task is pending” add action “Wait for field change in current item” and wait for the WorkflowCommand column value to be “StopProcess”, then simply put the action “End task process”.
Step 5 – Publish, associate, run, examine
Now you can publish the workflow and see the results.
The workflow status page at the begining:
The workflow status page after one participant has made a decision and pivot has made a decision. Note how one task was cancelled.: