Process Mining from discovery to checking Prof.dr.ir. Wil van der Aalst Eindhoven University of Technology, Department of Information Systems, P.O. Box 513, 5600 MB Eindhoven, The Netherlands
Outline BPM lifecycle Process mining overview ProM framework Example –discovery algorithms –LTL Conclusion Thanks to Ton Weijters, Boudewijn van Dongen, Ana Karla Alves de Medeiros, Minseok Song, Laura Maruster, Eric Verbeek, Monique Jansen-Vullers, Hajo Reijers, Michael Rosemann, Anne Rozinat, Christian Guenther Peter van den Brand, Huub de Beer, Andrey Nikolov, et al. for their on-going work on process mining.
The BPM life-cycle
1993
1998
2003
2008 ???
Design-time (a-priori) and run-time (a-posteriori) questions Run-timeDesign-time - process mining - verification - validation - performance analysis
focus of this paper
Process discovery: Reversing the process process discovery
Conformance testing
Log based verification formula four_eyes_principle (a1:activity,a2:activity) := forall[p:person | (!(execute(p,a1)) \/ !(execute(p,a2)))];
ProM framework
Overview 1) basic performance metrics 2) process model3) organizational model4) social network 5) performance characteristics If …then … 6) auditing/security
ProM ARIS/ARIS PPM YAWL Caramba CPN Tools
Converter plug-in: Analyzer
XML format
ProM architecture
Example
Snapshot of log (100 cases)
Alpha plug-in (1)
Alpha plug-in (2)
Multi-phase mining plug-in
Genetic miner (1)
Genetic miner (2)
Social network mining plug-in
SNA with Netminer betweenness metric points out that the editor and the two editorial assistants are most central
Netminer (2)
LTL checker: Input
Question 1 formula accept_or_reject_but_not_both() := {} (<>(activity == "accept") !(<>(activity == "reject")));
Question 2 formula action_follows_decision() := {Is every decision followed by one of the three possible actions? } []( (activity == "decide" -> _O( ((activity == "accept" \/ activity == "reject") \/ activity == "invite additional reviewer") )));
Question 3 subformula execute( p : person, a : activity ) := {Is a specfic activity executed by a specific person?} <> ( (activity == a /\ person == p ) ) ; formula not_the_same_reviewer() := {Is every reviewer unique?} forall[p:person | (((!(execute(p,"get review 1")) \/ !(execute(p,"get review 2"))) /\ (!(execute(p,"get review 1")) \/ !(execute(p,"get review 3")))) /\ (!(execute(p,"get review 2")) \/ !(execute(p,"get review 3")))) ];
Question 4 subformula accept(a : activity ) := {Is the result a some activity an accept?} <> ( (activity == a /\ ate.result == "accept" ) ) ; formula dont_reject_paper_unjustified() := {Are all papers with strong support indeed accepted.} (((accept("get review 1") /\ accept("get review 2")) /\ accept("get review 3")) -> <> ( activity == "accept" ) ); accept reject
Question 5 formula four_eyes_principle(a1:activity,a2:activity) := { The four-eyes-principle Check whether two activities are never executed by the same person for a given case. Arguments: a1 of type string denoting an activity a2 of type string denoting an activity } forall[p:person |(!(execute(p,a1)) \/ !(execute(p,a2)))];
A related plug-in: Conformance checker
Conformance checker (1)
Conformance checker (2)
Conformance checker (3)
Additional plug-ins State space analysis, invariants, EPC reduction/verification, etc.
Conclusion Process mining is an exciting topic both from a practical and scientific point of view. Join us by: –Applying this in different setting. –Contributing logs, adapters, and plug-ins. BPMcenter.org useful links: