Flexplorer: Somewhere over the Rainbow
The dinghies in the Geiranger harbour are being prepared for the holiday season with a good washing and a drop of oil where needed. A set of about 5 boats is bobbing on the fjord already as there are still new vessels being manoeuvered out of a shed by a team of three. Just as you walk past a colorful yellow one, you hear a rumble. As you turn, your realise the shiny dinghy was consuming the last of the sunlight, as a downpour races towards you from over the fjord and flushes the area…
Dripping in the hallway, you catch your breath from the abrupt sprint back to the Flexplorer warehouse. "Welcome to Norway!" Lucy calls out, as she hands you a stack of paper towels. "You’re slightly early to the party here", she says. "Give it about a month and this place will be crawling with tourists, bathing in the sunlight. For now though, it’s still rather unpredictable, I’m afraid." Lucy offers an empathetic smile. "Shall we continue?"
You’re back at Flexplorer after 2 weeks of travelling the western coastal area and its fjords. The process improvements you helped realise last time have been tried and tested and it’s time for the next steps. Clasping a cup of hot tea to feel a bit more comfortable, you take notes as Lucy explains how things have been going.
Get Set Up for the Assignment
Using git
Checkout the flexplorer-assignment-2-start tag in the assignments repository.
git checkout tags/flexplorer-assignment-2-start
This will put git into 'detached HEAD' mode (it will inform you of this).
If you want to create a branch from here to save your work, git will tell you to do the following.
$ git switch -c <your-branch-name>
This way, you have a branch based on the tag you started with and you can create commits on your branch to save your work and still be able to jump through the history.
If you want to combine the two in a single action, execute the following command.
git checkout tags/flexplorer-assignment-2-start && git switch -c my-work-from-flexplorer-assignment-2-start
Maintain Fleet
Lucy has noticed there are two issues with the current Maintain Fleet process. Some customers forget to confirm their appointments and declining the proposed appointments turns out to be just as likely as accepting them.
Change the model in maintain-fleet.bpmn so declining and confirming appointments is weighted similarly and add a way to re-send the proposed appointment if the customer doesn’t respond within 3 days.
Take a Hint
Before you look at the hints below, remember that these assignments are meant to practice applying the BPMN constructs and modelling practices that were explained earlier. It’s likely you can apply the most recently introduced ones in these assignments.
Not sure how to proceed?
Here are some suggestions that don’t give it all away 😉
-
Think of a way to change the current receive task so the various outcomes of sending the proposal can be weighted evenly.
-
Recall that a customer responding, not responding in time or declining could all be considered events that happen.
-
Repeating an activity that was already performed is a perfectly valid modelling approach.
Still struggling?
Read on for some concrete suggestions.
You could use the following BPMN constructs and modelling practices to achieve this.
-
Event-based gateway
-
Intermediate message event
-
Intermediate timer event
-
Control-flow based loopback
Swap Fleet
"We realised there are more things we can do if there’s a swap", Lucy explains, "but it’s not the same for all cases. Canoes for instance require special arrangements for transport. It’s a custom job each time, so we have Kim arrange that. It’s a real milestone when that’s been settled, so we might want to put that in the model too."
"That’s Kim Sorgenson?", you ask? At the moment, Kim is your favourite Flexplorer employee, because when you visited the first time and stumbled into a pile of printing paper, you learned that she’s the person who takes care of all the office supplies. That means she also orders the paper towels before they run out.
"That’s her," Lucy replies and then adds: "she’s our unsung warehouse hero. But there’s also something extra to do for Stian. We can calculate a new lease automatically if the swap means an overall downgrade to the customer’s subscription. With that lease in hand, Stian can negotiate a new service grade that’s appropriate. After that’s done, we want to make sure we can respond to updated subscriptions in the future, so let’s add that in."
"The canoe transport, ordering new fleet and new subscription service grade need to be done before we can confirm. That’s if they’re needed. Am I making sense to you with all this info?"
Lucy offers you another hot tea and you set to updating the process.
Continue work on the swap-fleet.bpmn file.
Leave the existing branches in place and add the optional parts for the canoe transport and the calculation of new lease with the subscription updates.
Take a Hint
Before you look at the hints below, remember that these assignments are meant to practice applying the BPMN constructs and modelling practices that were explained earlier. It’s likely you can apply the most recently introduced ones in these assignments.
Not sure how to proceed?
Here are some suggestions that don’t give it all away 😉
-
There are several optional branches being introduced to the process. Their usage needs to be synchronised before the confirmation is sent out. How could you capture these optional ,parallel paths?
-
With all those optional activities, how could be effectively model how we decide what needs to happen for each specific case?
-
Reaching a milestone in a process is an important event. Think of a way to model that in the diagram.
Still struggling?
Read on for some concrete suggestions.
You could use the following BPMN constructs and modelling practices to achieve this.
-
Inclusive gateway, diverging (split)
-
Inclusive gateway, converging (merge)
-
Business rule task
-
None intermediate event
Resell Fleet
Stian is not around today, but he’s left you an e-mail with some ideas.
Hi,
we haven’t had many resales in the short period you were gone, but I took a look at the model you proposed and I think we should improve some things.
I talked with the IT guys and we don’t have to offer the reselling fleet to each customer one by one. The Target customers decision could just as easily give us a list of the first customers worth targetting right now. Then we can just go through all the steps to offer them their share of the freed fleet in parallel. Once we have answers from all of them, we can simply do a next run. Maybe that top section should be a subprocess or what was it you called those bigger boxes?
In fact, we should just keep doing that while the fleet is not fully resold. Is there a way we can do that and still leave the 3 months plus 70% check in place?
Cheers,
Stian
Margin Officer @ Flexplorer
Open the model in resell-fleet.bpmn and change it so multiple customers can be offered the freed fleet and Flexplorer can do as many iterations of that within the three month period before the 70% conditional event will cut it off after the user tasks have been completed.
Take a Hint
Before you look at the hints below, remember that these assignments are meant to practice applying the BPMN constructs and modelling practices that were explained earlier. It’s likely you can apply the most recently introduced ones in these assignments.
Not sure how to proceed?
Here are some suggestions that don’t give it all away 😉
-
Stian has suggested using a subprocess; this is a good idea. How could we repeat the subprocess' execution until we want to stop?
-
Remember that we’re now getting suggestions to target multiple customers. How could we offer all of them to purchase the fleet?
-
Remember that adding some of the new BPMN constructs to our palette allows us to express a model’s intent more eloquently, so don’t be surprised if the model looks simpler as a result of your efforts!
Still struggling?
Read on for some concrete suggestions.
You could use the following BPMN constructs and modelling practices to achieve this.
-
Loop activity
-
Multi-instance activity
-
Embedded sub process