7 lessons learned case study: replay a log on petri net for conformance checking plug-in

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

Upload: naomi

Post on 22-Mar-2016

104 views

Category:

Documents


0 download

DESCRIPTION

Hasselt, 28 Sept 2012. 7 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

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

A. Adriansyah

Hasselt, 28 Sept 2012

ProM Workshop

2

Overview

Event Log AlignmentsReplay Visualizations

Petri net

ABBCEABCDE

1 2 3 …

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

<<uses>>

<<uses>>

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

4

1. Reuse object via connection

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

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

7

2. Create connection and objects altogether

8

Construct new objects, not just connection

• Constructing Final Marking object using existing plugin

Petri net

FinalMarkingConnection

@ConnectionObjectFactory New object needs to be created

Replay colPairOfIntPluginParamBinding = pluginManager.find(ConnectionObjectFactory.class,

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

Create Final Marking

Marking

<<uses>>

<<uses>>

9

Overview

Event Log AlignmentsReplay Visualizations

Petri net 1 2 3 …

ABBCEABCDE

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

<<uses>>

<<uses>>

1 2

10

3. Use annotations to register variants

11

Designing variants using interface

Event Log

Replay

Petri net

Alignments

ABBCEABCDE

IPNReplayAlgorithm+ replayLog

+ isReqWOParameterSatisfied+ isAllReqSatisfied

+ constructParamProvider

<<uses>>

IPNReplayParameter+ isCreatingConn

+ isGUIMode+ setInitialMarking

<<uses>>

IPNReplayParamProvider+ constructReplayParameter

+ constructGUI

<<uses>>

1 2

<<uses>> <<uses>>

<<uses>>

12

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)

13

Overview

Event Log AlignmentsReplay Visualizations

Petri net 1 2 3 …

ABBCEABCDE

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

<<uses>>

<<uses>>

1 2

3

14

4. Visual Analytics

<<uses>><<uses>>

<<uses>>

<<uses>>

<<uses>>

15

Visualization without heavy computation

• Simply create visualization panel

Project Alignment to Log

Model Projected With Alignments

Alignments

16

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

17

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>>

18

GUI Components in the Widgets package

Widgets

19

5. Create reusable side-object as needed

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

20

Overview

Event Log AlignmentsReplay Visualizations

Petri net 1 2 3 …

ABBCEABCDE

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

<<uses>>

<<uses>>

1 2

3

4 5

21

6. Keep package size as small as possible

22

Package distribution

Event Log AlignmentsReplay Visualizations

Petri net 1 2 3 …

ABBCEABCDE

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

GuideTreeMiner & TraceAlignmentWithGuideTree

<<uses>>

<<uses>>

PNetReplayer

PNetAlignmentAnalysis

<<uses>>

<<uses>>

<<uses>>

<<uses>>

23

7. Make your code reusable

24

Improving reusability of your code

• Provide headless version and one without connection

PNetReplayer

ETConformance

CNetReplayer

Compliance

<<uses>>

context.tryToFindOrConstructFirstObject(...)

replayAlgorithm.replayLog(...)

<<uses>>

<<uses>>

replayAlgorithm.replayLog(...)

25

Overview

Event Log AlignmentsReplay Visualizations

Petri net 1 2 3 …

ABBCEABCDE

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

<<uses>>

<<uses>>

1 2

3

4 5

6 7

26

Take home points

• Designing plugin• Create a headless 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

27

Q&A