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

rewriting of service instances

parent 948ee90f
No related branches found
No related tags found
No related merge requests found
Showing
with 115 additions and 841 deletions
aspect ServiceRewrites {
rewrite Page {
when ( getType() != null && getType().equals(PnmlConstants.PAGE_TYPE_SERVER) && !getId().endsWith(PnmlConstants.PAGE_SERVER_INSTANCE_SUFFIX) )
to Page {
int serverCapacity = 0;
for(DinerosTransition dt : petriNet().allDinerosTransitions()){
if(dt.getStaticTransitionInformation().isServiceTransitionInformation()){
serverCapacity = dt.getStaticTransitionInformation().asServiceTransitionInformation().getServerChannel().getCapacity();
break;
}
}
Page containerPage = new Page();
containerPage.setId(this.getId() + "-" + PnmlConstants.PAGE_SERVER_CONTAINER_SUFFIX);
for( int i = 0; i < serverCapacity; i++){
Page serverInstancePage = this.treeCopyNoTransform();
serverInstancePage.setId(serverInstancePage.getId() + "-" + i + "-" + PnmlConstants.PAGE_SERVER_INSTANCE_SUFFIX);
for(PnObject pnObject : serverInstancePage.getObjectList()){
pnObject.setId(pnObject.getId() + "-" + i + "-" + PnmlConstants.PAGE_SERVER_INSTANCE_SUFFIX);
pnObject.getName().setText(pnObject.getId());
}
containerPage.addObject(serverInstancePage);
}
return containerPage;
}
}
}
\ No newline at end of file
aspect SignalRewrites {
}
\ No newline at end of file
aspect TopicRewrites {
}
\ No newline at end of file
......@@ -4,9 +4,6 @@ import de.tudresden.inf.st.pnml.flatter.config.ConfigReader;
import de.tudresden.inf.st.pnml.flatter.tina.KtzioProxy;
import de.tudresden.inf.st.pnml.flatter.tina.SiftProxy;
import de.tudresden.inf.st.pnml.flatter.tina.TinaProxy;
import de.tudresden.inf.st.pnml.flatter.transform.ChannelFlatter;
import de.tudresden.inf.st.pnml.flatter.transform.ReferenceFlatter;
import de.tudresden.inf.st.pnml.flatter.transform.SignalFlatter;
import de.tudresden.inf.st.pnml.jastadd.model.*;
import de.tudresden.inf.st.pnml.jastadd.model.PnmlParser;
import fr.lip6.move.pnml.framework.utils.exception.InvalidIDException;
......@@ -21,23 +18,23 @@ public class Main {
public static void main(String[] args) throws IOException, InvalidIDException, InterruptedException {
String configPath = (args.length > 1) ? args[1] : null;
/* String configPath = (args.length > 1) ? args[1] : null;
String pnmlPath = (args.length > 0) ? args[0] : null;
if (pnmlPath == null || configPath == null) {
System.out.println("No model found on given input path.");
return;
}
}*/
// parse the global not flatted petri net
// pnmlPath = "../pnml-relast-nets/src/main/resources/useCaseNets/Paper/RoboticUseCase-AllLayers.pnml";
String pnmlPath = "/home/sebastian/git/dineros/dineros-v2/dineros/pnml-relast-base/src/main/resources/nets/TestNet2.pnml";
// configPath = "src/main/config/siftConfig.json";
PetriNet petriNet = PnmlParser.parsePnml(pnmlPath).get(0);
// read config for analyzer from file
ConfigReader cr = new ConfigReader(configPath);
/* ConfigReader cr = new ConfigReader(configPath);
String[] tinaConfig = cr.getTinaConfigParams();
String[] siftConfig = cr.getSiftConfigParams();
String[] siftConfig = cr.getSiftConfigParams();*/
// make sure that we have a valid marking
System.out.println("[FLATTER] Checking marking.");
......@@ -50,54 +47,53 @@ public class Main {
}
}
/*
// remove references / pages
System.out.println("[FLATTER] Breaking references and pages.");
ReferenceFlatter.flatReferencesAndPages(petriNet);
// printNet(petriNet);
// flat topic publishers / subscribers to instance based semantics
System.out.println("[FLATTER] Breaking down topic channels.");
PetriNet topicFlattedPetriNet = ChannelFlatter.flatTopicChannels(petriNet);
// printNet(petriNet);
// flat service clients / servers to instance based semantics
System.out.println("[FLATTER] Breaking down service channels.");
PetriNet serviceFlattedPetriNet = ChannelFlatter.flatServiceChannels(topicFlattedPetriNet);
// printNet(serviceFlattedPetriNet);
// flat input signals
System.out.println("[FLATTER] Breaking down signals.");
PetriNet signalFlattedPetriNet = SignalFlatter.flatSignals(serviceFlattedPetriNet);
printNet(signalFlattedPetriNet);
printNet(signalFlattedPetriNet);*/
// export flatted net to pnml
printNet(petriNet, true, false);
System.out.println("[FLATTER] Exporting to pnml.");
String exportId = UUID.randomUUID().toString();
String pnmlExportPath = PnmlExporter.serializeToPnmlFile(petriNet, "flatted-" + exportId);
// convert and add inhibitor arcs
System.out.println("[FLATTER] Converting to net format.");
/* System.out.println("[FLATTER] Converting to net format.");
NdrioProxy ndrioProxy = new NdrioProxy();
String homeDirectory = System.getProperty("user.dir");
String fid = UUID.randomUUID().toString();
String ndrioTargetPath = homeDirectory + "/temp/net/" + fid + "flatted-" + exportId + ".net";
String ndrioTargetPath = homeDirectory + "/temp/net/" + fid + "flatted-" + exportId + ".net";*/
// resolve inhibitor arcs
System.out.println("[FLATTER] Including inhibitor arcs into net format.");
/* System.out.println("[FLATTER] Including inhibitor arcs into net format.");
String inhibitorTargetPath = homeDirectory + "/temp/net/" + fid + "flatted-inh-" + exportId + ".net";
ndrioProxy.pnml2net(pnmlExportPath, ndrioTargetPath);
ndrioProxy.includeInhibitorArcs(petriNet, ndrioTargetPath, inhibitorTargetPath);
ndrioProxy.includeInhibitorArcs(petriNet, ndrioTargetPath, inhibitorTargetPath);*/
// insert into tina
if (tinaConfig.length > 1) {
/* if (tinaConfig.length > 1) {
System.out.println("[FLATTER] Inserting into tina.");
TinaProxy tinaProxy = new TinaProxy();
String tinaTargetPath = homeDirectory + "/temp/tina/" + "tina-result-" + exportId + ".txt";
tinaProxy.analyzePetriNet(inhibitorTargetPath, tinaTargetPath, tinaConfig);
}
}*/
// insert into sift
if (siftConfig.length > 1) {
/* if (siftConfig.length > 1) {
System.out.println("[FLATTER] Inserting into sift.");
SiftProxy siftProxy = new SiftProxy();
String siftTargetPath = homeDirectory + "/temp/sift/" + "sift-result-" + exportId + ".ktz";
......@@ -107,7 +103,7 @@ public class Main {
KtzioProxy ktzioProxy = new KtzioProxy();
String ktzioPath = homeDirectory + "/temp/sift/" + "sift-result-converted-" + exportId + ".txt";
ktzioProxy.convertBinaryToText(siftTargetPath, ktzioPath);
}
}*/
// insert into struct
// TODO in v2
......@@ -122,13 +118,13 @@ public class Main {
}
public static void printNet(PetriNet petriNet) {
public static void printNet(PetriNet petriNet, boolean withArcs, boolean withToolSpecifics) {
System.out.println("--------------- STRUCTURE ---------------");
System.out.println("----------------- PLACES ----------------");
for (Place p : petriNet.allPlaces()) {
System.out.println("Place " + p.asOutputSignalPlace().getId() + " -- " + p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet());
System.out.println("Place " + p.asDinerosPlace().getId() + " -- " + p.asDinerosPlace().getStaticPlaceInformation().getSubNet());
if (p.getInitialMarking() != null) {
System.out.println("--- Marking: " + p.getInitialMarking().getText());
} else {
......@@ -146,31 +142,24 @@ public class Main {
for (Transition t : petriNet.allTransitions()) {
if (t.asInputSignalTransition().getStaticTransitionInformation().isServiceTransitionInformation()) {
System.out.println("--- Transition: " + t.getId() + " subnet: " + t.asInputSignalTransition().getStaticTransitionInformation().getSubNet()
+ " service: " + t.asInputSignalTransition().getStaticTransitionInformation().asServiceTransitionInformation().getServiceName() + " ---------");
} else if (t.asInputSignalTransition().getStaticTransitionInformation().isTopicTransitionInformation()) {
System.out.println("--- Transition: " + t.getId() + " subnet: " + t.asInputSignalTransition().getStaticTransitionInformation().getSubNet()
+ " topic: " + t.asInputSignalTransition().getStaticTransitionInformation().asTopicTransitionInformation().getTopic() + " ---------");
if (t.asDinerosTransition().getStaticTransitionInformation().isServiceTransitionInformation()) {
System.out.println("--- Transition: " + t.getId() + " subnet: " + t.asDinerosTransition().getStaticTransitionInformation().getSubNet()
+ " service: " + t.asDinerosTransition().getStaticTransitionInformation().asServiceTransitionInformation().getServiceName() + " ---------");
} else if (t.asDinerosTransition().getStaticTransitionInformation().isTopicTransitionInformation()) {
System.out.println("--- Transition: " + t.getId() + " subnet: " + t.asDinerosTransition().getStaticTransitionInformation().getSubNet()
+ " topic: " + t.asDinerosTransition().getStaticTransitionInformation().asTopicTransitionInformation().getTopic() + " ---------");
} else {
System.out.println("--- Transition: " + t.getId() + " subnet: " + t.asInputSignalTransition().getStaticTransitionInformation().getSubNet() + " --- name: " + t.getName().getText());
System.out.println("--- Transition: " + t.getId() + " subnet: " + t.asDinerosTransition().getStaticTransitionInformation().getSubNet() + " --- name: " + t.getName().getText());
}
// for(Arc a : t.getInArcs()){
// System.out.println("incomming arc: " + a.getId());
// }
// if(t.asInputSignalTransition().getInputSignalClause() != null && t.asInputSignalTransition().getInputSignalClause().getNumChild() > 0){
// System.out.println("------ Clause: " + t.asInputSignalTransition().getInputSignalClause().printExp());
// }
for (Place p : t.asDinerosTransition().incomingPlaces()) {
for (Place p : t.asInputSignalTransition().incomingPlaces()) {
System.out.println("------ Inputplace: " + p.getId() + " subnet: " + p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet() + " ---------");
System.out.println("------ Inputplace: " + p.getId() + " subnet: " + p.asDinerosPlace().getStaticPlaceInformation().getSubNet() + " ---------");
}
for (Place p : t.asInputSignalTransition().outgoingPlaces()) {
for (Place p : t.asDinerosTransition().outgoingPlaces()) {
System.out.println("------ Outputplace: " + p.getId() + " subnet: " + p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet() + " ---------");
System.out.println("------ Outputplace: " + p.getId() + " subnet: " + p.asDinerosPlace().getStaticPlaceInformation().getSubNet() + " ---------");
}
}
......@@ -186,39 +175,36 @@ public class Main {
System.out.println("--- RefTransition: " + rt.getId());
}
System.out.println("----------------- ARCS -----------------");
if (withArcs) {
System.out.println("----------------- ARCS -----------------");
for (Arc a : petriNet.allArcs()) {
System.out.println("Arc: " + a.getId() + " -- source: " + a.getSource().getId() + " -- target: " + a.getTarget().getId());
for (Arc a : petriNet.allArcs()) {
System.out.println("Arc: " + a.getId() + " -- source: " + a.getSource().getId() + " -- target: " + a.getTarget().getId());
}
}
System.out.println("--------------- T SIGNALS (STATIC)---------------");
for (Transition t : petriNet.allTransitions()) {
InputSignalTransition ist = t.asInputSignalTransition();
DinerosTransition ist = t.asDinerosTransition();
if (ist != null && ist.getStaticInputSignalBindingList() != null) {
ist.getStaticInputSignalBindingList().forEach(inputSignalBinding -> System.out.println(" (" + t.getName().getText() + ") Signal: " + inputSignalBinding.getInputSignalID()));
if (ist != null && ist.getMutableTransitionInformation() == null) {
if(ist.getStaticTransitionInformation().isSignalTransitionInformation()){
System.out.println(ist.getStaticTransitionInformation().asSignalTransitionInformation().getClause().printClause());
}
}
}
System.out.println("--------------- T SIGNALS (MUTUAL)---------------");
for (Transition t : petriNet.allTransitions()) {
InputSignalTransition ist = t.asInputSignalTransition();
if(withToolSpecifics) {
System.out.println("--------------- TOOL SPECIFIC ---------------");
if (ist != null && ist.getMutualInputSignalBindingList() != null) {
ist.getMutualInputSignalBindingList().forEach(inputSignalBinding -> System.out.println(" (" + t.getName().getText() + ") Signal: " + inputSignalBinding.getInputSignalID()));
for (Transition t : petriNet.allTransitions()) {
DinerosTransition ist = t.asDinerosTransition();
if (ist != null && ist.getNumToolspecific() > 0) {
System.out.println("ToolSpecific: (" + ist.getName().getText() + ") " + ist.getToolspecific(0).getFormattedXMLBuffer().toString());
}
}
}
// System.out.println("--------------- TOOL SPECIFIC ---------------");
/* for (Transition t : petriNet.allTransitions()) {
InputSignalTransition ist = t.asInputSignalTransition();
if (ist != null && ist.getNumToolspecific() > 0) {
System.out.println("ToolSpecific: (" + ist.getName().getText() + ") " + ist.getToolspecific(0).getFormattedXMLBuffer().toString());
}
}*/
}
}
\ No newline at end of file
......@@ -4,26 +4,26 @@ import de.tudresden.inf.st.pnml.jastadd.model.*;
public class PrimitiveTemplates extends PnmlTemplate{
public static InputSignalTransition getInputSignalTransition(){
public static DinerosTransition getDinerosTransition(){
PetriNet templateNet = PnmlParser.parsePnml(homeDirectory + "/src/main/resources/elements/InputSignalTransition.pnml").get(0);
PetriNet templateNet = PnmlParser.parsePnml(homeDirectory + "/src/main/resources/elements/DinerosTransition.pnml").get(0);
for(Transition t : templateNet.allTransitions()){
if(t.getId().equals("InputSignalTransition")){
return t.asInputSignalTransition();
if(t.getId().equals("DinerosTransition")){
return t.asDinerosTransition();
}
}
return null;
}
public static OutputSignalPlace getOutputSignalPlace(){
public static DinerosPlace getDinerosPlace(){
PetriNet templateNet = PnmlParser.parsePnml(homeDirectory + "/src/main/resources/elements/OutputSignalPlace.pnml").get(0);
PetriNet templateNet = PnmlParser.parsePnml(homeDirectory + "/src/main/resources/elements/DinerosPlace.pnml").get(0);
for(Place p : templateNet.allPlaces()){
if(p.getId().equals("OutputSignalPlace")){
return p.asOutputSignalPlace();
if(p.getId().equals("DinerosPlace")){
return p.asDinerosPlace();
}
}
......
......@@ -35,7 +35,7 @@ public abstract class Flatter {
return a;
}
protected static void includeTemplateInstance(PetriNet petriNet, PetriNet templateInstance, String subnet, String location) {
/* protected static void includeTemplateInstance(PetriNet petriNet, PetriNet templateInstance, String subnet, String location) {
// after tina-flat we do only have on page
Page topPage = petriNet.getPage(0);
......@@ -85,7 +85,7 @@ public abstract class Flatter {
}
petriNet.flushTreeCache();
}
}*/
protected static Place getPlaceByID(PetriNet petriNet, String Id) {
......
......@@ -9,7 +9,7 @@ import java.util.*;
public class SignalFlatter extends Flatter{
public static PetriNet flatSignals(PetriNet petriNet) {
/*public static PetriNet flatSignals(PetriNet petriNet) {
Page topPage = petriNet.getPage(0);
......@@ -245,5 +245,5 @@ public class SignalFlatter extends Flatter{
iOsp.setId(TemplateConstants.INPUT_SIGNAL_PLACE_INACTIVE + "-" + signalId + "-" + count);
aOsp.getName().setText(TemplateConstants.INPUT_SIGNAL_PLACE_ACTIVE + "-" + signalId + "-" + count);
iOsp.getName().setText(TemplateConstants.INPUT_SIGNAL_PLACE_INACTIVE + "-" + signalId + "-" + count);
}
}*/
}
......@@ -3,8 +3,8 @@
<name>
<text>OutputSignalPlaceNet</text>
</name>
<page id="OutputSignalPlacePage">
<place id="OutputSignalPlace">
<page id="DinerosPlacePage">
<place id="DinerosPlace">
<toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
<location>none</location>
<subnet>none</subnet>
......
......@@ -3,8 +3,8 @@
<name>
<text>InputSignalTransitionNet</text>
</name>
<page id="InputSignalTransitionPage">
<transition id="InputSignalTransition">
<page id="DinerosTransitionPage">
<transition id="DinerosTransition">
<toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1">
<location>none</location>
<subnet>none</subnet>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment