6 Lessons Learned Case Study: Replay a Log on Petri Net for Conformance Checking plug-in

25
6 Lessons Learned Case Study: Replay a Log on Petri Net for Conformance Checking plug-in A. Adriansyah Hasselt, 28 Sept 2012 ProM Workshop

description

Hasselt, 28 Sept 2012. 6 Lessons Learned Case Study: Replay a Log on Petri Net for Conformance Checking plug-in. A. Adriansyah. ProM Workshop. Overview. Event Log. Replay. Alignments. Visualizations. ABBCE ABCDE …. . . . . Petri net. . 1. - PowerPoint PPT Presentation

Transcript of 6 Lessons Learned Case Study: Replay a Log on Petri Net for Conformance Checking plug-in

Page 1: 6  Lessons Learned Case Study: Replay a Log on Petri Net for Conformance Checking plug-in

6 Lessons LearnedCase Study: Replay a Log on Petri Net for Conformance Checking plug-in

A. Adriansyah

Hasselt, 28 Sept 2012

ProM Workshop

Page 2: 6  Lessons Learned Case Study: Replay a Log on Petri Net for Conformance Checking plug-in

2

Overview

Event Log AlignmentsReplay Visualizations

Petri net 1 2 3 …

ABBCEABCDE

<<uses>><<uses>> <<uses>> <<uses>>

<<uses>>

Page 3: 6  Lessons Learned Case Study: Replay a Log on Petri Net for Conformance Checking plug-in

3

Replay algorithm

Event Log

Replay

Petri net

Alignments

ABBCEABCDE

1 2

<<uses>> <<uses>>

<<uses>>

// pseudocode1. Map event classes to transitions2. Check existence of Final Marking, create one if user wants3. Choose replay algorithm4. Execute replay algorithm

Page 4: 6  Lessons Learned Case Study: Replay a Log on Petri Net for Conformance Checking plug-in

4

1. Reusing object via connection

Page 5: 6  Lessons Learned Case Study: Replay a Log on Petri Net for Conformance Checking plug-in

5

Check connection using ConnectionManager

• Mapping is stored in EvClassLogPetrinetConnection

Event Log

Petri net

ABBCEABCDE

EvClassLogPetrinetConnection

Replay

connectionManager.getFirstConnection(EvClassLogPetrinetConnection.class,…)

<<uses>>

<<uses>>

<<uses>>

EvClassLogPetrinetConnectionFactory

@ConnectionObjectFactory

If no connection, automatically create one

Page 6: 6  Lessons Learned Case Study: Replay a Log on Petri Net for Conformance Checking plug-in

6

Replay algorithm

Event Log

Replay

Petri net

Alignments

ABBCEABCDE

1 2

<<uses>> <<uses>>

<<uses>>

// pseudocode1. Map event classes to transitions2. Check existence of Final Marking, create one if user wants3. Choose replay algorithm4. Execute replay algorithm

Page 7: 6  Lessons Learned Case Study: Replay a Log on Petri Net for Conformance Checking plug-in

7

Construct new objects, not just connection

• Constructing Final Marking object using existing plugin

Petri net FinalMarkingConnection

Replay

@ConnectionObjectFactoryNew object needs to be created

pluginManager.find(ConnectionObjectFactory.class, FinalMarkingConnection.class,...);

…childContext = context.createChildContext(...);…pluginParameterBinding.invoke(childContext, net);…childContext.getParentContext().deleteChild(childContext);

Create Final Marking

Marking

<<uses>>

<<uses>>

Page 8: 6  Lessons Learned Case Study: Replay a Log on Petri Net for Conformance Checking plug-in

8

Overview

Event Log AlignmentsReplay Visualizations

Petri net 1 2 3 …

ABBCEABCDE

<<uses>><<uses>> <<uses>> <<uses>>

<<uses>>

Page 9: 6  Lessons Learned Case Study: Replay a Log on Petri Net for Conformance Checking plug-in

9

2. Use annotations to register variants

Page 10: 6  Lessons Learned Case Study: Replay a Log on Petri Net for Conformance Checking plug-in

10

Designing variants using interface

Event Log

Replay

Petri net

Alignments

ABBCEABCDE

IPNReplayAlgorithm+ replayLog

+ isReqWOParameterSatisfied+ isAllReqSatisfied

+ constructParamProvider

IPNReplayParamProvider+ constructReplayParameter

+ constructGUI

IPNReplayParameter+ isCreatingConn

+ isGUIMode+ setInitialMarking

<<uses>>

<<uses>>

<<uses>>

