On the back of my previous post about running workflows, I've created a list with a single form and workflow as a basic example behind the premise. You can find them attached.
I'm not a fan of running workflows. Where I can, I will look to process a form in a single pass of the workflow. It will set the stage, status, Assigned, content type, permissions and send emails in a single pass. It will only have one list ( No Task List )
When I started using Nintex I quickly found that some of the actions that require the workflow to pause and request data are great until you want to make changes. Ooh I need another stage or another field on the approval form. Oh god I have 3000 of these in flight. I need to adjust the task form and restart all the workflows and somehow get them back to the current stage they were at.
With this approach that pain goes away. If I've added another field or stage, next time the form is processed it'll take into account those changes.
Onto the example. It's a simple request with an approval and review stage. My actual solution would be more along the lines of my original post, with a 'stages' list to lookup the info and multiple content types for the different forms (stages) but for this example, everything is on the one form so you can download and have a look yourself.
There is a single workflow that runs on new or modified. Based on a WorkflowProcess field, the workflow makes a choice as to the stage you've chosen, looks up the relevant data for that stage and updates the item to that stage. Buttons on the form are linked to the WorkflowProcess and simply enter a different stage value into that field for the workflow to work out which stage you want.
Another advantage of this is the ease at which you can move items about. If I type into the WorkflowProcess the stage I want the form to goto, the workflow runs as if the button had entered the value.
On our New form the button is linked to
So the workflow runs and looks for the relevant data for that stage.
and updates the item info with the new stage, status and who to assign it to.
The form has now changed to the 'Approver' view. In this example I've used rules to hide the different sections. A better solution would be to have a content type (form) for each stage.
The advantage here is we are still using one list. It's the same item the applicant created. No task form to bring any required info back to. All the info is already on the form for the approver. I just disable the fields already input.
Here the Approver can send it on for review or reject it back. All the buttons are doing is entering stage 2.0 or 0.0 into the workflowprocess field.
Onto the review stage and as before I can see all relevant info and approve or reject. The form also shows an Audit and any comments that have been added along the way.
That's it. The reviewer can reject it back a step or approve and finish the item.
Ok! So apologies if I've stated the bleeding obvious. I've just been learning on the way by playing and reading this forum!
So advantages in a nutshell....
Single list. No need for a separate task list.
All the data captured during the process is captured in a single item.
Attachments. One item again. Attachments are there at any stage.
No running workflow. Items are processed to the next stage in a single pass.
Easily move items between stages as an admin.
Changes to forms or workflow are applied the next time the item is opened and \ or processed.
List and workflow is attached if you want to have a play.