BPMN includes four types of flow elements: Activities (Task and Sub-Process), Events, and Gateways. In contrast, there are primarily two types of connecting objects: Sequence Flows and Message Flows.
Activities represent work that is performed within a business process and are depicted as rounded-rectangles with names that describe the work to be done. There are two types of activities: Task and Sub-Process. A task is used to model an atomic work that cannot be further broken down or does not make sense to do so.
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 represent occurrences that can affect a business process and can be internal or external. They are shown as circles with icons to indicate the type of trigger. There are three types of events: Start, Intermediate, and End. Each event can have a specified trigger condition. A start event shows where the process begins, while an end event indicates where it ends. Intermediate events can drive the flow of a business process based on their specified trigger condition and can be attached to an activity or connected by a connecting object to model events that may happen during or after an activity. For example, in the given diagram, the process starts when an order is received, and it ends when the order is processed or a problem is identified, which happens if there is no remaining credit limit.
Gateways, shown as diamond shapes, control how a business process flows by making decisions based on internal or external conditions. For example, a discount may only be offered to a VIP buyer. There are several types of gateways, including:
Data-Based Exclusive Gateway, which controls process flow based on given process data. Each outgoing flow corresponds to a condition, and only one flow is traversed based on the satisfied condition.
Inclusive Gateway, which creates parallel paths where all outgoing flows with positive results are traversed, resulting in executing multiple flows if multiple conditions are satisfied.
Parallel Gateway, which models the execution of parallel flows without checking any conditions, meaning all outgoing flows are executed at the same time.
Event-Based Gateway, which models alternative paths based on events. For example, waiting for a reply of either Yes or No to determine which path to traverse. The gateway is followed by two connected intermediate events with message triggers, with one representing Yes and another representing No. When any one of the events is triggered, the flow that follows that event is taken, and all other events and their followed flows become invalid.
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.
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.
- 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: