Skip to content

Commit fd85d63

Browse files
authored
Testing a start-to-end lpm discovery for trace abc and two place nets a | b and a | c
1 parent 3be1471 commit fd85d63

File tree

6 files changed

+96
-3
lines changed

6 files changed

+96
-3
lines changed

.github/workflows/ant.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ name: Java CI
66
on:
77
push:
88
branches: [ "main" ]
9-
pull_request:
10-
branches: [ "main" ]
119
workflow_dispatch:
1210

1311
jobs:

ivy.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@
3737
<dependency conf="lib->default" org="com.google.inject.extensions" name="guice-assistedinject" rev="4.0" />
3838
<dependency conf="lib->default" org="com.google.inject.extensions" name="guice-multibindings" rev="4.0" />
3939
<dependency conf="lib->default" org="com.github.haifengl" name="smile-core" rev="3.0.2"/>
40+
<!-- https://mvnrepository.com/artifact/org.assertj/assertj-core -->
41+
<dependency org="org.assertj" name="assertj-core" rev="3.24.2"/>
4042
<!-- <dependency org="com.github.beamline" name="simple-pnml" rev="0.0.2"/>-->
4143
<!-- dependency conf="lib->default" org="org.reflections" name="reflections" rev="0.9.10" /-->
4244
<!-- Third party library downloaded from ProM library. -->

src/org/processmining/placebasedlpmdiscovery/model/logs/XLogWrapper.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,16 @@
11
package org.processmining.placebasedlpmdiscovery.model.logs;
22

3+
import org.deckfour.xes.extension.std.XConceptExtension;
4+
import org.deckfour.xes.factory.XFactory;
5+
import org.deckfour.xes.factory.XFactoryRegistry;
6+
import org.deckfour.xes.model.XEvent;
37
import org.deckfour.xes.model.XLog;
8+
import org.deckfour.xes.model.XTrace;
49
import org.processmining.placebasedlpmdiscovery.model.logs.activities.Activity;
510
import org.processmining.placebasedlpmdiscovery.model.logs.activities.ActivityCache;
611
import org.processmining.placebasedlpmdiscovery.utils.LogUtils;
712

13+
import java.util.List;
814
import java.util.Set;
915
import java.util.stream.Collectors;
1016

@@ -16,6 +22,22 @@ public XLogWrapper(XLog log) {
1622
this.log = log;
1723
}
1824

25+
public static XLogWrapper fromListOfTracesAsListStrings(List<List<String>> traces) {
26+
XFactory factory = XFactoryRegistry.instance().currentDefault();
27+
XLog log = factory.createLog();
28+
29+
for (List<String> trace : traces) {
30+
XTrace xTrace = factory.createTrace();
31+
for (String event : trace) {
32+
XEvent xEvent = factory.createEvent();
33+
XConceptExtension.instance().assignName(xEvent, event);
34+
xTrace.add(xEvent);
35+
}
36+
log.add(xTrace);
37+
}
38+
return new XLogWrapper(log);
39+
}
40+
1941
@Override
2042
public Set<Activity> getActivities() {
2143
return LogUtils.getActivitiesFromLog(this.log).stream().map(l -> ActivityCache.getInstance().getActivity(l)).collect(Collectors.toSet());

src/org/processmining/placebasedlpmdiscovery/prom/PlacesProvider.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,13 @@ static PlacesProvider specpp() {
2626
return new DiscoveryPlacesProvider(parameters.getAlgorithm(factory));
2727
}
2828

29+
static PlacesProvider fromFile(String fileName) {
30+
return new FromFilePlacesProvider(fileName);
31+
}
32+
33+
static PlacesProvider fromSet(Set<Place> places) {
34+
return log -> places;
35+
}
36+
2937
Set<Place> from(XLog log);
3038
}
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
import org.assertj.core.api.Assertions;
2+
import org.deckfour.xes.model.XLog;
3+
import org.junit.Assert;
4+
import org.junit.BeforeClass;
5+
import org.junit.Test;
6+
import org.processmining.placebasedlpmdiscovery.lpmdiscovery.LPMDiscovery;
7+
import org.processmining.placebasedlpmdiscovery.lpmdiscovery.PlaceBasedLPMDiscovery;
8+
import org.processmining.placebasedlpmdiscovery.model.LocalProcessModel;
9+
import org.processmining.placebasedlpmdiscovery.model.Place;
10+
import org.processmining.placebasedlpmdiscovery.model.discovery.LPMDiscoveryResult;
11+
import org.processmining.placebasedlpmdiscovery.model.logs.XLogWrapper;
12+
import org.processmining.placebasedlpmdiscovery.prom.PlacesProvider;
13+
14+
import java.util.Arrays;
15+
import java.util.Collections;
16+
import java.util.HashSet;
17+
import java.util.Set;
18+
19+
public class TestPlaceBasedLPMDiscoveryGivenLogAbcWithPlacesAbAc {
20+
21+
private static PlacesProvider placesProvider;
22+
private static XLog eventLog;
23+
24+
@BeforeClass
25+
public static void setup() {
26+
Set<Place> places = new HashSet<>();
27+
places.add(Place.from("a | b"));
28+
places.add(Place.from("a | c"));
29+
placesProvider = PlacesProvider.fromSet(places);
30+
31+
XLogWrapper logWrapper = XLogWrapper.fromListOfTracesAsListStrings(Collections.singletonList(
32+
Arrays.asList("a", "b", "c")
33+
));
34+
eventLog = logWrapper.getOriginalLog();
35+
}
36+
37+
@Test
38+
public void givenDefault_whenFrom_thenLPMsAbAc() {
39+
// given
40+
LPMDiscovery lpmDiscovery = new PlaceBasedLPMDiscovery(placesProvider);
41+
42+
// when
43+
LPMDiscoveryResult result = lpmDiscovery.from(eventLog);
44+
45+
// then
46+
Assert.assertEquals(1, result.getAllLPMs().size());
47+
Assertions.assertThat(result.getAllLPMs())
48+
.extracting(LocalProcessModel::getShortString)
49+
.containsExactlyInAnyOrder("(a | b)(a | c)"); // LPMs need to contain at least two places
50+
}
51+
52+
@Test
53+
public void givenDefaultWithPlaceLimit_whenFrom_thenLPMsEmpty() {
54+
// given
55+
LPMDiscovery lpmDiscovery = new PlaceBasedLPMDiscovery(placesProvider, 1);
56+
57+
// when
58+
LPMDiscoveryResult result = lpmDiscovery.from(eventLog);
59+
60+
// then
61+
Assert.assertTrue(result.getAllLPMs().isEmpty()); // LPMs need to contain at least two places
62+
}
63+
}

tests/src/org/processmining/placebasedlpmdiscovery/replayer/ReplayerForReplayableLocalProcessModelTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ public void givenPredefinedLPMs2_whenFindAllPaths_thenSameWithPredefinedLanguage
116116
// act
117117
Map<String, Set<List<String>>> actualPaths = new HashMap<>();
118118
for (String lpmKey : modelsWithPaths.keySet()) {
119-
actualPaths.put(lpmKey, Replayer.findAllPaths(10, LocalProcessModel.from(lpmKey)));
119+
actualPaths.put(lpmKey, ReplayableLocalProcessModelReplayer.findAllPaths(10, LocalProcessModel.from(lpmKey)));
120120
}
121121

122122
// test

0 commit comments

Comments
 (0)