Skip to content
Snippets Groups Projects
Commit 2cdab276 authored by Sebastian Ebert's avatar Sebastian Ebert
Browse files

working on signal fix

parent 99206724
No related branches found
No related tags found
No related merge requests found
...@@ -45,6 +45,8 @@ aspect BalloonExecution{ ...@@ -45,6 +45,8 @@ aspect BalloonExecution{
if((clauseValuesDefinition.getDefs().size() > 0) && if((clauseValuesDefinition.getDefs().size() > 0) &&
(!transition.asDinerosTransition().getStaticTransitionInformation(). (!transition.asDinerosTransition().getStaticTransitionInformation().
asSignalTransitionInformation().getClause().evalClause(clauseValuesDefinition))){ asSignalTransitionInformation().getClause().evalClause(clauseValuesDefinition))){
System.out.println("Signals, do not allow to fire transition!");
return Optional.of(this); return Optional.of(this);
} }
} }
......
...@@ -60,11 +60,7 @@ public class Main { ...@@ -60,11 +60,7 @@ public class Main {
java.lang.String pnmlPath = "../pnml-relast-engine/src/main/resources/nets/NodeNetSignalTest.pnml"; java.lang.String pnmlPath = "../pnml-relast-engine/src/main/resources/nets/NodeNetSignalTest.pnml";
PetriNet petriNet = PnmlParser.parsePnml(pnmlPath).get(0); PetriNet petriNet = PnmlParser.parsePnml(pnmlPath).get(0);
for(Transition t : petriNet.allTransitions()){ nodeConfiguration.setMasterUri(URI.create("http://localhost:11311"));
}
/* nodeConfiguration.setMasterUri(URI.create("http://localhost:11311"));
DinerosTestNode diNeRosNode = new DinerosTestNode("TestNode", petriNet); DinerosTestNode diNeRosNode = new DinerosTestNode("TestNode", petriNet);
...@@ -80,7 +76,7 @@ public class Main { ...@@ -80,7 +76,7 @@ public class Main {
Thread.sleep(2000); Thread.sleep(2000);
} catch (InterruptedException e) { } catch (InterruptedException e) {
e.printStackTrace(); e.printStackTrace();
}*/ }
} }
/* /*
......
package de.tudresden.inf.st.pnml.engine.ros; package de.tudresden.inf.st.pnml.engine.ros;
import de.tudresden.inf.st.pnml.base.data.ClauseValuesDefinition;
import de.tudresden.inf.st.pnml.engine.transform.PetriNetInitializer; import de.tudresden.inf.st.pnml.engine.transform.PetriNetInitializer;
import de.tudresden.inf.st.pnml.jastadd.model.*; import de.tudresden.inf.st.pnml.jastadd.model.*;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
...@@ -73,17 +74,49 @@ public abstract class DiNeRosNode extends AbstractNodeMain { ...@@ -73,17 +74,49 @@ public abstract class DiNeRosNode extends AbstractNodeMain {
public void notify(java.lang.String notificationType){ public void notify(java.lang.String notificationType){
Set<Transition> signalFilteredTransitions = getSignalFilteredTransitions();
if (notificationType.equals(NOTIFICATION_MARKING_CHANGE)) { if (notificationType.equals(NOTIFICATION_MARKING_CHANGE)) {
onMarkingChangeInternal(marking.enabledBalloonTransitions()); onMarkingChangeInternal(signalFilteredTransitions);
} else if (notificationType.equals(NOTIFICATION_SIGNAL_CHANGE)) { } else if (notificationType.equals(NOTIFICATION_SIGNAL_CHANGE)) {
System.out.println("NOTIFICATION_SIGNAL_CHANGE"); System.out.println("NOTIFICATION_SIGNAL_CHANGE");
onSignalChangeInternal(marking.enabledBalloonTransitions()); onSignalChangeInternal(signalFilteredTransitions);
} else if (notificationType.equals(NOTIFICATION_WAIT_ENDED)) { } else if (notificationType.equals(NOTIFICATION_WAIT_ENDED)) {
onWaitEndedInternal(marking.enabledBalloonTransitions()); onWaitEndedInternal(signalFilteredTransitions);
} else if (notificationType.equals(NOTIFICATION_STARTUP_ENDED)) { } else if (notificationType.equals(NOTIFICATION_STARTUP_ENDED)) {
onStartupEndedInternal(marking.enabledBalloonTransitions()); onStartupEndedInternal(signalFilteredTransitions);
}
}
@NotNull
private Set<Transition> getSignalFilteredTransitions() {
Set<Transition> signalFilteredTransitions = new HashSet<>();
ClauseValuesDefinition clauseValuesDefinition = new ClauseValuesDefinition();
for(Transition transition : marking.enabledBalloonTransitions()) {
if (transition.asDinerosTransition().getStaticTransitionInformation()
.asSignalTransitionInformation().getClause() != null) {
for (String signalId : transition.asDinerosTransition().getStaticTransitionInformation()
.asSignalTransitionInformation().getClause().signals()) {
for (SignalConnection sc : inputSignalConnector.getSignalConnections()) {
if (signalId.equals(sc.getId())) {
clauseValuesDefinition.addDef(sc.getId(), sc.getCurrentValue());
break;
}
} }
}
if ((clauseValuesDefinition.getDefs().size() == 0) ||
(transition.asDinerosTransition().getStaticTransitionInformation().
asSignalTransitionInformation().getClause().evalClause(clauseValuesDefinition))) {
signalFilteredTransitions.add(transition);
}
}
}
return signalFilteredTransitions;
} }
@NotNull @NotNull
...@@ -91,7 +124,7 @@ public abstract class DiNeRosNode extends AbstractNodeMain { ...@@ -91,7 +124,7 @@ public abstract class DiNeRosNode extends AbstractNodeMain {
if (res.isFiringSelectionWait()) { if (res.isFiringSelectionWait()) {
try { try {
TimeUnit.MILLISECONDS.sleep(res.asFiringSelectionWait().getWaitingTime()); TimeUnit.MILLISECONDS.sleep(res.asFiringSelectionWait().getWaitingTime());
onWaitEndedInternal(marking.enabledBalloonTransitions()); onWaitEndedInternal(getSignalFilteredTransitions());
return res; return res;
} catch (InterruptedException e) { } catch (InterruptedException e) {
e.printStackTrace(); e.printStackTrace();
......
...@@ -16,7 +16,7 @@ public class DinerosTestNode extends DiNeRosNode { ...@@ -16,7 +16,7 @@ public class DinerosTestNode extends DiNeRosNode {
} }
public DinerosTestNode(String nodeName, PetriNet petriNet, BalloonMarking marking, BalloonCallbackStorage callbackStorage) { public DinerosTestNode(String nodeName, PetriNet petriNet, BalloonMarking marking, BalloonCallbackStorage callbackStorage) {
super(nodeName, petriNet, "localhost", "mqtt"); super(nodeName, petriNet, "localhost:2000", "mqtt");
this.marking = marking; this.marking = marking;
this.callbackStorage = callbackStorage; this.callbackStorage = callbackStorage;
} }
......
...@@ -22,7 +22,7 @@ public class PetriNetInitializer { ...@@ -22,7 +22,7 @@ public class PetriNetInitializer {
SignalTransitionInformation ti = new SignalTransitionInformation(); SignalTransitionInformation ti = new SignalTransitionInformation();
ti.setSubNet(dt.getStaticTransitionInformation().getSubNet() + usedSuffix); ti.setSubNet(dt.getStaticTransitionInformation().getSubNet() + usedSuffix);
ti.setNode(dt.getStaticTransitionInformation().getNode()); ti.setNode(dt.getStaticTransitionInformation().getNode());
ti.setClause(dt.getStaticTransitionInformation().asSignalTransitionInformation().getClause().deepCopy()); //ti.setClause(dt.getStaticTransitionInformation().asSignalTransitionInformation().getClause().deepCopy());
target.setMutableTransitionInformation(ti); target.setMutableTransitionInformation(ti);
} else if (dt.getStaticTransitionInformation().isTopicTransitionInformation()) { } else if (dt.getStaticTransitionInformation().isTopicTransitionInformation()) {
deepCopyTopicTransitionInformation(target, dt, usedSuffix); deepCopyTopicTransitionInformation(target, dt, usedSuffix);
......
...@@ -77,7 +77,7 @@ public class ServiceTransformer { ...@@ -77,7 +77,7 @@ public class ServiceTransformer {
SignalTransitionInformation sti = new SignalTransitionInformation(); SignalTransitionInformation sti = new SignalTransitionInformation();
sti.setNode(t.asDinerosTransition().getStaticTransitionInformation().getNode()); sti.setNode(t.asDinerosTransition().getStaticTransitionInformation().getNode());
sti.setSubNet(t.asDinerosTransition().getStaticTransitionInformation().getSubNet() + "-" + suffix); sti.setSubNet(t.asDinerosTransition().getStaticTransitionInformation().getSubNet() + "-" + suffix);
sti.setClause(t.asDinerosTransition().getStaticTransitionInformation().asSignalTransitionInformation().getClause().deepCopy()); //sti.setClause(t.asDinerosTransition().getStaticTransitionInformation().asSignalTransitionInformation().getClause().deepCopy());
copy.setMutableTransitionInformation(sti); copy.setMutableTransitionInformation(sti);
copy.getName().setText(t.getName().getText()); copy.getName().setText(t.getName().getText());
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment