org.processmining.analysis.conformance
Class DiagnosticPetriNet

java.lang.Object
  extended by att.grappa.Element
      extended by att.grappa.Subgraph
          extended by att.grappa.Graph
              extended by org.processmining.framework.models.ModelGraph
                  extended by org.processmining.framework.models.petrinet.PetriNet
                      extended by org.processmining.framework.models.petrinet.algorithms.logReplay.ReplayedPetriNet
                          extended by org.processmining.analysis.conformance.DiagnosticPetriNet
All Implemented Interfaces:
att.grappa.GrappaConstants, java.lang.Cloneable, java.util.Comparator, DotFileWriter
Direct Known Subclasses:
BehAppropriatenessVisualization, FitnessLogTraceVisualization, FitnessVisualization, StrAppropriatenessVisualization

public class DiagnosticPetriNet
extends ReplayedPetriNet

This class is used to enhance the petri net model with conformance check results. Derive subclasses to create custom visualizations of these.

Author:
arozinat

Field Summary
protected  DiagnosticLogReader myReplayedLog
          The log reader is necessary as soon as the log perspective is to be visualized.
 
Fields inherited from class org.processmining.framework.models.ModelGraph
DOESNTCROSS_REGION, ENTERS_REGION, EXITS_REGION, identifier, nodeMapping, vertices, visualObject
 
Fields inherited from class att.grappa.Graph
INDENT_STRING, REFCNTXT
 
Fields inherited from class att.grappa.Subgraph
currentSelection, defaultNamePrefix
 
Fields inherited from class att.grappa.Element
counter, highlight, linewidth, object, printAllAttributes, printDefaultAttributes, usePrintList, visible
 
Fields inherited from interface att.grappa.GrappaConstants
_NO_TYPE, ANONYMOUS_PREFIX, BBOX_ATTR, BBOX_HASH, BOX_SHAPE, BOX_TYPE, CLUSTERRANK_ATTR, COLOR_ATTR, COLOR_HASH, COLOR_TYPE, CUSTOM_ATTR, CUSTOM_HASH, CUSTOM_SHAPE, DELETION_MASK, DIAMOND_SHAPE, DIR_ATTR, DIR_HASH, DIR_TYPE, DISTORTION_ATTR, DISTORTION_HASH, DOUBLE_TYPE, DOUBLECIRCLE_SHAPE, DOUBLEOCTAGON_SHAPE, EDGE, EGG_SHAPE, FILLCOLOR_ATTR, FILLCOLOR_HASH, FONTCOLOR_ATTR, FONTCOLOR_HASH, FONTNAME_ATTR, FONTNAME_HASH, FONTSIZE_ATTR, FONTSIZE_HASH, FONTSTYLE_ATTR, FONTSTYLE_HASH, FONTSTYLE_TYPE, GRAPPA_BACKGROUND_COLOR_ATTR, GRAPPA_BACKGROUND_COLOR_HASH, GRAPPA_DELETION_STYLE_ATTR, GRAPPA_DELETION_STYLE_HASH, GRAPPA_FONTSIZE_ADJUSTMENT_ATTR, GRAPPA_FONTSIZE_ADJUSTMENT_HASH, GRAPPA_SELECTION_STYLE_ATTR, GRAPPA_SELECTION_STYLE_HASH, GRAPPA_SHAPE, HASHLIST_TYPE, HEIGHT_ATTR, HEIGHT_HASH, HEXAGON_SHAPE, HIGHLIGHT_MASK, HIGHLIGHT_OFF, HIGHLIGHT_ON, HIGHLIGHT_TOGGLE, HOUSE_SHAPE, IDENTXFRM, IMAGE_ATTR, IMAGE_HASH, INTEGER_TYPE, INVERTEDHOUSE_SHAPE, INVERTEDTRAPEZIUM_SHAPE, INVERTEDTRIANGLE_SHAPE, LABEL_ATTR, LABEL_HASH, LINE_SHAPE, LINE_TYPE, LOG10, LP_ATTR, LP_HASH, MARGIN_ATTR, MARGIN_HASH, MCIRCLE_SHAPE, MCLIMIT_ATTR, MCLIMIT_HASH, MDIAMOND_SHAPE, MINBOX_ATTR, MINBOX_HASH, MINLEN_ATTR, MINLEN_HASH, MINSIZE_ATTR, MINSIZE_HASH, MRECORD_SHAPE, MSQUARE_SHAPE, NBSP, NEW_LINE, NO_SHAPE, NODE, NODESEP_ATTR, NODESEP_HASH, OCTAGON_SHAPE, ORIENTATION_ATTR, ORIENTATION_HASH, OVAL_SHAPE, PACKAGE_PREFIX, PARALLELOGRAM_SHAPE, PATCH_ATTR, PATCH_HASH, PENTAGON_SHAPE, PERIPHERIES_ATTR, PERIPHERIES_HASH, PERIPHERY_GAP, PKG_LOWER, PKG_UPLOW, PKG_UPPER, PLAINTEXT_SHAPE, POINT_TYPE, PointsPerInch, POLYGON_SHAPE, POS_ATTR, POS_HASH, PRINTLIST_ATTR, PRINTLIST_HASH, RANKDIR_ATTR, RANKDIR_HASH, RANKSEP_ATTR, RANKSEP_HASH, RECORD_SHAPE, RECTS_ATTR, RECTS_HASH, ROTATION_ATTR, ROTATION_HASH, ROUNDEDBOX_SHAPE, SELECTION_MASK, SHAPE_ATTR, SHAPE_HASH, SHAPE_MASK, SHAPE_TYPE, SIDES_ATTR, SIDES_HASH, SIZE_ATTR, SIZE_HASH, SIZE_TYPE, SKEW_ATTR, SKEW_HASH, STRING_TYPE, STYLE_ATTR, STYLE_HASH, STYLE_TYPE, SUBGRAPH, SYSTEM, TAG_ATTR, TAG_HASH, TIP_ATTR, TIP_HASH, TRAPEZIUM_SHAPE, TRIANGLE_SHAPE, TRIPLEOCTAGON_SHAPE, TYPES_SHIFT, WEIGHT_ATTR, WEIGHT_HASH, WIDTH_ATTR, WIDTH_HASH
 
