You can also access this tutorial in German and French.


In this video we talk about defining your own data types in YAWL. These are defined using XML Schema Definition (XSD). We also demonstrate how to access parts of complex types using XQUERY. The zip file below contains an initial and a final YAWL specification and an XSD file.

You can find the supplementary material here.

Hello and welcome back to the next YAWL tutorial! Today we will talk about capabilities. So from the resource perspective, we have mostly used roles so far and this is in practice - at least from our perspective - the most frequent case. But YAWL has more than that. YAWL has not only roles but also capabilities, positions, and org groups. And you can see that here in the chart behind me how this is built up. This chart comes from the your book by the way. Today we will use a simple workflow dealing with insurance claims that demonstrates the use of capabilities. So let's go to the computer. Before we go into the YAWL editor, we will first look at the YAWL control center, add the org data and the users we have created. You can upload these to your own system by importing the ybkp file in the supplementary material. Good! So we have in the org data, we have one role called claims and we have capabilities health insurance, life insurance, and travel insurance. Health insurance is held by Albert Schweitzer, life insurance by Jeanne Calment, and travel insurance by Albert Schweitzer and Ferdinand Magellan. So this is the distribution of the users. The users all have password "pass" and they have their initials as the user id as you can see here. So now we'll look at the specification that is prepared and you can find it in the supplementary material and it starts with assessing the claim. And if it is not accepted, there will be a rejection sent to the customer in the categorize claim task. We choose one of the categories health, life, and travel. And depending on this choice, we will go into one of these tasks here. And they all have the same decomposition. But now we will enter different capabilities here. So we go to the calculate payment amount in the health branch and we will go to resourcing.

And now we see the role is claims and now we can add a capability and we choose health insurance. That's it! We have to double click it, press ok. The same thing here: for live life insurance and for "Calculate payment amount". Travel insurance. Nnote that it's also possible to make a conjunction or disjunction of capabilities. So you can ask for all of these capabilities for example if you want to. So that's it. We save the specification now. Let's check whether everything works as expected. So I have here on the left hand side the YAWL control center with the admin logged in on the right hand side. It's the user Jeanne Calment, jc which is logged in here and at the bottom we have the workflow specification. So we have already loaded it in the engine. So we launch a case and we look at the admin queues and we see, there is one work item "Assess claim" as you would expect and it is assigned to our three users in the system. So that's good and if we go to Jeanne Calment we have this work item here. We accept and start it and then we uncheck the rejection and we complete this first one.

We refresh here and now we have "Categorize claim" again assigned to three users and we can accept and start it with the same user here. And now we can set the category and I will choose "Calculate payment amount" for the travel. So we select travel here, we complete and then we check here "Calculate payment amount" for travel. And now this is assigned to two: Magellan, Ferdinand and Albert Schweitzer and this is exactly what we would expect. So capabilities are straightforward to define. Just watch out that the distribution set doesn't become empty. When you define too many constraints because in that case the administrator will have to distribute the work item manually. It's a little unfortunate that capabilities cannot be defined via variables as it is the case for participants or roles. That would be a feature I would like to see in the future in YAWL. The next topic are positions. So stay tuned! (6.92 KB)