diff --git a/build.gradle b/build.gradle index 8738e7cfdf0e0dd7f18e32a7d8281dcd7f2381ad..b73c7abacf91fff55ba1157cde011b333bdd6ff0 100644 --- a/build.gradle +++ b/build.gradle @@ -23,6 +23,20 @@ buildscript { dependencies { classpath group: 'org.jastadd', name: 'jastaddgradle', version: '1.13.3' } + + configurations { + classpath { + exclude group: 'org.slf4j', module: 'slf4j-api'//, version: '1.7.30' + } + } + + /* configurations.all { + resolutionStrategy.eachDependency { DependencyResolveDetails details -> + if (details.requested.name == 'org.slf4j') { + details.useTarget 'org.slf4j:slf4j-api:1.7.+' + } + } + }*/ } idea.module.generatedSourceDirs += file('src/gen/java') diff --git a/src/main/java/de/tudresden/inf/st/pnml/splitter/Main.java b/src/main/java/de/tudresden/inf/st/pnml/splitter/Main.java index c31ec6d559c96bae17e3cc730baafae64ae9725d..c3002c59853291bd6067bd906f1303f74d5d6ef6 100644 --- a/src/main/java/de/tudresden/inf/st/pnml/splitter/Main.java +++ b/src/main/java/de/tudresden/inf/st/pnml/splitter/Main.java @@ -20,35 +20,32 @@ public class Main { String inputPath = (args.length > 0) ? args[0] : null; - if(inputPath == null){ + if (inputPath == null) { logger.error("No model found on given input path."); return; } - // List<PetriNet> petriNets = PnmlParser.parsePnml("src/main/nets/jointTestNet1.pnml"); + // List<PetriNet> petriNets = PnmlParser.parsePnml("pnml-relast-splitter/src/main/nets/serviceTest1.pnml"); List<PetriNet> petriNets = PnmlParser.parsePnml(inputPath); List<List<PetriNet>> disconnectedPetriNets = new ArrayList<>(); - // petriNets.forEach(pn -> disconnectedPetriNets.add(GlobalToLocalNetsPostProcessor.disconnectNets(pn))); - for(PetriNet pn : petriNets){ - PostProcessingUtils.printNet(pn); - List<PetriNet> pnl = GlobalToLocalNetsPostProcessor.disconnectNets(pn); + for (PetriNet pn : petriNets) { + List<PetriNet> pnl = GlobalToLocalNetsPostProcessor.disconnectNets(pn); disconnectedPetriNets.add(pnl); - PostProcessingUtils.printNet(pnl.get(0)); } - for(List<PetriNet> petriNetList : disconnectedPetriNets){ - for(PetriNet petriNet : petriNetList){ + for (List<PetriNet> petriNetList : disconnectedPetriNets) { + for (PetriNet petriNet : petriNetList) { PostProcessingUtils.cleanEmptyPages(petriNet); petriNet.flushTreeCache(); } } - logger.info("------------------------------------------------------------------------------------"); + logger.info("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"); - for(int i = 0; i < disconnectedPetriNets.size(); i++){ - for(int j = 0; j < disconnectedPetriNets.get(i).size(); j++){ + for (int i = 0; i < disconnectedPetriNets.size(); i++) { + for (int j = 0; j < disconnectedPetriNets.get(i).size(); j++) { logger.info("Exporting splitted Petri net containing: "); PostProcessingUtils.printNet(disconnectedPetriNets.get(i).get(j)); diff --git a/src/main/java/de/tudresden/inf/st/pnml/splitter/export/PnmlExporter.java b/src/main/java/de/tudresden/inf/st/pnml/splitter/export/PnmlExporter.java index 7bd046c738b6adc1b2b4ca81a020ba5dbde59add..c3ee9d1b43dbb2be3a55b0eb32d5e203cdee870b 100644 --- a/src/main/java/de/tudresden/inf/st/pnml/splitter/export/PnmlExporter.java +++ b/src/main/java/de/tudresden/inf/st/pnml/splitter/export/PnmlExporter.java @@ -83,16 +83,16 @@ public class PnmlExporter { return hasFailed ? null : targetPath; } - private static Set<RefTransitionHLAPI> convertAndIncludeRefTransitions(PetriNet petriNet, Set<PageHLAPI> convertedPages, Set<TransitionHLAPI> convertedTransitions){ + private static Set<RefTransitionHLAPI> convertAndIncludeRefTransitions(PetriNet petriNet, Set<PageHLAPI> convertedPages, Set<TransitionHLAPI> convertedTransitions) { Set<RefTransitionHLAPI> convertedRefTransitions = new HashSet<>(); TransitionHLAPI rootTransition = null; // get the root transition to construct reference tree - for(RefTransition r: petriNet.allRefTransitions()){ - if(r.getRef().isTransition()){ - for(TransitionHLAPI th : convertedTransitions){ - if(th.getId().equals(r.getRef().asTransition().getId())){ + for (RefTransition r : petriNet.allRefTransitions()) { + if (r.getRef().isTransition()) { + for (TransitionHLAPI th : convertedTransitions) { + if (th.getId().equals(r.getRef().asTransition().getId())) { rootTransition = th; break; } @@ -102,12 +102,12 @@ public class PnmlExporter { } // construct the first reference level - for(RefTransition r: petriNet.allRefTransitions()){ + for (RefTransition r : petriNet.allRefTransitions()) { assert rootTransition != null; - if(r.getRef().getId().equals(rootTransition.getId())){ + if (r.getRef().getId().equals(rootTransition.getId())) { RefTransitionHLAPI rth = PrimitiveElementsConverter.convertRefTransitionToPnmlObject(r, rootTransition, null); - for(PageHLAPI pageHLAPI : convertedPages){ - if(pageHLAPI.getId().equals(r.ContainingPage().getId())){ + for (PageHLAPI pageHLAPI : convertedPages) { + if (pageHLAPI.getId().equals(r.ContainingPage().getId())) { assert rth != null; rth.setContainerPageHLAPI(pageHLAPI); break; @@ -118,12 +118,12 @@ public class PnmlExporter { } // construct the remaining levels - for(RefTransition r: petriNet.allRefTransitions()){ - for(RefTransitionHLAPI convRef: convertedRefTransitions){ - if(convRef.getId().equals(r.getRef().getId())){ - RefTransitionHLAPI convertedTransition = PrimitiveElementsConverter.convertRefTransitionToPnmlObject(r, null,convRef); - for(PageHLAPI pageHLAPI : convertedPages){ - if(pageHLAPI.getId().equals(r.ContainingPage().getId())){ + for (RefTransition r : petriNet.allRefTransitions()) { + for (RefTransitionHLAPI convRef : convertedRefTransitions) { + if (convRef.getId().equals(r.getRef().getId())) { + RefTransitionHLAPI convertedTransition = PrimitiveElementsConverter.convertRefTransitionToPnmlObject(r, null, convRef); + for (PageHLAPI pageHLAPI : convertedPages) { + if (pageHLAPI.getId().equals(r.ContainingPage().getId())) { assert convertedTransition != null; convertedTransition.setContainerPageHLAPI(pageHLAPI); break; @@ -136,54 +136,51 @@ public class PnmlExporter { return convertedRefTransitions; } - private static Set<RefPlaceHLAPI> convertAndIncludeRefPlaces(PetriNet petriNet, Set<PageHLAPI> convertedPages, Set<PlaceHLAPI> convertedPlaces){ - + private static Set<RefPlaceHLAPI> convertAndIncludeRefPlaces(PetriNet petriNet, Set<PageHLAPI> convertedPages, Set<PlaceHLAPI> convertedPlaces) { Set<RefPlaceHLAPI> convertedRefPlaces = new HashSet<>(); PlaceHLAPI rootPlace = null; // get the root transition to construct reference tree - for(RefPlace p: petriNet.allRefPlaces()){ - if(p.getRef().isPlace()) { + for (RefPlace p : petriNet.allRefPlaces()) { + if (p.getRef().isPlace()) { for (PlaceHLAPI ph : convertedPlaces) { if (ph.getId().equals(p.getRef().getId())) { rootPlace = ph; - break; - } - } - break; - } - } - // construct the first reference level - for(RefPlace p: petriNet.allRefPlaces()){ - assert rootPlace != null; - if(p.getRef().getId().equals(rootPlace.getId())){ - RefPlaceHLAPI rph = PrimitiveElementsConverter.convertRefPlaceToPnmlObject(p, rootPlace, null); - for(PageHLAPI pageHLAPI : convertedPages){ - if(pageHLAPI.getId().equals(p.ContainingPage().getId())){ - assert rph != null; - rph.setContainerPageHLAPI(pageHLAPI); - break; - } - } - convertedRefPlaces.add(rph); - } - } + // construct the first reference level + for (RefPlace p_one : petriNet.allRefPlaces()) { + assert rootPlace != null; + if (p_one.getRef().getId().equals(rootPlace.getId())) { + RefPlaceHLAPI rph = PrimitiveElementsConverter.convertRefPlaceToPnmlObject(p_one, rootPlace, null); + for (PageHLAPI pageHLAPI : convertedPages) { + if (pageHLAPI.getId().equals(p_one.ContainingPage().getId())) { + assert rph != null; + rph.setContainerPageHLAPI(pageHLAPI); + break; + } + } + convertedRefPlaces.add(rph); + } + } - // construct the remaining levels - for(RefPlace p: petriNet.allRefPlaces()){ - for(RefPlaceHLAPI convRef: convertedRefPlaces){ - if(convRef.getId().equals(p.getRef().getId())){ - RefPlaceHLAPI rph = PrimitiveElementsConverter.convertRefPlaceToPnmlObject(p, null,convRef); - for(PageHLAPI pageHLAPI : convertedPages){ - if(pageHLAPI.getId().equals(p.ContainingPage().getId())){ - assert rph != null; - rph.setContainerPageHLAPI(pageHLAPI); - break; + // construct the remaining levels + for (RefPlace p_tree : petriNet.allRefPlaces()) { + for (RefPlaceHLAPI convRef : convertedRefPlaces) { + if (convRef.getId().equals(p_tree.getRef().getId())) { + RefPlaceHLAPI rph = PrimitiveElementsConverter.convertRefPlaceToPnmlObject(p_tree, null, convRef); + for (PageHLAPI pageHLAPI : convertedPages) { + if (pageHLAPI.getId().equals(p_tree.ContainingPage().getId())) { + assert rph != null; + rph.setContainerPageHLAPI(pageHLAPI); + break; + } + } + convertedRefPlaces.add(rph); + } + } } } - convertedRefPlaces.add(rph); } } } @@ -195,9 +192,9 @@ public class PnmlExporter { Set<PlaceHLAPI> convertedPlaces = new HashSet<>(); for (Place p : petriNet.allPlaces()) { - PlaceHLAPI convertedPlace = PrimitiveElementsConverter.convertPlaceToPnmlObject(p.asOutputSignalPlace()); - for(PageHLAPI pageHLAPI : convertedPages){ - if(pageHLAPI.getId().equals(p.ContainingPage().getId())){ + PlaceHLAPI convertedPlace = PrimitiveElementsConverter.convertPlaceToPnmlObject(p.asOutputSignalPlace()); + for (PageHLAPI pageHLAPI : convertedPages) { + if (pageHLAPI.getId().equals(p.ContainingPage().getId())) { assert convertedPlace != null; convertedPlace.setContainerPageHLAPI(pageHLAPI); break; @@ -212,10 +209,10 @@ public class PnmlExporter { Set<TransitionHLAPI> convertedTransitions = new HashSet<>(); - for(Transition t: petriNet.allTransitions()){ + for (Transition t : petriNet.allTransitions()) { TransitionHLAPI convertedTransition = PrimitiveElementsConverter.convertTransitionToPnmlObject(t.asInputSignalTransition()); - for(PageHLAPI pageHLAPI : convertedPages){ - if(pageHLAPI.getId().equals(t.ContainingPage().getId())){ + for (PageHLAPI pageHLAPI : convertedPages) { + if (pageHLAPI.getId().equals(t.ContainingPage().getId())) { assert convertedTransition != null; convertedTransition.setContainerPageHLAPI(pageHLAPI); break; @@ -230,52 +227,52 @@ public class PnmlExporter { Set<TransitionHLAPI> convertedTransitions, Set<RefTransitionHLAPI> convertedRefTransitions, Set<RefPlaceHLAPI> convertedRefPlaces) { Set<ArcHLAPI> convertedArcs = new HashSet<>(); - for(Arc a : petriNet.allArcs()){ + for (Arc a : petriNet.allArcs()) { NodeHLAPI source = null; NodeHLAPI target = null; - for(TransitionHLAPI th : convertedTransitions){ - if(th.getId().equals(a.getSource().getId())){ + for (TransitionHLAPI th : convertedTransitions) { + if (th.getId().equals(a.getSource().getId())) { source = th; break; } - if(th.getId().equals(a.getTarget().getId())){ + if (th.getId().equals(a.getTarget().getId())) { target = th; break; } } - for(PlaceHLAPI ph : convertedPlaces){ - if(ph.getId().equals(a.getSource().getId())){ + for (PlaceHLAPI ph : convertedPlaces) { + if (ph.getId().equals(a.getSource().getId())) { source = ph; break; } - if(ph.getId().equals(a.getTarget().getId())){ + if (ph.getId().equals(a.getTarget().getId())) { target = ph; break; } } // also include arcs to/from refs - if(source == null || target == null){ - for(RefTransitionHLAPI rth : convertedRefTransitions){ - if(rth.getId().equals(a.getSource().getId())){ + if (source == null || target == null) { + for (RefTransitionHLAPI rth : convertedRefTransitions) { + if (rth.getId().equals(a.getSource().getId())) { source = rth; break; } - if(rth.getId().equals(a.getTarget().getId())){ + if (rth.getId().equals(a.getTarget().getId())) { target = rth; break; } } - for(RefPlaceHLAPI rph : convertedRefPlaces){ - if(rph.getId().equals(a.getSource().getId())){ + for (RefPlaceHLAPI rph : convertedRefPlaces) { + if (rph.getId().equals(a.getSource().getId())) { source = rph; break; } - if(rph.getId().equals(a.getTarget().getId())){ + if (rph.getId().equals(a.getTarget().getId())) { target = rph; break; } @@ -286,8 +283,8 @@ public class PnmlExporter { Page containingPage = a.ContainingPage(); - for(PageHLAPI pageHLAPI : convertedPages){ - if(pageHLAPI.getId().equals(containingPage.getId())){ + for (PageHLAPI pageHLAPI : convertedPages) { + if (pageHLAPI.getId().equals(containingPage.getId())) { assert convertedArc != null; convertedArc.setContainerPageHLAPI(pageHLAPI); break; @@ -303,14 +300,14 @@ public class PnmlExporter { private static Set<PageHLAPI> buildPageTrees(PetriNet petriNet, PetriNetHLAPI net) { Set<PageHLAPI> convertedPages = new HashSet<>(); - // Set<String> processedPageIds = new HashSet<>(); + // Set<String> processedPageIds = new HashSet<>(); List<Page> topLevelPages = getTopLevelPages(petriNet); List<Page> nonTopLevelPages = getNonTopLevelPages(petriNet); - for(Page page : topLevelPages){ + for (Page page : topLevelPages) { convertedPages.add(ComplexElementsConverter.convertTopLevelPageContainerToPnmlObject(page, net)); - // processedPageIds.add(page.getId()); + // processedPageIds.add(page.getId()); } for (Page nonTopLevelPage : nonTopLevelPages) { diff --git a/src/main/java/de/tudresden/inf/st/pnml/splitter/postprocessing/GlobalToLocalNetsPostProcessor.java b/src/main/java/de/tudresden/inf/st/pnml/splitter/postprocessing/GlobalToLocalNetsPostProcessor.java index a06c307335824d06c5a05b0ac287bb8ed3e235a6..f7c986ab964e4f90623fa927f020c4fc5213e9f9 100644 --- a/src/main/java/de/tudresden/inf/st/pnml/splitter/postprocessing/GlobalToLocalNetsPostProcessor.java +++ b/src/main/java/de/tudresden/inf/st/pnml/splitter/postprocessing/GlobalToLocalNetsPostProcessor.java @@ -43,7 +43,7 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> { Set<String> locations = getLocations(serviceCuttedNet); // serialize for deep copy - String serializedNetPath = PnmlExporter.serializeToPnmlFile(petriNet, "-pre-split.pnml"); + String serializedNetPath = PnmlExporter.serializeToPnmlFile(serviceCuttedNet, "-pre-split.pnml"); // filter deep copy elements by location for (String location : locations) { @@ -74,6 +74,15 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> { logger.error("Found place without location."); } } + + for(RefPlace rp : petriNet.allRefPlaces()){ + if (rp.getSubNet() != null) { + allLocations.add(rp.getSubNet()); + } else { + logger.error("Found reference place without location."); + } + } + return allLocations; } @@ -197,7 +206,8 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> { targetIst.setMutualTransitionInformation(tInfoTarget); // Gel all outgoing arcs and connect them to new input transition - for (Arc arc : p.asOutputSignalPlace().getInArcList().toArray(new Arc[0])) { + // for (Arc arc : p.asOutputSignalPlace().getInArcList().toArray(new Arc[0])) { + for(Arc arc : ist.asInputSignalTransition().getOutArcList().toArray(new Arc[0])){ if (arc.getSource().getId().equals(transition.getId())) { arc.setSource(targetIst); } @@ -300,8 +310,8 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> { subscriberIst.setMutualTransitionInformation(tInfoTarget); // Gel all outgoing arcs and connect them to new input transition - for (Arc arc : p.asOutputSignalPlace().getInArcList().toArray(new Arc[0])) { - + // for (Arc arc : p.asOutputSignalPlace().getInArcList().toArray(new Arc[0])) { + for(Arc arc : channelIst.asInputSignalTransition().getOutArcList().toArray(new Arc[0])){ if (arc.getSource().getId().equals(transition.getId())) { arc.setSource(subscriberIst); } @@ -374,7 +384,6 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> { publisherCount++; processedSubnets.add(p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet()); } else { - for (Transition t : transitionsToAdd) { if (t.asInputSignalTransition().getStaticTransitionInformation().getSubNet().equals(p.asOutputSignalPlace().getStaticPlaceInformation().getSubNet())) { // Get all incoming arcs and connect them to new output transition @@ -390,11 +399,13 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> { private static PetriNet createdSeparatedNetByLocation(PetriNet petriNet, String location) { Set<String> removedTransitionIds = new HashSet<>(); - Set<String> removePlaceIds = new HashSet<>(); + Set<String> removedPlaceIds = new HashSet<>(); + Set<String> removedRefTransitionIds = new HashSet<>(); + Set<String> removeRefPlaceIds = new HashSet<>(); for (Place place : petriNet.allPlaces()) { if (!place.asOutputSignalPlace().getStaticPlaceInformation().getSubNet().equals(location)) { - removePlaceIds.add(place.getId()); + removedPlaceIds.add(place.getId()); } } @@ -404,9 +415,23 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> { } } + for (RefPlace place : petriNet.allRefPlaces()) { + if (!place.getSubNet().equals(location)) { + removeRefPlaceIds.add(place.getId()); + } + } + + for (RefTransition transition : petriNet.allRefTransitions()) { + if (!transition.getSubNet().equals(location)) { + removedRefTransitionIds.add(transition.getId()); + } + } + for (Arc arc : petriNet.allArcs()) { if (removedTransitionIds.contains(arc.getSource().getId()) || removedTransitionIds.contains(arc.getTarget().getId()) - || removePlaceIds.contains(arc.getSource().getId()) || removePlaceIds.contains(arc.getTarget().getId())) { + || removedPlaceIds.contains(arc.getSource().getId()) || removedPlaceIds.contains(arc.getTarget().getId()) + || removedRefTransitionIds.contains(arc.getSource().getId()) || removedRefTransitionIds.contains(arc.getTarget().getId()) + || removeRefPlaceIds.contains(arc.getSource().getId()) || removeRefPlaceIds.contains(arc.getTarget().getId())) { logger.info("removing arc " + arc.getId() + " from net"); arc.removeSelf(); } @@ -419,6 +444,20 @@ public class GlobalToLocalNetsPostProcessor implements PostProcessor<PetriNet> { } } + for (RefPlace place : petriNet.allRefPlaces()) { + if (!place.getSubNet().equals(location)) { + logger.info("removing ref place " + place.getId() + " from net"); + place.removeSelf(); + } + } + + for (RefTransition transition : petriNet.allRefTransitions()) { + if (!transition.getSubNet().equals(location)) { + logger.info("removing ref transition " + transition.getId() + " from net"); + transition.removeSelf(); + } + } + for (Transition transition : petriNet.allTransitions()) { if(transition.asInputSignalTransition().getStaticTransitionInformation().isTopicTransitionInformation()){ diff --git a/src/main/java/de/tudresden/inf/st/pnml/splitter/postprocessing/PostProcessingUtils.java b/src/main/java/de/tudresden/inf/st/pnml/splitter/postprocessing/PostProcessingUtils.java index c1abcfa78483acdc0bc2502051e2099c11a43b3a..cbf79912d15541819aac8862e1cc2f20df30e4c1 100644 --- a/src/main/java/de/tudresden/inf/st/pnml/splitter/postprocessing/PostProcessingUtils.java +++ b/src/main/java/de/tudresden/inf/st/pnml/splitter/postprocessing/PostProcessingUtils.java @@ -237,6 +237,18 @@ public class PostProcessingUtils { } } + logger.info("----------------- REF PLACES -----------------"); + + for (RefPlace rp : petriNet.allRefPlaces()){ + logger.info("--- RefPlace: " + rp.getId()); + } + + logger.info("----------------- REF TRANSITIONS -----------------"); + + for (RefTransition rt : petriNet.allRefTransitions()){ + logger.info("--- RefTransition: " + rt.getId()); + } + logger.info("----------------- ARCS -----------------"); for (Arc a : petriNet.allArcs()) { diff --git a/src/main/nets/serviceTest1.pnml b/src/main/nets/serviceTest1.pnml new file mode 100644 index 0000000000000000000000000000000000000000..3777fde46f590b14f3cf0575141530933ac74a5c --- /dev/null +++ b/src/main/nets/serviceTest1.pnml @@ -0,0 +1,185 @@ +<pnml xmlns="http://www.pnml.org/version-2009/grammar/pnml"> + <net id="n-E2D0-BCF46-0" type ="http://www.pnml.org/version-2009/grammar/ptnet"> + <name> + <text>topicTest1</text> + </name> + + <page id="top"> + + <page id="sourcePage"> + <referencePlace id="rp1" ref="channelInPlace"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <location>loc2</location> + <subnet>loc2</subnet> + </toolspecific> + <name> + <text>rp1</text> + <graphics> + <offset x="0" y="0" /> + </graphics> + </name> + <graphics> + <position x="20" y="20"/> + </graphics> + </referencePlace> + + <place id="responsePlace"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <location>loc2</location> + <subnet>loc2</subnet> + </toolspecific> + <name> + <text>responsePlace</text> + <graphics> + <offset x="0" y="-10" /> + </graphics> + </name> + <graphics> + <position x="635" y="90"/> + </graphics> + </place> + </page> + + <page id="channelPage"> + <place id="channelInPlace"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <location>loc2</location> + <subnet>loc2</subnet> + </toolspecific> + <name> + <text>channelInPlace</text> + <graphics> + <offset x="0" y="-10" /> + </graphics> + </name> + <graphics> + <position x="635" y="90"/> + </graphics> + </place> + <transition id="requestTransition"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <location>channel</location> + <subnet>channel</subnet> + <type>serviceTransitionTypeRequest</type> + <serviceName>sampleService</serviceName> + </toolspecific> + <name> + <text>requestTransition</text> + <graphics> + <offset x="0" y="0" /> + </graphics> + </name> + <graphics> + <position x="285" y="205"/> + </graphics> + </transition> + <referencePlace id="rp2" ref="responseSourcePlace"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <location>loc3</location> + <subnet>loc3</subnet> + </toolspecific> + <name> + <text>rp2</text> + <graphics> + <offset x="0" y="0" /> + </graphics> + </name> + <graphics> + <position x="20" y="20"/> + </graphics> + </referencePlace> + + <place id="responseInPlace"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <location>loc3</location> + <subnet>loc3</subnet> + </toolspecific> + <name> + <text>responseInPlace</text> + <graphics> + <offset x="0" y="-10" /> + </graphics> + </name> + <graphics> + <position x="635" y="90"/> + </graphics> + </place> + <transition id="responseTransition"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <location>channel</location> + <subnet>channel</subnet> + <type>serviceTransitionTypeResponse</type> + <serviceName>sampleService</serviceName> + </toolspecific> + <name> + <text>responseTransition</text> + <graphics> + <offset x="0" y="0" /> + </graphics> + </name> + <graphics> + <position x="285" y="205"/> + </graphics> + </transition> + <referencePlace id="rp4" ref="responsePlace"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <location>loc2</location> + <subnet>loc2</subnet> + </toolspecific> + <name> + <text>rp4</text> + <graphics> + <offset x="0" y="0" /> + </graphics> + </name> + <graphics> + <position x="20" y="20"/> + </graphics> + </referencePlace> + + <arc id="a1" source="channelInPlace" target="requestTransition"> + </arc> + <arc id="a2" source="requestTransition" target="rp2"> + </arc> + <arc id="a3" source="responseSourcePlace" target="responseTransition"> + </arc> + <arc id="a4" source="responseTransition" target="rp4"> + </arc> + </page> + + <page id="targetPage"> + <place id="responseSourcePlace"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <location>loc3</location> + <subnet>loc3</subnet> + </toolspecific> + <name> + <text>responseSourcePlace</text> + <graphics> + <offset x="0" y="-10" /> + </graphics> + </name> + <graphics> + <position x="635" y="90"/> + </graphics> + </place> + + <referencePlace id="rp3" ref="responseInPlace"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <location>loc3</location> + <subnet>loc3</subnet> + </toolspecific> + <name> + <text>rp3</text> + <graphics> + <offset x="0" y="0" /> + </graphics> + </name> + <graphics> + <position x="20" y="20"/> + </graphics> + </referencePlace> + </page> + </page> + </net> +</pnml> \ No newline at end of file diff --git a/src/main/nets/topicTest1.pnml b/src/main/nets/topicTest1.pnml new file mode 100644 index 0000000000000000000000000000000000000000..c8ab79daf5b5dad6e460bff670ba3393429db8bb --- /dev/null +++ b/src/main/nets/topicTest1.pnml @@ -0,0 +1,102 @@ +<pnml xmlns="http://www.pnml.org/version-2009/grammar/pnml"> + <net id="n-E2D0-BCF46-0" type ="http://www.pnml.org/version-2009/grammar/ptnet"> + <name> + <text>topicTest1</text> + </name> + + <page id="top"> + + <page id="sourcePage"> + <referencePlace id="rp1" ref="channelInPlace"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <location>loc2</location> + <subnet>loc2</subnet> + </toolspecific> + <name> + <text>rp1</text> + <graphics> + <offset x="0" y="0" /> + </graphics> + </name> + <graphics> + <position x="20" y="20"/> + </graphics> + </referencePlace> + </page> + + <page id="channelPage"> + <place id="channelInPlace"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <location>loc2</location> + <subnet>loc2</subnet> + </toolspecific> + <name> + <text>channelInPlace</text> + <graphics> + <offset x="0" y="-10" /> + </graphics> + </name> + <graphics> + <position x="635" y="90"/> + </graphics> + </place> + <transition id="channelTransition"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <location>channel</location> + <subnet>channel</subnet> + <type>topicTransitionType</type> + <topic>sampleTopic</topic> + <inputlimit>10</inputlimit> + <outputlimit>10</outputlimit> + </toolspecific> + <name> + <text>channelTransition</text> + <graphics> + <offset x="0" y="0" /> + </graphics> + </name> + <graphics> + <position x="285" y="205"/> + </graphics> + </transition> + <referencePlace id="rp2" ref="outRefPlace"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <location>loc3</location> + <subnet>loc3</subnet> + </toolspecific> + <name> + <text>rp2</text> + <graphics> + <offset x="0" y="0" /> + </graphics> + </name> + <graphics> + <position x="20" y="20"/> + </graphics> + </referencePlace> + <arc id="a1" source="channelInPlace" target="channelTransition"> + </arc> + <arc id="a2" source="channelTransition" target="rp2"> + </arc> + </page> + + <page id="targetPage"> + <place id="outRefPlace"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <location>loc3</location> + <subnet>loc3</subnet> + </toolspecific> + <name> + <text>outRefPlace</text> + <graphics> + <offset x="0" y="-10" /> + </graphics> + </name> + <graphics> + <position x="635" y="90"/> + </graphics> + </place> + </page> + </page> + </net> +</pnml> \ No newline at end of file diff --git a/src/main/nets/topicTest2.pnml b/src/main/nets/topicTest2.pnml new file mode 100644 index 0000000000000000000000000000000000000000..4043758e31c7c010ac19de6685831695a2151600 --- /dev/null +++ b/src/main/nets/topicTest2.pnml @@ -0,0 +1,119 @@ +<pnml xmlns="http://www.pnml.org/version-2009/grammar/pnml"> + <net id="n-E2D0-BCF46-0" type ="http://www.pnml.org/version-2009/grammar/ptnet"> + <name> + <text>topicTest1</text> + </name> + + <page id="top"> + + <page id="sourcePage"> + <referencePlace id="rp1" ref="channelInPlace"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <location>loc2</location> + <subnet>loc2</subnet> + </toolspecific> + <name> + <text>rp1</text> + <graphics> + <offset x="0" y="0" /> + </graphics> + </name> + <graphics> + <position x="20" y="20"/> + </graphics> + </referencePlace> + </page> + + <page id="channelPage"> + <place id="channelInPlace"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <location>loc2</location> + <subnet>loc2</subnet> + </toolspecific> + <name> + <text>channelInPlace</text> + <graphics> + <offset x="0" y="-10" /> + </graphics> + </name> + <graphics> + <position x="635" y="90"/> + </graphics> + </place> + <place id="channelInPlace2"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <location>loc2</location> + <subnet>loc2</subnet> + </toolspecific> + <name> + <text>channelInPlace2</text> + <graphics> + <offset x="0" y="-10" /> + </graphics> + </name> + <graphics> + <position x="635" y="90"/> + </graphics> + </place> + <transition id="channelTransition"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <location>channel</location> + <subnet>channel</subnet> + <type>topicTransitionType</type> + <topic>sampleTopic</topic> + <inputlimit>10</inputlimit> + <outputlimit>10</outputlimit> + </toolspecific> + <name> + <text>channelTransition</text> + <graphics> + <offset x="0" y="0" /> + </graphics> + </name> + <graphics> + <position x="285" y="205"/> + </graphics> + </transition> + <referencePlace id="rp2" ref="outRefPlace"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <location>loc3</location> + <subnet>loc3</subnet> + </toolspecific> + <name> + <text>rp2</text> + <graphics> + <offset x="0" y="0" /> + </graphics> + </name> + <graphics> + <position x="20" y="20"/> + </graphics> + </referencePlace> + <arc id="a1" source="channelInPlace" target="channelTransition"> + </arc> + <arc id="a2" source="channelTransition" target="rp2"> + </arc> + <arc id="a3" source="channelInPlace2" target="channelTransition"> + </arc> + </page> + + <page id="targetPage"> + <place id="outRefPlace"> + <toolspecific tool="de.tudresden.inf.st.pnml.distributedPN" version="0.1"> + <location>loc3</location> + <subnet>loc3</subnet> + </toolspecific> + <name> + <text>outRefPlace</text> + <graphics> + <offset x="0" y="-10" /> + </graphics> + </name> + <graphics> + <position x="635" y="90"/> + </graphics> + </place> + </page> + </page> + </net> +</pnml> \ No newline at end of file