From e204792b24ebe1cf3defe9043999424cd2f3699e Mon Sep 17 00:00:00 2001 From: SebastianEbert <sebastian.ebert@tu-dresden.de> Date: Mon, 19 Feb 2024 15:54:30 +0100 Subject: [PATCH] fixed execution of services --- .../balloonMarking/BalloonExecution.jadd | 16 +++++++++- .../engine/balloonMarking/BalloonMarking.jrag | 30 +++++-------------- .../pnml/engine/ros/DiNeRosDefaultNode.java | 10 ++----- .../inf/st/pnml/engine/ros/DiNeRosNode.java | 9 +++--- 4 files changed, 31 insertions(+), 34 deletions(-) diff --git a/src/main/jastadd/engine/balloonMarking/BalloonExecution.jadd b/src/main/jastadd/engine/balloonMarking/BalloonExecution.jadd index e0d5630..0394b45 100644 --- a/src/main/jastadd/engine/balloonMarking/BalloonExecution.jadd +++ b/src/main/jastadd/engine/balloonMarking/BalloonExecution.jadd @@ -94,10 +94,19 @@ aspect BalloonExecution{ idxC++; } + // System.out.println("> bmp: " + place.getId()); + // System.out.println("> bmp: " + bmp.getPlace().getId()); + // System.out.println("> num marking: " + bmp.getNumBalloonMarkingNoTransform()); + // System.out.println("> marking " + idx + ": " + bmp.getBalloonMarking(idx)); BalloonToken bt=bmp.getBalloonMarking(idx); inToken.add(bt); - bmp.getBalloonMarking(idx).removeSelf(); + System.out.println("[Engine] Removing token: " + bmp.getBalloonMarking(idx).getValue() + " from " + place.getId()); + //bmp.getBalloonMarking(idx).removeSelf(); + // System.out.println(bmp.getNumBalloonMarking()); + bmp.getBalloonMarkingList().removeChild(idx); + // System.out.println(bmp.getNumBalloonMarking()); + } BalloonTransition balloonTransition=callbackStorage.resolveBalloonTransition(transition); @@ -156,6 +165,11 @@ aspect BalloonExecution{ } } + // for(BalloonToken delToken : inToken){ + // System.out.println("[Engine] Removing token: " + delToken.getValue()); + // delToken.removeSelf(); + // } + if(requireFlush){ // flush the entire marking tree this.flushTreeCache(); diff --git a/src/main/jastadd/engine/balloonMarking/BalloonMarking.jrag b/src/main/jastadd/engine/balloonMarking/BalloonMarking.jrag index 6ae768a..d43ffcf 100644 --- a/src/main/jastadd/engine/balloonMarking/BalloonMarking.jrag +++ b/src/main/jastadd/engine/balloonMarking/BalloonMarking.jrag @@ -124,31 +124,17 @@ aspect BalloonMarking { syn boolean BalloonMarking.isBalloonEnabled(Transition t) { - /*int inArcCount = 0; - int filledInPlaceCount = 0; - - for (Arc a : this.getPetriNet().allArcs()) { - if (a.getTarget().getId().equals(t.getId())) { - - inArcCount++; - for (BalloonMarkedPlace bmp : this.getPlaceList()) { - if (bmp.getPlace().getId().equals(a.getSource().getId())) { - if (bmp.getNumBalloonMarking() > 0) { - filledInPlaceCount++; - } - } - } - } - } - - if (inArcCount == filledInPlaceCount) { - return true; - }*/ - for (Place place : t.incomingPlaces()) { - System.out.println(">>>> Incomming: " + place.getId() + " -- " + marking(place).size()); + //System.out.println(">>> Incomming Place: " + place.getId() + " -- " + marking(place).size()); if (marking(place).size() == 0) return false; } + + for(RefPlace refPlace : t.incomingRefPlaces()){ + List<String> rMarking = marking(refPlace.originPlace()); + //System.out.println(">>> Incomming Place (R): " + refPlace.getId() + " -- " + rMarking.size()); + if (rMarking.size() == 0) return false; + } + return true; } diff --git a/src/main/java/de/tudresden/inf/st/pnml/engine/ros/DiNeRosDefaultNode.java b/src/main/java/de/tudresden/inf/st/pnml/engine/ros/DiNeRosDefaultNode.java index c7183a7..3449a09 100644 --- a/src/main/java/de/tudresden/inf/st/pnml/engine/ros/DiNeRosDefaultNode.java +++ b/src/main/java/de/tudresden/inf/st/pnml/engine/ros/DiNeRosDefaultNode.java @@ -18,15 +18,11 @@ public class DiNeRosDefaultNode extends DiNeRosNode{ } @Override - protected void nodeLoop() { - - System.out.println("No node loop implemented .."); - - } + protected void nodeLoop() {} protected TransitionSelectionResult onChange(List<Transition> enabledTransitions){ - printTransitions(enabledTransitions); + // printTransitions(enabledTransitions); if(enabledTransitions.size() == 0){ return new FiringSelectionNone(); @@ -39,7 +35,7 @@ public class DiNeRosDefaultNode extends DiNeRosNode{ protected TransitionSelectionResult onStartupEnded(List<Transition> enabledTransitions){ - printTransitions(enabledTransitions); + // printTransitions(enabledTransitions); if(enabledTransitions.size() == 0){ return new FiringSelectionNone(); diff --git a/src/main/java/de/tudresden/inf/st/pnml/engine/ros/DiNeRosNode.java b/src/main/java/de/tudresden/inf/st/pnml/engine/ros/DiNeRosNode.java index 810bafa..b59f742 100644 --- a/src/main/java/de/tudresden/inf/st/pnml/engine/ros/DiNeRosNode.java +++ b/src/main/java/de/tudresden/inf/st/pnml/engine/ros/DiNeRosNode.java @@ -214,6 +214,7 @@ public abstract class DiNeRosNode extends AbstractNodeMain { @Override public void onSuccess(StringServiceResponse stringServiceResponse) { System.out.println("[DiNeROS-Node] [" + nodeName + "] Received response from service: " + serviceName); + System.out.println("MARKING BEFORE APP:" + marking.print()); bmpSource.getBalloonMarking(0).removeSelf(); bmpTarget.addBalloonMarking(new BalloonToken(stringServiceResponse.getOutput(), System.currentTimeMillis())); marking.callServiceIfRequest(bmpTarget, self); @@ -224,7 +225,7 @@ public abstract class DiNeRosNode extends AbstractNodeMain { } else { self.notify(new DiNeRosEvent(DiNeRosEventTypes.NOTIFICATION_MARKING_CHANGE)); } - serviceClient.shutdown(); + // serviceClient.shutdown(); } @Override @@ -270,9 +271,9 @@ public abstract class DiNeRosNode extends AbstractNodeMain { } } - //for(Transition t : signalFilteredTransitions){ - // System.out.println("Enabled: " + t.getId()); - // } + for(Transition t : signalFilteredTransitions){ + System.out.println("Enabled: " + t.getId()); + } return signalFilteredTransitions; } -- GitLab