I am working on a process which requires about 15 steps to be executed in parallel. The logic in each step is basically the same (sending tasks to different departments) which will result in a pretty big workflow with lots of duplicates. I would like to take advantage of the reusability techniques supported in Nintex Workflow. I am aware of the following reusability options:
UDAs, Workflows, Snippets. Unfortunately I am not able to proceed with any of these techniques because of the following limitations:
1) UDAs - it's not possible to customize the task form that comes with the Flexi Task action. I need to have custom branding and some custom buttons in my task forms so this limitation is a showstopper for me
2) Workflow - it's not possible to run multiple instances of a workflow on the same list item. In other words I won't be able to move my task processing logic into another workflow and start that workflow for every branch of a parallel action
3) Snippets - I don't see any benefit of using this option since it doesn't make the workflow smaller and it doesn't solve the duplication issue.
Any advice how to solve my problem is welcomed.
workflow is your best bet.
there is an option in start workflow action 'Do not start the workflow if it is already running' so if you keep it unchecked you should be able to run several instances of the same workflow on an item.
in fact, UDAs doesn't make your workflow smaller since during publishing/compilation UDA content is just put in place of the action.
you can use the Run Parallel Actions action, and have a bunch of branches. Yes, you'll need to copy/paste the Flexi Task control to each, which isn't ideal. But the rest of the workflow usually doesn't require duplication of actions. Since most workflows require all those tasks to be completed before proceeding.
The other option, would be to have your List/Library workflow, start an instance of a Site Workflow for each approval process. Not idea either, since you'll have a ton of workflow instances running.
Do they need to be different forms for the different department?
You can use a Flexi Task to assign an individual task per user in a group.
From the Form design side, you could do some things to tweak the form, based on what group the user belongs to.