Frequently, you might be in a situation where a part of a process is required more than once. Until now you probably just duplicated the elements in order to use it in a different part of the process. But this problem can be solved more elegantly. A more sleek way to use the same part without duplicating it is to enclose those parts in a separate process, a sub-process. This sub-process is then called where the duplicated parts would normally be. Be aware that you may have to institute certain parameters to ensure the outcome you want.
It always depends on the particular scenario whether to use a sub-process, as there are distinct advantages and disadvantages.
Advantages:
- Better reusability because they are stored centrally, so updating is only necessary in one place
- The enclosed parts can be tested separately, so when using them in other processes you can be sure they work properly
- The Workflow-Engine can handle small executions better
- The "main processes" and sub-processes can be approved and versions can be assigned separately
Disadvantages:
- It is not possible to generate a single execution log for the whole execution with the sub-process included.
- For other people, it is less comprehensible what is going on in the workflow (with general process links it is not that big of a problem as the client supports the navigation. Problematic are processes which send emails to an inbox where another process watches the emails in order to trigger. Or if a web service call triggers another process)
- The "main processes" and sub-processes can be approved and versions can be assigned separately -> some companies don't want that