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

fixed place reference related bugs, added testnets for new services and topics

parent efbc11cc
No related branches found
No related tags found
No related merge requests found
......@@ -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')
......
......@@ -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));
......
......@@ -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) {
......
......@@ -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()){
......
......@@ -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()) {
......
<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
<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
<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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment