Skip to content
Snippets Groups Projects
Commit e54e539d authored by Andrea Burattin's avatar Andrea Burattin
Browse files

Rearranged some classes

parent d4ea9a0e
Branches
Tags
No related merge requests found
Showing
with 98 additions and 152 deletions
package rx.beamline.filters; package beamline.filters;
import org.deckfour.xes.extension.std.XConceptExtension; import org.deckfour.xes.extension.std.XConceptExtension;
import org.deckfour.xes.model.XAttributeLiteral; import org.deckfour.xes.model.XAttributeLiteral;
......
package rx.beamline.filters; package beamline.filters;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashSet; import java.util.HashSet;
......
package rx.beamline.filters; package beamline.filters;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashSet; import java.util.HashSet;
......
package rx.beamline.filters; package beamline.filters;
import org.deckfour.xes.extension.std.XConceptExtension; import org.deckfour.xes.extension.std.XConceptExtension;
import org.deckfour.xes.model.XAttributeLiteral; import org.deckfour.xes.model.XAttributeLiteral;
......
package rx.beamline.filters; package beamline.filters;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashSet; import java.util.HashSet;
......
package rx.beamline.filters; package beamline.filters;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashSet; import java.util.HashSet;
......
package rx.beamline.miners; package beamline.miners;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
...@@ -10,7 +10,7 @@ import org.apache.commons.lang3.tuple.Pair; ...@@ -10,7 +10,7 @@ import org.apache.commons.lang3.tuple.Pair;
import org.deckfour.xes.extension.std.XConceptExtension; import org.deckfour.xes.extension.std.XConceptExtension;
import org.deckfour.xes.model.XTrace; import org.deckfour.xes.model.XTrace;
import discovery.beamline.miners.basic.ProcessMap; import beamline.models.algorithms.StreamMiningAlgorithm;
public class DiscoveryMiner extends StreamMiningAlgorithm<XTrace, ProcessMap> { public class DiscoveryMiner extends StreamMiningAlgorithm<XTrace, ProcessMap> {
...@@ -22,6 +22,10 @@ public class DiscoveryMiner extends StreamMiningAlgorithm<XTrace, ProcessMap> { ...@@ -22,6 +22,10 @@ public class DiscoveryMiner extends StreamMiningAlgorithm<XTrace, ProcessMap> {
private double minDependency = 1d; private double minDependency = 1d;
private int modelRefreshRate = 0; private int modelRefreshRate = 0;
public DiscoveryMiner() {
}
public void setMinDependency(double minDependency) { public void setMinDependency(double minDependency) {
this.minDependency = minDependency; this.minDependency = minDependency;
} }
......
package discovery.beamline.miners.basic; package beamline.miners;
import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.lang3.tuple.Pair;
import beamline.graphviz.Dot; import beamline.graphviz.Dot;
import beamline.models.responses.GraphvizResponse; import beamline.models.responses.GraphvizResponse;
import discovery.beamline.view.graph.PMDotModel; import beamline.view.graph.PMDotModel;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
...@@ -19,7 +19,7 @@ public class ProcessMap implements GraphvizResponse { ...@@ -19,7 +19,7 @@ public class ProcessMap implements GraphvizResponse {
@Override @Override
public Dot generateDot() { public Dot generateDot() {
return new PMDotModel(this, discovery.beamline.view.graph.ColorPalette.Colors.BLUE); return new PMDotModel(this, beamline.view.graph.ColorPalette.Colors.BLUE);
} }
public ProcessMap() { public ProcessMap() {
......
package beamline.models.algorithms;
public interface HookEventProcessing {
public void trigger();
}
package beamline.models.algorithms; package beamline.models.algorithms;
import java.util.Iterator; import io.reactivex.rxjava3.annotations.NonNull;
import io.reactivex.rxjava3.functions.Consumer;
import beamline.models.responses.Response; public abstract class StreamMiningAlgorithm<T, K> implements Consumer<T> {
import beamline.models.streams.ObservableStream;
public abstract class StreamMiningAlgorithm<T, K extends Response> implements ObservableStream<K> {
private int processedEvents = 0; private int processedEvents = 0;
private K latestResponse; private K latestResponse;
private HookEventProcessing onBeforeEvent = null;
private HookEventProcessing onAfterEvent = null;
protected abstract K ingest(T event); public abstract K ingest(T event);
public K process(T event) { public void process(T event) {
this.processedEvents++; this.processedEvents++;
latestResponse = ingest(event); latestResponse = ingest(event);
return latestResponse;
} }
public int getProcessedEvents() { public int getProcessedEvents() {
...@@ -26,16 +25,27 @@ public abstract class StreamMiningAlgorithm<T, K extends Response> implements Ob ...@@ -26,16 +25,27 @@ public abstract class StreamMiningAlgorithm<T, K extends Response> implements Ob
return latestResponse; return latestResponse;
} }
public void setOnBeforeEvent(HookEventProcessing onBeforeEvent) {
this.onBeforeEvent = onBeforeEvent;
}
public void setOnAfterEvent(HookEventProcessing onAfterEvent) {
this.onAfterEvent = onAfterEvent;
}
protected K setLatestResponse(K latestResponse) { protected K setLatestResponse(K latestResponse) {
this.latestResponse = latestResponse; this.latestResponse = latestResponse;
return latestResponse; return latestResponse;
} }
@Override @Override
public void prepare() throws Exception { } public void accept(@NonNull T t) throws Throwable {
if (onBeforeEvent != null) {
@Override onBeforeEvent.trigger();
public Iterator<K> iterator() { }
return null; process(t);
if (onAfterEvent != null) {
onAfterEvent.trigger();
}
} }
} }
package beamline.models.filters;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.stream.Stream;
import org.deckfour.xes.model.XTrace;
public class EventNameFilterKeepOnly extends XesFilter {
private Set<String> activityNamesToKeep;
public EventNameFilterKeepOnly(String ...activityNamesToKeep) {
this.activityNamesToKeep = new HashSet<String>(Arrays.asList(activityNamesToKeep));
}
@Override
public Iterator<XTrace> iterator() {
return null;
}
@Override
public Stream<XTrace> stream() {
// TODO Auto-generated method stub
return null;
}
}
package beamline.models.filters;
import beamline.models.streams.XesSource;
public abstract class XesFilter implements XesSource {
@Override
public void prepare() throws Exception { }
}
package rx.beamline.sources; package beamline.sources;
import java.util.Date; import java.util.Date;
import java.util.UUID; import java.util.UUID;
......
package rx.beamline.sources; package beamline.sources;
import io.reactivex.rxjava3.core.Observable; import io.reactivex.rxjava3.core.Observable;
......
package rx.beamline.sources; package beamline.sources;
import java.io.File; import java.io.File;
import java.util.Collections; import java.util.Collections;
......
package rx.beamline.sources; package beamline.sources;
import org.deckfour.xes.model.XTrace; import org.deckfour.xes.model.XTrace;
......
...@@ -2,106 +2,71 @@ package beamline.tester; ...@@ -2,106 +2,71 @@ package beamline.tester;
import java.io.File; import java.io.File;
import java.util.Arrays; import java.util.Arrays;
import java.util.Iterator; import java.util.HashSet;
import java.util.LinkedList; import java.util.Set;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;
import org.deckfour.xes.extension.std.XConceptExtension; import org.deckfour.xes.extension.std.XConceptExtension;
import org.deckfour.xes.extension.std.XTimeExtension; import org.deckfour.xes.extension.std.XTimeExtension;
import org.deckfour.xes.in.XParser;
import org.deckfour.xes.in.XesXmlParser;
import org.deckfour.xes.model.XEvent;
import org.deckfour.xes.model.XLog;
import org.deckfour.xes.model.XTrace; import org.deckfour.xes.model.XTrace;
import com.google.common.collect.Iterators; import beamline.filters.ExcludeActivitiesFilter;
import beamline.filters.RetainActivitiesFilter;
import beamline.models.responses.GraphvizResponse; import beamline.miners.DiscoveryMiner;
import beamline.models.streams.XesMqttSource; import beamline.miners.ProcessMap;
import beamline.models.streams.XesSource; import beamline.models.algorithms.HookEventProcessing;
import beamline.models.streams.ObservableStream; import beamline.models.algorithms.StreamMiningAlgorithm;
import beamline.models.streams.XesStreamSource; import beamline.sources.XesLogSource;
import discovery.beamline.miners.basic.DiscoveryMiner; import beamline.sources.XesSource;
import io.reactivex.rxjava3.annotations.NonNull;
import io.reactivex.rxjava3.core.Observable;
import io.reactivex.rxjava3.core.ObservableEmitter;
import io.reactivex.rxjava3.core.ObservableOnSubscribe;
import io.reactivex.rxjava3.functions.Consumer;
import io.reactivex.rxjava3.functions.Function;
import io.reactivex.rxjava3.functions.Predicate;
import jdk.jshell.execution.StreamingExecutionControl;
public class Tester { public class Tester {
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
System.out.println("start");
System.out.println("Started"); XParser p = new XesXmlParser();
XLog l = p.parse(new File("C:\\Users\\andbur\\Desktop\\input.xes")).get(0);
XesSource source; XesSource source = new XesLogSource(l);
source = new XesStreamSource("C:\\Users\\andbur\\Desktop\\input-small.xes"); // XesSource source = new MQTTXESSource(broker, topic, process);
// source = new XesMqttSource("tcp://broker.hivemq.com:1883", "pmcep", "test");
source.prepare(); source.prepare();
int refreshRate = 1; DiscoveryMiner miner = new DiscoveryMiner();
miner.setMinDependency(0.3);
DiscoveryMiner discoveryAlgorithm = new DiscoveryMiner(); miner.setModelRefreshRate(1);
discoveryAlgorithm.setMinDependency(0.3);
discoveryAlgorithm.setModelRefreshRate(refreshRate); Observable<XTrace> obs = source.getObservable();
obs
Stream<String> s = Arrays.asList("1234", "12", "123").stream(); // .filter(new RetainActivitiesFilter("A", "B", "C", "dummy-retain"))
// .filter(new ExcludeActivitiesFilter("A", "dummy-exclude"))
s // .map(new DirectSuccessionMapper())
.map(new Function<String, Integer>() { // .combine(new SlidingWindow(1000))
@Override // .map(new Miner(1, 0.5))
public Integer apply(String t) { .subscribe(miner);
return t.length(); // .subscribe(new Consumer<XTrace>() {
}
})
.forEach(System.out::println);
// Stream<XTrace> s = source.stream();
//
// s
// .filter(new Predicate<XTrace>() {
// @Override // @Override
// public boolean test(XTrace t) { // public void accept(@NonNull XTrace t) throws Throwable {
// return "A".equals(XConceptExtension.instance().extractName(t.get(0))) ||
// "B".equals(XConceptExtension.instance().extractName(t.get(0)));
// }
// })
// .filter(new Predicate<XTrace>() {
// @Override
// public boolean test(XTrace t) {
// return "c1".equals(XConceptExtension.instance().extractName(t));
// }
// })
// .limit(2)
// .map(new Function<XTrace, String>() {
// @Override
// public String apply(XTrace t) {
// return XConceptExtension.instance().extractName(t.get(0));
// }
// })
// .forEach(System.out::println);
// .
// .forEach(new Consumer<XTrace>() {
// @Override
// public void accept(XTrace t) {
// System.out.println( // System.out.println(
// XConceptExtension.instance().extractName(t) + " - " + // XConceptExtension.instance().extractName(t) + " - " +
// XConceptExtension.instance().extractName(t.get(0)) + " - " + // XConceptExtension.instance().extractName(t.get(0)) + " - " +
// XTimeExtension.instance().extractTimestamp(t.get(0))); // XTimeExtension.instance().extractTimestamp(t.get(0))
//// discoveryAlgorithm.process(t); // );
// } // }
// }); // });
// for(XTrace t : (Iterable<XTrace>) s::iterator) { miner.getLatestResponse().generateDot().exportToSvg(new File("C:\\Users\\andbur\\Desktop\\output.svg"));
// System.out.println(XConceptExtension.instance().extractName(t) + " - " +
// XConceptExtension.instance().extractName(t.get(0)) + " - " +
// XTimeExtension.instance().extractTimestamp(t.get(0)));
// discoveryAlgorithm.process(eventWrapper);
// GraphvizResponse response = (GraphvizResponse) discoveryAlgorithm.getLatestResponse();
// if (discoveryAlgorithm.getProcessedEvents() % refreshRate == 0) {
//// response.generateDot().exportToSvg(new File("C:\\Users\\andbur\\Desktop\\output-" + discoveryAlgorithm.getProcessedEvents() + ".svg"));
// System.out.println("Processed " + discoveryAlgorithm.getProcessedEvents() + " events, the map has " + response.generateDot().getEdges().size() + " edges");
// }
// }
// System.out.println("Processed " + discoveryAlgorithm.getProcessedEvents() + " events, the map has " + discoveryAlgorithm.getLatestResponse().generateDot().getEdges().size() + " edges");
System.out.println("Done"); System.out.println("done");
} }
} }
package discovery.beamline.view.graph; package beamline.view.graph;
import java.awt.Color; import java.awt.Color;
......
package discovery.beamline.view.graph; package beamline.view.graph;
import beamline.graphviz.DotEdge; import beamline.graphviz.DotEdge;
import beamline.graphviz.DotNode; import beamline.graphviz.DotNode;
......
package discovery.beamline.view.graph; package beamline.view.graph;
import beamline.graphviz.DotNode; import beamline.graphviz.DotNode;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment