Subprocesses represent a collection of activities being represented collectively as a single activity, providing a natural way to draw a simple top-down view of the process with the ability to drill-down to any level of detail.


A subprocess can either be an embedded subprocess which only exists within the process where it´s represented, or an independent subprocess which can be called from any process. For examples on minimized and expanded embedded and independent subprocesses see the pictures below.


Embedded subprocesses

Embedded subprocesses consist of a set of activities that are not independent of the parent process. They are typically a section of the same process but have a clear objective and can be defined with a beginning and an end. It is usually used to hide complexity in the process model.


Minimized and expanded embedded subprocesses



Working with embedded subprocesses

To model an embedded subprocess, do the following:


1. Within the parent process, add a regular Task flow object from the right-hand side.


2. Enlarge the Task symbol by pulling one of the squares by its corners.


3. Model the subprocess within the enlarged task symbol, just the way you normally model with start, task and end symbols.


4. As soon as you added the first symbol to the subprocess, a plus sign was added at the bottom. Use the plus sign to decide whether the subprocess should be minimized or expanded.


5. Connect the subprocess to the parent process using sequence flows (arrows) just as usual.


6. If you want the process to be runnable, add participants to the tasks and other symbol just the way you usually do (like in #3 of Create your first process application.


7. Save and publish the process.


Independent subprocesses

Independent subprocesses is the best way to create effective process hierarchies. An independent subprocess is a process that has been added to an upper level process model as a subprocess. When a user sees a process model that contains an independent subprocess it can be clicked on and opened to view. Here's an example:


This top level process contains two independent subprocesses: Marketing and Sales.



Subprocesses look very much like regular tasks except for a small plus sign at the bottom. Subprocesses are clickable and will open the process that it represents when someone clicks on it. Independent subprocesses are seperate process models on Barium Live that have been added to the top level process as independent subprocesses.


Minimized and expanded independent subprocesses





Working with independent subprocesses

In order to create a process hierarchy you must first create the seperate process models that you wish to add to the upper level process model. Here's an example:


1. Start by creating a process model called Marketing that looks something like the picture below. Save and publish it.



2. Model a top level process that looks something like this. (The map in the background is an image with design purposes only.)



3. To add the independent subprocess in #1 to the top level process in #2, drag the flow object called Sub process onto the top level process.



4. As soon as you drop the Subprocess flow object onto your process model a window will appear asking you to select the process model that you wish to add as a subprocess. Selecting the Marketing process will add it to the top level process and make it clickable for all who view the process model. Select the process model and click on OK.



5. Marketing will be added as a subprocess to the top level process. Make any appropriate changes to the layout, colour, text label or text label content to make it look the way you want it to. Also, add more subprocesses if you have them and wish to add them.


NOTE! If you want the subprocess to automatically show the latest published version you have to enable auto upgrade. To do this, right-click on the subprocess flow object and choose Properties and set the Auto upgrade property to True.


6. Save and publish the process. If both the top level process and the subprocess are correctly configured, with participants, the entire process will be runnable.