Hello,

for a course at my University we are using YAWL and ProM (Process Mining). I'm trying to analyse a log from YAWL (xes format) and have some difficulties. Every Task from YAWL has in the log six to nine entries going from start, complet, schedule to unknown and somentimes sub numbers for the task. I have diffculties to extract the intresting entries in order to get graphic (e.g petri nets) to do my analysis. I can filter for the relevant task entries in prom, but then i cant create a full petri net. Because the tool cant find a connection between my tasks. So my question is how can i get a a better/cleaner log?

To better understand want i want to know, i created an easy example. It has two steps, first a user will write a message a another one will read it.
But instead of four entries (start write, complet write, start read, complet read) i got 12 and i dont know why.

Is there any way to get rid of some of this entries in YAWL, bevor i load the log in another tool?

best regards

Daniel

test_case.yawl (8.04 KB)
test_cas_log.txt (4.97 KB)

fmannhardt

Fri, 11/15/2013 - 10:53

Hi Daniel,

I don't know the details of how YAWL generates the XES logs, but I assume that the "extra" events are due to the scheduling of the YAWL work item to the available resources and the transition from Unoffered -> Allocated -> Started. Apparently YAWL does not write appropriate values for "lifecycle:transition".

In case you are interested in the basic control-flow only (Petri Net), then I recommend to just filter out all events except for the ones with lifecycle:transition = (start|complete). This way you should get a clean log. You can also ignore the sub numbers for the tasks, just use 'concept:name' to get the task name.

The filter could be done by using the "LogFiltering" package of ProM. Just use the task "Log Filtering".

EDIT:
I looked up which values are 'allowed' by the XES standard for 'lifecycle:transition' and 'unkown' is choosen if none of the other values would match. Some of the YAWL states are includes as 'assign', 'schedule', 'suspend'. 'unoffered' is not included and in YAWL there is a difference between 'offered' and 'assigned', so 'offered' can't just be mapped to 'assign'.

You may want to test this theory by using some of the resource handling mechanisms in YAWL and then have a look at the XES log again.