diff --git a/src/main/java/de/tudresden/inf/st/pnml/engine/Main.java b/src/main/java/de/tudresden/inf/st/pnml/engine/Main.java index 57767c62c7097f6d2a9ad8c2850764991c25ebe9..2e87c01448e07dcf4a4f1469d43b37f43c53207e 100644 --- a/src/main/java/de/tudresden/inf/st/pnml/engine/Main.java +++ b/src/main/java/de/tudresden/inf/st/pnml/engine/Main.java @@ -72,7 +72,8 @@ public class Main { BalloonMarkedPlace bmp = bm.resolveBalloonPlace(p); bmp.addBalloonMarking(bt); - // petriNet.flushTreeCache(); + //bmp.addBalloonMarking(bt); + petriNet.flushTreeCache(); for ( OutputSignalBinding b : p.asOutputSignalPlace().getOutputSignalBindingList()){ System.out.println("New Num: " + bm.resolveBalloonPlace(p).getNumBalloonMarking()); diff --git a/src/main/java/de/tudresden/inf/st/pnml/engine/execution/TransitionCallbackService.java b/src/main/java/de/tudresden/inf/st/pnml/engine/execution/TransitionCallbackService.java new file mode 100644 index 0000000000000000000000000000000000000000..a68f3a7427bb81f235a178eff1685f6905d70cec --- /dev/null +++ b/src/main/java/de/tudresden/inf/st/pnml/engine/execution/TransitionCallbackService.java @@ -0,0 +1,53 @@ +package de.tudresden.inf.st.pnml.engine.execution; + +import de.tudresden.inf.st.pnml.jastadd.model.BalloonCallbackStorage; +import de.tudresden.inf.st.pnml.jastadd.model.BalloonTransition; +import de.tudresden.inf.st.pnml.jastadd.model.PetriNet; + +import java.util.ArrayList; +import java.util.List; + +public class TransitionCallbackService { + + public static TransitionCallbackService INSTANCE = null; + + private BalloonCallbackStorage balloonCallbackStorage = null; + + private TransitionCallbackService() {} + + public static TransitionCallbackService getInstance() { + if(INSTANCE == null) { + INSTANCE = new TransitionCallbackService(); + } + + return INSTANCE; + } + + public void init(BalloonCallbackStorage balloonCallbackStorage) { + this.balloonCallbackStorage = balloonCallbackStorage; + } + + public void registerCallback(PetriNet petriNet, String transitionId, TransitionCallback transitionCallback){ + + if(balloonCallbackStorage == null){ + return; + } + + BalloonTransition balloonTransition = balloonCallbackStorage.resolveBalloonTransition(petriNet.getTransitionById(transitionId)); + List<TransitionCallback> transitionCallbacks = new ArrayList<>(); + transitionCallbacks.add(transitionCallback); + registerCallback(petriNet, transitionId, transitionCallbacks); + + } + + public void registerCallback(PetriNet petriNet, String transitionId, List<TransitionCallback> transitionCallbacks){ + + if(balloonCallbackStorage == null){ + return; + } + + BalloonTransition balloonTransition = balloonCallbackStorage.resolveBalloonTransition(petriNet.getTransitionById(transitionId)); + balloonTransition.setBalloonCallbacks(transitionCallbacks); + + } +}