In this video we talk about the the XOR-Split and the corresponding XOR-Join. The XOR-Split comes in two variatioins: explicit choice and deferred choice. The example specification is about a business process where a make-or-buy decision is taken. The zip file below contains a complete YAWL specification.
You can find the supplementary material here.
Welcome back to another YAWL tutorial! This time we are going to talk about the XOR split. In the last tutorial, we discussed the OR split and this time, the XOR split has exactly one path to follow and in some ways it's a little simpler than the OR split. But there is a subtle difference between the so called explicit choice and deferred choice. In the explicit choice, it is the system that decides which way to go based on some data in general and in the deferred choice it's the environment or the user who decides which way to go. So we will use a concrete example that is to be found in the supplementary material and we are going to dig into it right now. Our screen shows four different windows: on the top left, we have the YAWL editor open with a specification from the supplementary material. On the top right, we have the supplementary material tutorial 9 .yawl and also the file with the resources that you can load into the your engine before starting. On the Left at the bottom we have the YAWL control panel with a running engine and on the right we have a control center with the admin view and we are logged in with the user lom that is admin and ordinary user at the same time. So let's look at the workflow now. The specification starts with a task called "Formulate requirement". After this task, we have a condition here and the condition is a place like in Petri Nets. If formulate requirements is finished, we find a token here in this place and one of the tasks "Define software development project" or "Prepare software procurement" can take this token and so the choice here is what is called a deferred choice because it's the environment that will choose between the two paths and it is dependent on who is going to start which of these work items first and then the rest of the workflow will follow that. Then after "Defined software development project" we have the XOR split here and this is the explicit choice. And the explicit choice here is taken on a variable called "Cost" or "Estimated_cost" and if the cost is smaller than 100,000, we will go straight on to "Start project" and if it is greater or equal to 100,000, we will first need to get approval for our project. And the same holds for the lower part of this workflow: "Prepare software procurement" and "Prepare purchase order". The approval in the middle is another XOR split. Again explicit choice and depending on if the approval was given, we will go either to "Start project" or "Prepare purchase order" depending on where we came from. And if it's not approved, we will just go to the end. Good! So this is the specification. Now let's see how this works if we run this. I have already uploaded it into the YAWL engine so we can go now to the right-hand side to this admin panel and we click on cases and we have tutorial 9 here. So I will select that specification and launch a case. Now if I go to the admin queues, I can see that one work item is work listed to Lorenzo Monaco, which is the user lom. And I'm logged in as this user. So I will find this work item in my work queues here. In the work queues I have a started work item "Formulate requirement". I open this and so I give this a title. So I want to do a CRM project and I will give us some kind of description here and an estimated cost of a thousand. So that is my requirement and I complete the task. So what happens now? If i refresh this here, I can see that I have two offered work items now: one is "Define software development project" and the other is "Prepare software procurement". And it is here with this deferred choice that we can decide to make or to buy this software. So I will accept and start "Define software development project" and watch out what happens now. I accept and start this and I refresh it here and now I have only one started work item and this is "Defined software development project". So the other work item has disappeared because its activation has disappeared. The token in the place has been taken by "Define software development project". I view and edit it and now I can change the estimated cost if I think it's more expensive. I can choose the technology and complete it here and this time, if I refresh, I go to "Start project" because this cost is lower than the threshold here. And now I can assign a project manager and complete the case. Just to do another example, I go to cases again, launch another case and go directly to my work queue and I formulate another requirement and now I want to do an ERP system and this time, the cost is little higher and again: I have these two work items offered to me. So I will go the procurement path now, accept and start and I edit it. And now I choose a supplier and I complete this work item. Now it's "Approve proposition". So in the real life, this would of course be another person doing this "Approve proposition". I go to view edit and I cannot see the estimated cost and let's say, I don't approve it. I complete and the case is done. That's that!
That was easy, wasn't it? So in the next video, we will talk about sub workflows. See you then!