7 Lessons Learned Case Study: Replay a Log on Petri Net for Conformance Checking plug-in
description
Transcript of 7 Lessons Learned Case Study: Replay a Log on Petri Net for Conformance Checking plug-in
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
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
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
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
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>>
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
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>>
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