22
33import org .deckfour .xes .model .XLog ;
44import org .processmining .acceptingpetrinet .models .AcceptingPetriNet ;
5+ import org .processmining .placebasedlpmdiscovery .model .Place ;
6+ import org .processmining .placebasedlpmdiscovery .model .Transition ;
57import org .processmining .placebasedlpmdiscovery .prom .placediscovery .PlaceDiscoveryResult ;
68import org .processmining .placebasedlpmdiscovery .prom .placediscovery .StandardPlaceDiscoveryResult ;
79import org .processmining .placebasedlpmdiscovery .prom .placediscovery .converters .place .AbstractPlaceConverter ;
1012import org .processmining .specpp .composition .BasePlaceComposition ;
1113import org .processmining .specpp .config .parameters .ExecutionParameters ;
1214import org .processmining .specpp .datastructures .petri .CollectionOfPlaces ;
13- import org .processmining .specpp .datastructures .petri .Place ;
1415import org .processmining .specpp .datastructures .petri .ProMPetrinetWrapper ;
1516import org .processmining .specpp .orchestra .ExecutionEnvironment ;
1617import org .processmining .specpp .preprocessing .InputDataBundle ;
1718
1819import java .time .Duration ;
20+ import java .util .HashSet ;
21+ import java .util .Set ;
1922
2023public class SPECppPlaceDiscoveryAlgorithm extends PlaceDiscoveryAlgorithm <SPECppPlaceDiscoveryParameters ,
2124 AcceptingPetriNet > {
@@ -28,31 +31,36 @@ public SPECppPlaceDiscoveryAlgorithm(AbstractPlaceConverter<AcceptingPetriNet> c
2831 @ Override
2932 public PlaceDiscoveryResult getPlaces (XLog log ) {
3033 InputDataBundle input = InputDataBundle .process (log , parameters .getConfigBundle ().getInputProcessingConfig ());
31- SPECpp <Place , BasePlaceComposition , CollectionOfPlaces , ProMPetrinetWrapper > specpp =
34+ SPECpp <org . processmining . specpp . datastructures . petri . Place , BasePlaceComposition , CollectionOfPlaces , ProMPetrinetWrapper > specpp =
3235 SPECpp .build (parameters .getConfigBundle (), input );
3336
34- ExecutionEnvironment .SPECppExecution <Place , BasePlaceComposition , CollectionOfPlaces , ProMPetrinetWrapper > execution ;
37+ ExecutionEnvironment .SPECppExecution <org . processmining . specpp . datastructures . petri . Place , BasePlaceComposition , CollectionOfPlaces , ProMPetrinetWrapper > execution ;
3538 try (ExecutionEnvironment ee = new ExecutionEnvironment (Runtime .getRuntime ().availableProcessors ())) {
3639 execution = ee .execute (specpp , ExecutionParameters .timeouts (
3740 new ExecutionParameters .ExecutionTimeLimits (
38- Duration .ofMinutes (5 ), Duration .ofMinutes (50 ), Duration .ofMinutes (60 ))));
39-
40- ee .addCompletionCallback (execution , ex -> {
41- ProMPetrinetWrapper petrinetWrapper = ex .getSPECpp ().getPostProcessedResult ();
42- System .out .println (petrinetWrapper == null ? "null" : "not null" +
43- " num places: " + petrinetWrapper .getPlaces ().size () +
44- "num transitions: " + petrinetWrapper .getTransitions ().size () +
45- "num edges: " + petrinetWrapper .getEdges ().size ());
46- });
41+ Duration .ofMinutes (5 ), Duration .ofMinutes (1 ), Duration .ofMinutes (60 ))));
4742
4843 ee .join ();
49- StandardPlaceDiscoveryResult result = new StandardPlaceDiscoveryResult ();
50- AcceptingPetriNet acceptingPetriNet = execution .getSPECpp ().getPostProcessedResult ().asAcceptingPetrinet ();
51- result .setPlaces (this .converter .convert (acceptingPetriNet ));
52- result .setLog (log );
53- return result ;
44+ CollectionOfPlaces specppPlaces = execution .getSPECpp ().getInitialResult ();
45+ System .out .println (specppPlaces .size ());
46+
47+ return getStandardPlaceDiscoveryResult (log , specppPlaces );
5448 } catch (InterruptedException e ) {
5549 throw new RuntimeException (e );
5650 }
5751 }
52+
53+ private static StandardPlaceDiscoveryResult getStandardPlaceDiscoveryResult (XLog log , CollectionOfPlaces specppPlaces ) {
54+ StandardPlaceDiscoveryResult result = new StandardPlaceDiscoveryResult ();
55+ Set <Place > placeSet = new HashSet <>();
56+ specppPlaces .getPlaces ().forEach (p -> {
57+ Place place = new Place ();
58+ p .preset ().forEach (t -> place .addInputTransition (new Transition (t .toString (), false )));
59+ p .postset ().forEach (t -> place .addOutputTransition (new Transition (t .toString (), false )));
60+ placeSet .add (place );
61+ });
62+ result .setPlaces (placeSet );
63+ result .setLog (log );
64+ return result ;
65+ }
5866}
0 commit comments