Constructor Summary
DiagnosticPetriNet(DiagnosticPetriNet copyTemplate)
          Copy Constructor mimics the clone method and will be called by sub classes when the visualization state has changed in ConformanceCheckResult.
DiagnosticPetriNet(PetriNet net, java.util.ArrayList caseIDs, DiagnosticLogReader replayedLog)
          Constructs a DiagnosticPetriNet out of an ordinary one.
 
Method Summary
 int getMissingTokens()
          Determine the amount of all missing tokens along all the log replay.
 int getRemainingTokens()
          Determine the amount of all remaining tokens along all the log replay.
protected  PNEdge makeEdge(PNEdge template, Place sourceNode, Transition targetNode, ReplayedPetriNet targetNet, java.util.ArrayList caseIDs)
          Reproduces an edge based on the given edge (Direction: Place -> Transition). Produces a DiagnosticPNEdge.
protected  PNEdge makeEdge(PNEdge template, Transition sourceNode, Place targetNode, ReplayedPetriNet targetNet, java.util.ArrayList caseIDs)
          Reproduces an edge based on the given edge (Direction: Transition -> Place). Produces a DiagnosticPNEdge.
protected  Place makePlace(Place template, ReplayedPetriNet targetNet, java.util.ArrayList caseIDs)
          Reproduces a place based on the given place. Produces a DiagnosticPlace.
protected  Transition makeTransition(Transition template, ReplayedPetriNet targetNet, java.util.ArrayList caseIDs)
          Reproduces a transition based on the given transition. Produces a DiagnosticTransition.
 
Methods inherited from class org.processmining.framework.models.petrinet.algorithms.logReplay.ReplayedPetriNet
hasEnabledInvisibleTasks
 
