From 99206724e55267d6add0298b8f87e2a165eaf230 Mon Sep 17 00:00:00 2001 From: SebastianEbert <sebastian.ebert@tu-dresden.de> Date: Mon, 5 Jun 2023 10:10:20 +0200 Subject: [PATCH] simplifiation of net init --- .../de/tudresden/inf/st/pnml/engine/Main.java | 65 ++++++------------- .../inf/st/pnml/engine/ros/DiNeRosNode.java | 4 +- .../engine/testNodes/DinerosTestNode.java | 8 ++- .../engine/transform/PetriNetInitializer.java | 14 +++- .../resources/nets/NodeNetSignalTest.pnml | 2 +- 5 files changed, 40 insertions(+), 53 deletions(-) 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 94a7ce4..447e07d 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 @@ -23,15 +23,14 @@ public class Main { // topicTest(); - testBaseNet(); + // testBaseNet(); // testServiceNets(); - // isTest(); - - // osTest(); + isTest(); } + @SuppressWarnings("unused") private static void testBaseNet() { java.lang.String pnmlPath = "../pnml-relast-engine/src/main/resources/nets/NodeNetTest.pnml"; @@ -56,61 +55,35 @@ public class Main { } } - /* + private static void isTest() { - @SuppressWarnings("unused") - private static void osTest() throws IOException, SAXException, ParserConfigurationException { - String pnmlPath = "../pnml-relast-engine/src/main/resources/nets/os-test-1.pnml"; + java.lang.String pnmlPath = "../pnml-relast-engine/src/main/resources/nets/NodeNetSignalTest.pnml"; PetriNet petriNet = PnmlParser.parsePnml(pnmlPath).get(0); - BalloonMarking bm = petriNet.initializeBalloonMarking(); - PetriNetInitializer.initOutputSignalConnections(petriNet, "localhost", "mqtt"); - - // dump(bm, "before"); - - System.out.println("Output Signal Values BEFORE: "); - for(Place p : petriNet.allPlaces()){ - for(OutputSignalBinding osb : p.asOutputSignalPlace().getOutputSignalBindingList()){ - System.out.println(osb.getOutputSignalID() + " : " + osb.outputSignalValue()); - } - } + for(Transition t : petriNet.allTransitions()){ - try { - System.out.println("Sleeping for 2s"); - TimeUnit.SECONDS.sleep(2); - } catch (InterruptedException e) { - e.printStackTrace(); } - // change marking - for(Place p : petriNet.allPlaces()){ - BalloonToken bt = new BalloonToken(); - bt.setValue("New Token"); + /* nodeConfiguration.setMasterUri(URI.create("http://localhost:11311")); - BalloonMarkedPlace bmp = bm.resolveBalloonPlace(p); - bmp.addBalloonMarking(bt); - //bmp.addBalloonMarking(bt); - petriNet.flushTreeCache(); + DinerosTestNode diNeRosNode = new DinerosTestNode("TestNode", petriNet); - for ( OutputSignalBinding b : p.asOutputSignalPlace().getOutputSignalBindingList()){ - System.out.println("New Num: " + bm.resolveBalloonPlace(p).getNumBalloonMarking()); - System.out.println("New Value: " + b.outputSignalValue()); - } + for(BalloonTransition bt : diNeRosNode.callbackStorage.getTransitionList()){ + bt.getBalloonCallbacks().add(new DefaultFinalTransitionHandler("default_final_cb", 1)); } - // dump(bm, "after"); - - System.out.println("Output Signal Values AFTER: "); - for(Place p : petriNet.allPlaces()){ - for(OutputSignalBinding osb : p.asOutputSignalPlace().getOutputSignalBindingList()){ - System.out.println(osb.getOutputSignalID() + " : " + osb.outputSignalValue()); - } - } + new Thread(() -> nodeMainExecutor.execute(diNeRosNode, nodeConfiguration)) {{ + start(); + }}; - System.out.println("-- MARKING --"); - System.out.println(bm.print()); + try { + Thread.sleep(2000); + } catch (InterruptedException e) { + e.printStackTrace(); + }*/ } + /* @SuppressWarnings("unused") private static void dump(BalloonMarking balloonMarking, String filename) throws IOException { Dumper.read(balloonMarking) 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 9ff3c60..c0e520c 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 @@ -71,11 +71,12 @@ public abstract class DiNeRosNode extends AbstractNodeMain { this.connectedNode.shutdown(); } - public synchronized void notify(java.lang.String notificationType){ + public void notify(java.lang.String notificationType){ if (notificationType.equals(NOTIFICATION_MARKING_CHANGE)) { onMarkingChangeInternal(marking.enabledBalloonTransitions()); } else if (notificationType.equals(NOTIFICATION_SIGNAL_CHANGE)) { + System.out.println("NOTIFICATION_SIGNAL_CHANGE"); onSignalChangeInternal(marking.enabledBalloonTransitions()); } else if (notificationType.equals(NOTIFICATION_WAIT_ENDED)) { onWaitEndedInternal(marking.enabledBalloonTransitions()); @@ -102,6 +103,7 @@ public abstract class DiNeRosNode extends AbstractNodeMain { return res; } + System.out.println("FIRING TRANSITION"); marking.fireTransition(res.asFiringSelectionSuccess() .getTransition(), callbackStorage, inputSignalConnector, this,true); diff --git a/src/main/java/de/tudresden/inf/st/pnml/engine/testNodes/DinerosTestNode.java b/src/main/java/de/tudresden/inf/st/pnml/engine/testNodes/DinerosTestNode.java index d00b700..bed0679 100644 --- a/src/main/java/de/tudresden/inf/st/pnml/engine/testNodes/DinerosTestNode.java +++ b/src/main/java/de/tudresden/inf/st/pnml/engine/testNodes/DinerosTestNode.java @@ -42,9 +42,11 @@ public class DinerosTestNode extends DiNeRosNode { private TransitionSelectionResult fireFirstEnabled(Set<Transition> enabledTransitions) { System.out.println("Calling fireFirstEnabled"); + System.out.println(marking.print()); FiringSelectionSuccess fsc = new FiringSelectionSuccess(); - for(Transition t : enabledTransitions){ + System.out.println("#EnabledTrans: " + marking.enabledBalloonTransitions().size()); + for(Transition t : marking.enabledBalloonTransitions()){ System.out.println("Firing transition: " + t.getId()); //System.out.println(marking.print()); fsc.setTransition(t); @@ -52,7 +54,9 @@ public class DinerosTestNode extends DiNeRosNode { } if(enabledTransitions.size() == 0){ - return new FiringSelectionFail(); + FiringSelectionWait fsw = new FiringSelectionWait(); + fsw.setWaitingTime(1000); + return fsw; } return fsc; diff --git a/src/main/java/de/tudresden/inf/st/pnml/engine/transform/PetriNetInitializer.java b/src/main/java/de/tudresden/inf/st/pnml/engine/transform/PetriNetInitializer.java index 0f44f6f..83bfcbf 100644 --- a/src/main/java/de/tudresden/inf/st/pnml/engine/transform/PetriNetInitializer.java +++ b/src/main/java/de/tudresden/inf/st/pnml/engine/transform/PetriNetInitializer.java @@ -77,7 +77,8 @@ public class PetriNetInitializer { target.setMutableTransitionInformation(tri); } - public static void initInputSignalConnections(PetriNet petriNet, String host, String protocol, InputSignalConnector inputSignalConnector, DiNeRosNode node) throws IOException { + public static void initInputSignalConnections(PetriNet petriNet, String host, String protocol, + InputSignalConnector inputSignalConnector, DiNeRosNode node) throws IOException { for(String signalId : petriNet.getInputSignalDefinition().keySet()){ @@ -91,11 +92,18 @@ public class PetriNetInitializer { // internal java connections sc.connectCurrentValue("java://localhost:00/" + signalId, false); - inputSignalConnector.ragconnectJavaRegisterConsumer("java://localhost:00/" + signalId, - bytes -> node.notify(DiNeRosNode.NOTIFICATION_SIGNAL_CHANGE)); + //inputSignalConnector.ragconnectJavaRegisterConsumer("java://localhost:00/" + signalId, + // bytes -> node.notify(DiNeRosNode.NOTIFICATION_SIGNAL_CHANGE)); + + inputSignalConnector.ragconnectJavaRegisterConsumer(signalId, bytes -> notifyOnSignalChange(node)); } } + public static void notifyOnSignalChange(DiNeRosNode node){ + System.out.println("NOTIFY ON SIGNAL CHANGE"); + node.notify(DiNeRosNode.NOTIFICATION_SIGNAL_CHANGE); + } + public void init(PetriNet petriNet, String host, String protocol, InputSignalConnector isc, DiNeRosNode node){ for(Transition t : petriNet.allTransitions()){ diff --git a/src/main/resources/nets/NodeNetSignalTest.pnml b/src/main/resources/nets/NodeNetSignalTest.pnml index ee31ce7..3f7634f 100644 --- a/src/main/resources/nets/NodeNetSignalTest.pnml +++ b/src/main/resources/nets/NodeNetSignalTest.pnml @@ -61,7 +61,7 @@ <subnet>s1</subnet> <inputsignalbinding> </inputsignalbinding> - <inputsignalclause>is1</inputsignalclause> + <inputsignalclause>(is1)</inputsignalclause> </toolspecific> <name> <text>t1</text> -- GitLab