1 2

<<uses>> <<uses>>

<<uses>>

Page 11: 6  Lessons Learned Case Study: Replay a Log on Petri Net for Conformance Checking plug-in

11

Register new algorithms without changing GUI code

• Create annotation @PNReplayAlgorithm• Annotate all algorithms with @PNReplayAlgorithm• Use the annotation in replay GUI to register algorithms

Event Log

Replay

Petri net

Alignments

ABBCEABCDE

1 2

<<uses>> <<uses>>

<<uses>>

@PNReplayAlgorithm @PNReplayAlgorithm @PNReplayAlgorithm

pluginManager.getKnownClassAnnotatedWith(PNReplayAlgorithm.class)

Page 12: 6  Lessons Learned Case Study: Replay a Log on Petri Net for Conformance Checking plug-in

12

Overview

Event Log AlignmentsReplay Visualizations

Petri net 1 2 3 …

ABBCEABCDE

<<uses>><<uses>> <<uses>> <<uses>>

<<uses>>

Page 13: 6  Lessons Learned Case Study: Replay a Log on Petri Net for Conformance Checking plug-in

13

3. Visual Analytics

<<uses>><<uses>>

<<uses>>

<<uses>>

<<uses>>

Page 14: 6  Lessons Learned Case Study: Replay a Log on Petri Net for Conformance Checking plug-in

14

Visualization without heavy computation

• Simply create visualization panel

Project Alignment to Log

Model Projected With Alignments

Alignments

Page 15: 6  Lessons Learned Case Study: Replay a Log on Petri Net for Conformance Checking plug-in

15

Visualization may require extra computation

• Computation is postponed until visualization is needed

Alignments

xFrequent Movement Sets Mining for Deviation Analysis

Frequent Item Sets need to be calculated

Page 16: 6  Lessons Learned Case Study: Replay a Log on Petri Net for Conformance Checking plug-in

16

Visualization using another package

• Possible because of separated visualization panel class• Don’t forget to add package dependencies

Alignments

Trace Alignment of Alignments

GuideTreeMinerTraceAlignmentWithGuideTree

<<uses>> <<uses>>

Page 17: 6  Lessons Learned Case Study: Replay a Log on Petri Net for Conformance Checking plug-in

17

UI Components in the Widgets package

Widgets

Page 18: 6  Lessons Learned Case Study: Replay a Log on Petri Net for Conformance Checking plug-in

18

4. Create reusable side-object as needed

ProvidedObjectHelper.publish(context, “Log of shown cases”, log, XLog.class, true);

Page 19: 6  Lessons Learned Case Study: Replay a Log on Petri Net for Conformance Checking plug-in

19

Overview

Event Log AlignmentsReplay Visualizations

Petri net 1 2 3 …

ABBCEABCDE

<<uses>><<uses>> <<uses>> <<uses>>

<<uses>>

Page 20: 6  Lessons Learned Case Study: Replay a Log on Petri Net for Conformance Checking plug-in

20

5. Keep package size as small as possible

Page 21: 6  Lessons Learned Case Study: Replay a Log on Petri Net for Conformance Checking plug-in

21

Package distribution

Event Log AlignmentsReplay Visualizations

Petri net 1 2 3 …

ABBCEABCDE

<<uses>><<uses>> <<uses>> <<uses>>

<<uses>>

GuideTreeMiner & TraceAlignmentWithGuideTree

<<uses>>

<<uses>>

PNetReplayer

PNetAlignmentAnalysis

<<uses>>

Page 22: 6  Lessons Learned Case Study: Replay a Log on Petri Net for Conformance Checking plug-in

22

6. Make your code reusable

Page 23: 6  Lessons Learned Case Study: Replay a Log on Petri Net for Conformance Checking plug-in

23

Improving reusability of your code

• Provide variants without GUI and connection

PNetReplayer

ETConformance

CNetReplayer

Compliance

<<uses>>

context.tryToFindOrConstructFirstObject(...)

replayAlgorithm.replayLog(...)

<<uses>>

<<uses>>

replayAlgorithm.replayLog(...)

Page 24: 6  Lessons Learned Case Study: Replay a Log on Petri Net for Conformance Checking plug-in

24

Take home points

• Designing plugin• Create a non-GUI version of your plugin• Reuse objects• Utilize interface and annotations to cover variants

• Designing GUI• Separate visualization panel• Reuse code: see Widgets package

• Designing package• Keep it small

Page 25: 6  Lessons Learned Case Study: Replay a Log on Petri Net for Conformance Checking plug-in

25

Q&A