You can also access this tutorial in German and French.


This is the first video explaining the YAWL editor.

You can find the supplementary material here.

Hello and welcome back to the YAWL tutorial series! So in the last video, we have talked about the YAWL environment and the resources that you can look up for reading about YAWL and in this video, we will start with the YAWL editor and we will start editing the control flow. The goal of this video and the next two or three videos will be to get you to a running workflow as quickly as possible. So we will only cover the basics here and do the more detailed things in future videos. So let's start with a minimum of theory! On this slide, you can see the three workflow perspectives: namely the control flow, the data, and the resources.

These three perspectives come from the analysis of workflow patterns and the control flow is what makes a workflow going. So it's a sequence of steps. Sometimes it splits up in parallel or in different other splits and then it comes together again. And this control flow from the beginning to the end of our process is depicted graphically in YAWL with the YAWL notation. And you can see an example of that - a part of that - on the top of this slide. The next thing is, if you want to automate a business process and not only talk about it, you also need to say what kind of data you are dealing with and this is the second perspective in workflows. So the data perspective as we can see it on this slide consists of a declaration of variables and their data type for each of the tasks involved in our workflow specification.

And the last perspective is the resource perspective. This is about who is going to execute the task at runtime and this is a complex organizational model in the background and we are able to edit that in the editor as well. And the YAWL system then, with these three perspectives control flow, data, and resources is able to create a web application. And the web application combines all of these three things and is executable on our YAWL server. And so you can find here on the right hand side an example of a web form that is generated by YAWL, where you can see the names of the data fields and their types and - so for example - if you have a date type you can have a date picker and if you have a boolean type you have a check mark and so on and that is how YAWL is working and that's how you can do prototypes very quickly and deploy them on the YAWL server. So let's now go and see how this translates into our example and how we can do that using the YAWL editor. So I have opened up for you the YAWL control panel again. If you want to see how to start it, look at one of the previous videos. And we have already seen that there is this pencil symbol here and if we click that the YAWL editor opens and we get a blank page where we can start editing our workflow. One thing is important before we start. The YAWL editor needs a connection to a running YAWL engine and the running resource service. And we can look that up on the bottom of this page here. We have two little green check marks. If they are green everything is okay and if we click on them we can see that currently our YAWL editor is connected to a YAWL engine residing at localhost with port 8080 - that is the standard configuration - and the resource service is also at localhost with the port 8080 and we are using certain credentials to connect to this and we are able to test the connections. So now let's start our workflow. So to do that we have to go on the icon here on the top and it says "create new specification". So if we click that, we get a starting condition and an end condition and now we can change the palette here to ordinary tasks. That's what what we will start with and if we have changed this to atomic tasks we can now start editing our example workflow. And let's say we want to prepare a workflow for an application for leave and so we will start with "Submit leave request" as our first task. So we click here somewhere on the canvas and if we select this atomic task we have at the bottom here a decomposition and we will create a new decomposition and we will name it "Submit leave request".

So we have created this name here with blanks inside and if we say "okay", the system tells us that in order to create a valid XML identifier it will replace the blanks by underscores, which is fine.

And then we have the "Submit leave request" here. I will just zoom in a little more. So we have the possibility here at the top to zoom in and out and so that you can see more what we are doing. I will just zoom it in a little. So we have "Submit leave request" as our first task here. While we are in the atomic task in the palette - so that's always something you need to watch out for - we can connect the input condition to our first task like this by clicking the left mouse button and dragging it to the first task. The next task will be "Approve leave request". So again we click somewhere here, connect it and select this second task and go to the decomposition on the left hand side and say "new". We will call that "Approve leave request".

Then, after this approval, let's say we have two different outcomes of this: one is that the approval is given, so in that case we have a task called "Note approval" and if that's not the case, we have another task called "Note rejection". And we want to  ... now the control flow to split here. And in order to do that, we select this task and select a split type and in this case this is an XOR split - an exclusive or - so we will choose that here and the exclusive or symbol appears here. And now we connect to these two different outcomes and then we just connect this to the end to make it simple.

Okay, so now our control flow is complete and we can just make it look a little more beautiful. So, how to do that? There are if we ... in the palette we go to the right-most point here, we can select element. Let's first drag and drop around all of the elements and then move them somewhere to the top. And we click and then we select the elements here in the middle and now we align them to the top edges.

And what we also can do is, we can just select an element and put press left arrow until it is at the right position and then we can select these two elements here and align them to the left. And then we take the whole part. Do it like that and now our control flow is ready and it looks more or less clean. So now let's save our specification. So we have on the left hand side here different things so we have a description here.

So I click the three little dots here and I just say "Example application for leave" and we give the specification a name, so this will also be the file name for it "ApplForLeave" and a title. Se can call this "Application for leave". Note that we also have a version number here. So this is version 0.1, and before we save it what we can do we have a green check mark on the top here for validating the specification and if we click that, we see on the bottom "no problems reported", which is good. So now we can save this. So we press this "Save this specification" button and now it will create a name "ApplicationForLeave.yawl". So all these specifications are saved as .yawl files and we just save it somewhere in our directory.

Okay, that's all for now. So in the next video we will continue editing this workflow and will also insert some data. See you then!