While there are four kinds of flow elements: Activities (Task and Sub-Process), Events and Gateways, there are mainly two kinds of connecting objects: Sequence Flows and Message Flows.
Activities are works that are performed within a business process. They are shown as rounded-rectangle, with names describing the works to perform.
There are two types of activities: Task and Sub-Process. When we want to model an atomic work which cannot be further broken down or makes no sense to do so, we use a task.
On the other hand, when we want to model a non-atomic, complex work that can be elaborated into smaller works, we use a sub-process. A sub-process can be broken down into another level of details. For this reason, a sub-process usually contains another BPD modeling its details.
Note that the selection of task or sub-process is not just about how complex a work can be but also about how detailed you need to know about the work. If you are a customer, you probably don't want to know how your payment is being processed. However, if you are the shop, how to process customer's payment becomes important.
Events are something that happen and may have impacts on a business process. An event can be either external or internal. As long as they can influence the process being modeled, they should be modeled. Events are shown as circles. In some cases, there are icons within the circles to represent the type of the event trigger.
There are three types of events: Start Event, Intermediate Event and End Event. Trigger can be specified for each of them to indicate under what condition an event is being triggered.
Every process should have a start event to show the beginning of business process. It allows readers to locate in BPD where the process begin. Moreover, end event is used to indicate where a business process completes and intermediate event is responsible for driving business flow based on the event it specifies. Intermediate event can be attached to an activity for modeling an event that may happen DURING the execution of that activity and it may also be connected by a connecting object for modeling an event that may happen AFTER the execution of the flow element before. We will talk in more detail later on in this tutorial.
Take a look at the following example. It would give you some ideas on how events work. Basically, the diagram is saying when we receive an order, we begin to process it. If and only if there is no credit limit remained, we check on the problem. Process ends when the order has been processed or the problem has been identified.
Gateways are responsible for controlling how a business process flows. They are shown as diamond shapes. In a process, the work to do and the output may vary under different external or internal conditions. For example, a discount will only be offered to a VIP buyer but not to anyone else. Gateway is where conditions are evaluated and the decision is made.
Here are some typical types of gateways:
Data-Based Exclusive Gateway, also known as exclusive gateway is used to control process flow based on given process data. Each outgoing flow which is connected from gateway corresponds to a condition. The flow with satisfied condition is traversed. Only one flow will be traversed.
Inclusive Gateway can be used to create parallel paths. The conditions of all outgoing flow are evaluated. All flows with positive result will be traversed. Therefore, it may result in executing multiple flows if multiple conditions are satisfied.
Parallel Gateway is used to model the execution of parallel flows without the need of checking any conditions. In other words, all outgoing flows must be executed at the same time.
Event-Based Gateway is used to model alternative paths that are based on events. For example, to wait for someone's reply, either Yes or No is needed to determine the path to traverse. The gateway is therefore followed by two connected intermediate events with message triggers, with one representing Yes message and another one for No. When any ONE of the events is triggered, then the flow that follows that event will be taken. All the other events and their followed flows will no longer be valid.
Sequence flow is used to connect flow elements. It is shown in solid line with an arrowhead. It shows the order of flow elements.
You can only use sequence flow to connect flow elements within the same pool: either within the same pool/lane, or across lanes in the same pool. If you want to connect elements across pools, you cannot use sequence flow but message flow instead.
In BPMN, the communication between pools is achieved by the use of message. Message flow is used to show the flow of messages between pools or flow elements between pools. A message flow is shown in dotted line with an arrow head. Some examples of message that flows between pools: fax, telephone, email, letter, notice, command.
Case Study - The True Aqua Distilled Water Company (Cont.)
In Part II of this tutorial, you have started to draw a BPD for The True Aqua Distilled Water Company. You have created several pools and lanes. Now, we are going to draw the process flow. If you have missed Part II, you may open it by clicking on the hyperlink at the bottom of this page.
- Based on the process description obtained from the distilled water company, we know that the process starts when customer places an order for distilled water. Therefore, create a start event in the Customer pool to show the beginning of the process. Select Start Event in the Diagram Toolbar.
- Click in the Customer pool.
- Create a task after the start event for placing order. Move the mouse pointer over the start event just created. Press on the Resource Catalog icon at top right and drag it out.
- Release the mouse button on the right hand side. In Resource Catalog, select Task.
- Enter Place Order as name and press Enter for confirmation. This creates a task Place Order.
- The customer service assistant who received the order needs to verify the customer's identity. Create a task for this activity. Note that the task should be placed inside the Customer Service Assistant pool. Press on the Resource Catalog icon and downwards.
- Release the mouse button in the Customer Service Assistant pool. Select Task in Resource Catalog and name the task Verify Customer Identity. Note that a message flow is automatically created between Place Order and Verify Customer Identity instead of a sequence flow. This is because they are placed in two different pools.
- If the customer has never placed an order before, the customer service assistant will create an account for him/her. Otherwise, it will forward the order to the Logistics Department the following Wednesday. To model these two possible flows - an old customer or a new customer - we need to use a gateway. Use Resource Catalog to create a gateway from Verify Customer Identity.
- Name the gateway Customer Exist?.
- If the customer record does not exist, create an account. Let's model this flow. Create a task from gateway using Resource Catalog.
- Name the task Create Customer Account. Name the sequence flow No. This means that if the condition No is satisfied, take this flow and perform the task Create Customer Account.
- How about if the customer record does exist? The customer service assistant will forward his/her order the following Wednesday. To model the need of waiting until Wednesday, we need to use an intermediate event. Use Resource Catalog to create an intermediate event from gateway.
- Name the intermediate event On Next Wednesday. Name the sequence flow Yes.
- The intermediate event will be triggered at a designated day/time. Hence, this is a kind of timer event (e.g. event with timer trigger). To represent this, right click on the event and select Trigger > Timer Trigger from the popup menu.
- The order will be forwarded to the Logistics Department the following Wednesday. To represent this, create a task Forward Order after the intermediate event. Use Resource Catalog to create a task from the event.
- Name the task Forward Order.
- Don't forget the activity to do after creating a customer account. After the customer service assistant has created an account for a new customer, the order will be forwarded to the next Wednesday, too. Therefore, we need to add a sequence flow from Create Customer Account to the intermediate event On Next Wednesday. Do NOT connect to Forward Order directly. Otherwise, this means that the need of waiting until Wednesday will be skipped, which is not what the user wants. Again, you can use the resource icon to create a connection from Create Customer Account. This time, release the mouse button inside the intermediate to add the connector.
- The order of water delivery will be forwarded to the manager in the Logistics Department to arrange for delivery. Use Resource Catalog to create a task in the Manager lane, from Forward Order.
- Name the task Arrange Delivery.
- Here we have a question. The activity arrange delivery actually involves several sub-activities. Is it more appropriate to model it with a sub-process instead of a task? The answer is yes. But what shall we do now? Delete the task and create a sub-process? We do not need to delete the task. Instead, we can convert it into a sub-process. Let's try by right clicking on the task Arrange Delivery and select Convert to Sub-Process from the popup menu.
- A sub-process contains another BPD for you to draw its details. The plus sign enables you to drill down to the sub-process by opening the BPD. Click the plus sign on the sub-process Arrange Delivery and select New Business Process Diagram from the drop down menu.
- It opens a blank BPD. You should see a pair of start and end event are presented. They are there for you to connect to main flow modeled in the parent diagram and the sub-process flow to be modeled in this diagram. Apply the techniques taught above. Try to create three tasks Assign Workers, Print Schedule and Post Schedule in between the two events.
- Let's go back to the parent BPD. Click on the shortcut link on top of the diagram.
- The sub-process is in collapse state. You can optionally show its content by clicking on the + icon at the bottom of the shape body. By doing so, the thumbnail of the sub-process BPD will be shown inside the sub-process shape. If you resize the sub-process to a larger size, the thumbnail will follow too. However, we do not recommend showing the content of the sub-process BPD here. Firstly, it is because of the complexity of the parent diagram. Secondly, when you use a sub-proces, this means that there are different levels of process details. If the detail is so important that you must show in the parent diagram, you probably want to reconsider whether you should model the 'sub-flows' directly in the parent BPD rather than using a sub-process BPD. Therefore, we'd recommend you to keep the sub-process collapsed here.
- After arranging delivery, the workers will be responsible for delivery. Create the task Deliver Water after Arrange Delivery, inside the lane Worker, which is the bottom lane.
- This is about the end of the water delivery process. Like what we have done in the sub-process BPD, create an end event here to indicate the process end. Use Resource Catalog to create an end event from Deliver Water.
- Finally, you should have a BPD similar to this one:
Note that in some cases, you may want to present in sub-process diagram the pools and lanes created before. If you want to do this, just right click on the background of the BPD and select Add Pools/Leans from Parent Diagram... from the popup menu. In the Select Pools/Lanes window, select the Manager lane and click OK.