Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

BPMN notation question: PLEASE ONLY WORK ON THIS IF YOU KNOW BPMN VERY WELL DUE

ID: 3855694 • Letter: B

Question

BPMN notation question: PLEASE ONLY WORK ON THIS IF YOU KNOW BPMN VERY WELL DUE TO QUESTION BEING VERY COMPLEX. Thumbs Up WILL BE GIVEN TO DETAIL AND CORRECT DIAGRAM.

QUESTION: Create a model of the customer ordering process using the BPMN notation. USE THE CHOREOGRAPHY DIAGRAM WITH POOLS. This should be a high level complex diagram. Required to use all the details from paragraph below.

Picnics R Us (PRU) is small catering firm with five employees. During a typical summer weekend, PRU caters 15 picnics with 20 to 50 people each. The business has grown rapidly over the past year, and the owner wants to install a new computer system for managing the customer ordering process. PRU has a set of 10 standard menus. When potential customer call the receptionist describes the menus to them. If the customer decides to book a picnic, the receptionist records the customer information (e.g., name, address, phone number and the information about the picnic. (e.g., place, date, time, which one of the standard menus, total price) on a contract. The customer is then faxed a copy of the contract and must sign and return it along with a deposit (often by credit card or check) before the picnic is officially booked. The remaining money is collected when the picnic is delivered. Sometimes, the customer wants something special (e.g., birthday cake) in this case, the receptionist takes the information and gives it to the owner who determines the cost; the receptionist than calls the customer back with the price information. Sometimes the customer accepts the price; other times, the customer requests some changes, which have to go back to the owner for a new cost estimates.

Explanation / Answer

Modeling Scenario

Let's say we want to model a process in BPMN and the process induces some business rules. We will use the example of creating a bill. In order to create the bill, a discount needs to be computed. The sum of the order and the customer type are the relevant criteria to compute the discount.

This is a very simple example which will show us where to apply BPMN and where not to.

The Solution as BPMN 2.0 Diagram

Rule EngineCreate BillBillrequestedComputediscountCreate billBillcreated

Explanation

During modeling, we focus on the process flow. In this example, the process has two steps. A discount is computed before the bill is created. The result is a very simple process.

It does not make sense to model the calculation of the discount itself in the BPMN model (see the example below). For the rules decision tree, for every additional criteria, the cardinalities will grow exponentially. That is not what we want in a BPMN model.

Therefore, it makes sense to separate process and business rules.

The Wrong Way to Model It

Create BillCompute 2%discountadd an extra 1%discountcustomertype?BillrequestedSum of order?customertype?Create billBillcreatedCompute 3%discountCompute 4%discountcustomertype?add an extra 1%discountadd an extra 1%discount1000 -1500500 -999>2000< 500Type AType AType Aordinaryordinaryordinary

Dependent Instances

Modeling Scenario

Let's say we want to model a process with concurring instances. We are using a simple example. If one credit check of a customer is running, we do not want another credit check for the same customer to be performed at the same time.

The reason could be that the total number of credit checks performed influences the result of the check.

Let's assume that we are running a credit check for a customer and we get a second request for the same customer at the same time.

What all solutions have in common is that every new instance needs to check for concurring instances on the data level before starting the actual credit check.

Solution with Signal Event

Creditworthiness CheckCheckrequestedcheck forrunninginstances(of same customer)running instancesof same customer?perform creditcheckcredit checkperformedcredit checkperformedEngineDatabasenoyes

Explanation

The signal event is the easiest and most compact way to model the interaction between different instances. The problem of the signal is that it functions as a broadcast and does not address any specific instance. So, strictly speaking, the customer is ignored and all waiting instances catch it.

Solution with Message Event

Creditworthiness CheckCheckrequestedcheck forrunninginstances(of same customer)running instancesof same customer?perform creditcheckcredit checkperformedwaiting instancesof same customer?check for waitinginstances (ofsame customer)running instancefinishedinformwaiting instanceEngineDatabaseEngineDatabasenonoyesyes

Explanation

This solution is a bit more complex, since you need to determine the recipient (a single instance) of the message. That induces a second data request before the end of the instance. However, this is the correct way to solve the problem that occurs in the signal event solution.

Solution with Timer and Loop

Creditworthiness CheckCheckrequestedcheck forrunninginstances(of same customer)running instancesof same customer?perform creditcheckwait sometimecredit checkperformedEngineDatabasenoyes

Explanation

In this example we do not need any communication between instances. The instance itself checks periodicity if it can proceed to the credit check. The downside is that this might cause delays and overhead due to the loop.

Four Eyes Principle

Modeling Scenario

We want to model the following situation using BPMN 2.0. For a request (e.g., a payment) two approvals of two different people are needed. A Process Engine should ensure that both approvals are fulfilled before the request is approved. The manual steps that are performed by the two approvers should also be modeled in the BPMN diagram. The approval decision is performed using a portal with a tasklist.

The Use Cases

The use cases for this pattern are numerous. Here are some examples: