From 5ea5ea1294e66f9d761b05e0ac75171161fef36e Mon Sep 17 00:00:00 2001 From: SebastianEbert <sebastian.ebert@tu-dresden.de> Date: Tue, 26 Jul 2022 12:58:14 +0200 Subject: [PATCH] working on signal fix --- .../de/tudresden/inf/st/pnml/engine/Main.java | 3 +- .../execution/TransitionCallbackService.java | 53 +++++++++++++++++++ 2 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 src/main/java/de/tudresden/inf/st/pnml/engine/execution/TransitionCallbackService.java 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 57767c6..2e87c01 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 0000000..a68f3a7 --- /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); + + } +} -- GitLab