Methods inherited from class org.processmining.framework.models.petrinet.PetriNet
addAndLinkEdge, addAndLinkEdge, addAndLinkPlace, addAndLinkTransition, addCluster, addEdge, addEdge, addNet, addPlace, addPlace, addToken, addTransition, addTransition, clone, delPlace, delTransition, extractNet, findPlace, findPlace, findRandomTransition, findTransition, findTransition, findTransitions, finishDotWriting, getClusters, getIncidenceMatrix, getInputArcsTransitionsIncidenceMatrix, getInvisibleTasks, getNodes, getNumberOfInvisibleTasks, getNumberOfNonDuplicateTasks, getNumberOfVisibleTasks, getOutputArcsTransitionsIncidenceMatrix, getPlaces, getSink, getSource, getTransitions, getVisibleTasks, initDotWriting, isAcyclic, makeClusters, mergePlaces, numberOfNodes, numberOfPlaces, numberOfTransitions, removeVertex, Test, writeClustersToDot, writeEdgesToDot, writePlacesToDot, writeToDot, writeTransitionsToDot
 
Methods inherited from class org.processmining.framework.models.ModelGraph
addEdge, addEdge, addVertex, calculateAllNonCompRegions, calculateAllRegions, calculateMinimalRegions, calculateRegionsMaxSize, delEdge, getAllEdges, getEdgeObjects, getEdges, getEdgesBetween, getFirstEdge, getGrappaVisualization, getIdentifier, getNumberOfEdges, getPostRegions, getPreRegions, getShortestDistances, getVerticeList, getWeightedArcs, reduceTransitively, removeEdge, removeEdges, setIdentifier, setWeightedArcs
 
Methods inherited from class att.grappa.Graph
addPanel, attributeType, buildShapes, decrementIndent, dropcloth, getErrorWriter, getGlobalAttribute, getGlobalAttributeKeys, getGlobalAttributePairs, getGlobalAttributeSize, getGrappaAttribute, getGrappaAttributeKeys, getGrappaAttributeValue, getId, getIndent, getSynchronizePaint, getToolTipText, incrementIndent, isDirected, isEditable, isMenuable, isSelectable, isStrict, paintImmediately, printError, printError, printGraph, printGraph, removePanel, repaint, reset, reset, resync, setEditable, setErrorWriter, setGrappaAttribute, setMenuable, setSelectable, setSynchronizePaint, setToolTipText, validGrappaAttributeKey
 
Methods inherited from class att.grappa.Subgraph
addEdge, addNode, addSubgraph, addTypeTag, clearPatchWork, compare, computePatchWork, countOfElements, countOfLocalElements, createElement, edgeElements, elements, elements, equals, findEdgeByName, findNodeByName, findSubgraphByName, getBoundingBox, getEdgeAttribute, getEdgeAttributeKeys, getEdgeAttributePairs, getEdgeAttributeValue, getNodeAttribute, getNodeAttributeKeys, getNodeAttributePairs, getNodeAttributeValue, getShowEdgeLabels, getShowNodeLabels, getShowSubgraphLabels, getType, hasEmptySubgraphs, hasTypeTag, hasTypeTags, isCluster, isLR, isRoot, isSubgraph, nodeElements, patchWork, preparePatchWork, printSubgraph, removeEdge, removeEmptySubgraphs, removeNode, removeSubgraph, removeTypeTag, removeTypeTags, resetBoundingBox, setAttribute, setAttribute, setEdgeAttribute, setEdgeAttribute, setName, setNodeAttribute, setNodeAttribute, setShowEdgeLabels, setShowNodeLabels, setShowSubgraphLabels, subgraphElements, vectorOfElements
 
Methods inherited from class att.grappa.Element
addTag, attrNotOfInterest, attrOfInterest, bdfs, buildShape, canonString, canonValue, clearBBox, delete, getAttribute, getAttributePairs, getAttributeValue, getDefaultAttribute, getDefaultAttribute, getGraph, getGrappaNexus, getId, getIdKey, getLocalAttribute, getLocalAttributeKeys, getLocalAttributePairs, getName, getSubgraph, getThisAttribute, getThisAttributeValue, hasAttributeForKey, hasDefaultTag, hasDefaultTags, hasLocalTag, hasLocalTags, hasTag, hasTags, isEdge, isNode, isOfInterest, listAttrsOfInterest, printElement, removeTag, removeTags, setDefaultAttribute, setDefaultAttribute, setDefaultAttribute, setDefaultAttribute, setIdKey, setSubgraph, setUserAttributeType, toString, typeString
 
Methods inherited from class java.lang.Object
finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

myReplayedLog

protected DiagnosticLogReader myReplayedLog
The log reader is necessary as soon as the log perspective is to be visualized. TODO - think about how this can be done in better way (writeToDot mechanism must be there)

Constructor Detail

DiagnosticPetriNet

public DiagnosticPetriNet(PetriNet net,
                          java.util.ArrayList caseIDs,
                          DiagnosticLogReader replayedLog)
Constructs a DiagnosticPetriNet out of an ordinary one.

Parameters:
net - the Petri net that is re-established in the replayed net
caseIDs - a list of strings containing the IDs of those instances that want to store diagnostic information

DiagnosticPetriNet

public DiagnosticPetriNet(DiagnosticPetriNet copyTemplate)
Copy Constructor mimics the clone method and will be called by sub classes when the visualization state has changed in ConformanceCheckResult. Note that a deep copy with respect to the Petri net elements is created, i.e., the places, transitions and edges will be different objects afterwards. Nevertheless, the list of selected instances and the associated diagnostic log are reassigned and do not get cloned.

Parameters:
copyTemplate - The Petri net containing all the diagnostic information that should be preserved.
Method Detail

makeTransition

protected Transition makeTransition(Transition template,
                                    ReplayedPetriNet targetNet,
                                    java.util.ArrayList caseIDs)
Reproduces a transition based on the given transition.
Should be overridden by subclasses so that they can build up their own diagnostic data structures instead. Produces a DiagnosticTransition.

Overrides:
makeTransition in class ReplayedPetriNet
Parameters:
template - the Transition serving as a template for the new Transition
targetNet - the ReplayedPetriNet to which the new transition belongs to
caseIDs - the list of trace IDs for initializing diagnostic data structures
Returns:
the reproduced Transition

makePlace

protected Place makePlace(Place template,
                          ReplayedPetriNet targetNet,
                          java.util.ArrayList caseIDs)
Reproduces a place based on the given place.
Should be overridden by subclasses so that they can build up their own diagnostic data structures instead. Produces a DiagnosticPlace.

Overrides:
makePlace in class ReplayedPetriNet
Parameters:
template - the Place serving as a template for the new Place
targetNet - the ReplayedPetriNet to which the new place belongs to
caseIDs - the list of trace IDs for initializing diagnostic data structures
Returns:
the reproduced Place

makeEdge

protected PNEdge makeEdge(PNEdge template,
                          Place sourceNode,
                          Transition targetNode,
                          ReplayedPetriNet targetNet,
                          java.util.ArrayList caseIDs)
Reproduces an edge based on the given edge (Direction: Place -> Transition).
Should be overridden by subclasses so that they can build up their own diagnostic data structures instead. Produces a DiagnosticPNEdge.

Overrides:
makeEdge in class ReplayedPetriNet
Parameters:
template - the PNEdge serving as a template for the new PNEdge
sourceNode - the Place being the source of the new edge
targetNode - the Transition being the target of the new edge
targetNet - the ReplayedPetriNet to which the new place belongs to
caseIDs - the list of trace IDs for initializing diagnostic data structures
Returns:
the reproduced PNEdge

makeEdge

protected PNEdge makeEdge(PNEdge template,
                          Transition sourceNode,
                          Place targetNode,
                          ReplayedPetriNet targetNet,
                          java.util.ArrayList caseIDs)
Reproduces an edge based on the given edge (Direction: Transition -> Place).
Should be overridden by subclasses so that they can build up their own diagnostic data structures instead. Produces a DiagnosticPNEdge.

Overrides:
makeEdge in class ReplayedPetriNet
Parameters:
template - the PNEdge serving as a template for the new PNEdge
sourceNode - the Transition being the source of the new edge
targetNode - the Place being the target of the new edge
targetNet - the ReplayedPetriNet to which the new place belongs to
caseIDs - the list of trace IDs for initializing diagnostic data structures
Returns:
the reproduced PNEdge

getMissingTokens

public int getMissingTokens()
Determine the amount of all missing tokens along all the log replay.

Returns:
The amount of missing tokens (sum up for all places in the model).

getRemainingTokens

public int getRemainingTokens()
Determine the amount of all remaining tokens along all the log replay.

Returns:
The amount of remaining tokens for log trace pi (sum up for all places in the model).