FIN TP4
|
@ -31,3 +31,43 @@ java.lang.InterruptedException
|
||||||
at org.eclipse.osgi.container.SystemModule.stop(SystemModule.java:207)
|
at org.eclipse.osgi.container.SystemModule.stop(SystemModule.java:207)
|
||||||
at org.eclipse.osgi.internal.framework.EquinoxBundle$SystemBundle$EquinoxSystemModule$1.run(EquinoxBundle.java:220)
|
at org.eclipse.osgi.internal.framework.EquinoxBundle$SystemBundle$EquinoxSystemModule$1.run(EquinoxBundle.java:220)
|
||||||
at java.base/java.lang.Thread.run(Thread.java:829)
|
at java.base/java.lang.Thread.run(Thread.java:829)
|
||||||
|
!SESSION 2021-10-10 00:17:29.406 -----------------------------------------------
|
||||||
|
eclipse.buildId=4.17.0.I20200902-1800
|
||||||
|
java.version=11.0.11
|
||||||
|
java.vendor=Ubuntu
|
||||||
|
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=fr_FR
|
||||||
|
Framework arguments: -product org.eclipse.epp.package.modeling.product
|
||||||
|
Command-line arguments: -os linux -ws gtk -arch x86_64 -product org.eclipse.epp.package.modeling.product
|
||||||
|
|
||||||
|
!ENTRY org.eclipse.emf.cdo.explorer 4 0 2021-10-10 00:27:51.311
|
||||||
|
!MESSAGE InterruptedException
|
||||||
|
!STACK 0
|
||||||
|
java.lang.InterruptedException
|
||||||
|
at java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1343)
|
||||||
|
at java.base/java.util.concurrent.Semaphore.acquire(Semaphore.java:318)
|
||||||
|
at org.eclipse.net4j.util.lifecycle.Lifecycle.lock(Lifecycle.java:312)
|
||||||
|
at org.eclipse.net4j.util.lifecycle.Lifecycle.internalDeactivate(Lifecycle.java:118)
|
||||||
|
at org.eclipse.net4j.util.lifecycle.ShareableLifecycle.internalDeactivate(ShareableLifecycle.java:52)
|
||||||
|
at org.eclipse.net4j.util.lifecycle.Lifecycle.deactivate(Lifecycle.java:170)
|
||||||
|
at org.eclipse.net4j.util.lifecycle.LifecycleUtil.deactivate(LifecycleUtil.java:235)
|
||||||
|
at org.eclipse.net4j.util.lifecycle.LifecycleUtil.deactivate(LifecycleUtil.java:225)
|
||||||
|
at org.eclipse.emf.cdo.internal.explorer.bundle.OM.disposeManagers(OM.java:83)
|
||||||
|
at org.eclipse.emf.cdo.internal.explorer.bundle.OM$Activator.doStop(OM.java:136)
|
||||||
|
at org.eclipse.net4j.util.om.OSGiActivator.stop(OSGiActivator.java:92)
|
||||||
|
at org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:871)
|
||||||
|
at org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:1)
|
||||||
|
at java.base/java.security.AccessController.doPrivileged(Native Method)
|
||||||
|
at org.eclipse.osgi.internal.framework.BundleContextImpl.stop(BundleContextImpl.java:863)
|
||||||
|
at org.eclipse.osgi.internal.framework.EquinoxBundle.stopWorker0(EquinoxBundle.java:1025)
|
||||||
|
at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.stopWorker(EquinoxBundle.java:370)
|
||||||
|
at org.eclipse.osgi.container.Module.doStop(Module.java:660)
|
||||||
|
at org.eclipse.osgi.container.Module.stop(Module.java:521)
|
||||||
|
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.decStartLevel(ModuleContainer.java:1886)
|
||||||
|
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1761)
|
||||||
|
at org.eclipse.osgi.container.SystemModule.stopWorker(SystemModule.java:275)
|
||||||
|
at org.eclipse.osgi.internal.framework.EquinoxBundle$SystemBundle$EquinoxSystemModule.stopWorker(EquinoxBundle.java:202)
|
||||||
|
at org.eclipse.osgi.container.Module.doStop(Module.java:660)
|
||||||
|
at org.eclipse.osgi.container.Module.stop(Module.java:521)
|
||||||
|
at org.eclipse.osgi.container.SystemModule.stop(SystemModule.java:207)
|
||||||
|
at org.eclipse.osgi.internal.framework.EquinoxBundle$SystemBundle$EquinoxSystemModule$1.run(EquinoxBundle.java:220)
|
||||||
|
at java.base/java.lang.Thread.run(Thread.java:829)
|
||||||
|
|
|
@ -0,0 +1,187 @@
|
||||||
|
package simplepdl.manip;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.eclipse.emf.common.util.URI;
|
||||||
|
import org.eclipse.emf.ecore.resource.Resource;
|
||||||
|
import org.eclipse.emf.ecore.resource.ResourceSet;
|
||||||
|
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
|
||||||
|
import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
|
||||||
|
|
||||||
|
import petrinet.PetrinetPackage;
|
||||||
|
import petrinet.Place;
|
||||||
|
import petrinet.Transition;
|
||||||
|
import petrinet.Arc;
|
||||||
|
import petrinet.Network;
|
||||||
|
import petrinet.Node;
|
||||||
|
import petrinet.PetrinetFactory;
|
||||||
|
import simplepdl.Process;
|
||||||
|
import simplepdl.WorkDefinition;
|
||||||
|
import simplepdl.WorkSequence;
|
||||||
|
import simplepdl.WorkSequenceType;
|
||||||
|
import simplepdl.SimplepdlPackage;
|
||||||
|
|
||||||
|
public class simplepdl2petrinet {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
// Charger les package SimplePDL et Petrinet afin de les enregistrer dans le registre d'Eclipse.
|
||||||
|
SimplepdlPackage packageInstance = SimplepdlPackage.eINSTANCE;
|
||||||
|
PetrinetPackage packageInstance2 = PetrinetPackage.eINSTANCE;
|
||||||
|
|
||||||
|
// Enregistrer l'extension ".xmi" comme devant être ouverte à
|
||||||
|
// l'aide d'un objet "XMIResourceFactoryImpl"
|
||||||
|
Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE;
|
||||||
|
Map<String, Object> m = reg.getExtensionToFactoryMap();
|
||||||
|
m.put("xmi", new XMIResourceFactoryImpl());
|
||||||
|
|
||||||
|
// Créer un objet resourceSetImpl qui contiendra une ressource EMF (le modèle)
|
||||||
|
ResourceSet resSet = new ResourceSetImpl();
|
||||||
|
|
||||||
|
// Charger la ressource (notre modèle)
|
||||||
|
URI modelURI = URI.createURI("pdl-sujet.xmi");
|
||||||
|
Resource resource = resSet.getResource(modelURI, true);
|
||||||
|
|
||||||
|
// Récupérer le premier élément du modèle (élément racine)
|
||||||
|
Process process = (Process) resource.getContents().get(0);
|
||||||
|
|
||||||
|
// La fabrique pour fabriquer les éléments de PetriNET
|
||||||
|
PetrinetFactory myFactory = PetrinetFactory.eINSTANCE;
|
||||||
|
|
||||||
|
// Créer un élément Network
|
||||||
|
Network network = myFactory.createNetwork();
|
||||||
|
network.setName(process.getName());
|
||||||
|
|
||||||
|
// Conversion des WorkDefinition en Node et Transition
|
||||||
|
for (Object o : process.getProcessElements()) {
|
||||||
|
if (o instanceof WorkDefinition) {
|
||||||
|
WorkDefinition wd = (WorkDefinition) o;
|
||||||
|
String name = wd.getName();
|
||||||
|
|
||||||
|
Place idle = myFactory.createPlace();
|
||||||
|
idle.setName(name + "_idle");
|
||||||
|
idle.setTokens(1);
|
||||||
|
Place started = myFactory.createPlace();
|
||||||
|
started.setName(name + "_started");
|
||||||
|
started.setTokens(0);
|
||||||
|
Place running = myFactory.createPlace();
|
||||||
|
running.setName(name + "_running");
|
||||||
|
running.setTokens(0);
|
||||||
|
Place finished = myFactory.createPlace();
|
||||||
|
finished.setName(name + "_finished");
|
||||||
|
finished.setTokens(0);
|
||||||
|
|
||||||
|
Arc pause2start = myFactory.createArc();
|
||||||
|
pause2start.setTarget(idle);
|
||||||
|
pause2start.setOutgoing(false);
|
||||||
|
pause2start.setWeight(1);
|
||||||
|
Arc start2running = myFactory.createArc();
|
||||||
|
start2running.setTarget(running);
|
||||||
|
start2running.setOutgoing(true);
|
||||||
|
start2running.setWeight(1);
|
||||||
|
Arc start2started = myFactory.createArc();
|
||||||
|
start2started.setTarget(started);
|
||||||
|
start2started.setOutgoing(true);
|
||||||
|
start2started.setWeight(1);
|
||||||
|
Transition start = myFactory.createTransition();
|
||||||
|
start.setName(name + "_start");
|
||||||
|
start.getArcs().add(pause2start);
|
||||||
|
start.getArcs().add(start2running);
|
||||||
|
start.getArcs().add(start2started);
|
||||||
|
|
||||||
|
Arc running2finish = myFactory.createArc();
|
||||||
|
running2finish.setTarget(running);
|
||||||
|
running2finish.setOutgoing(false);
|
||||||
|
running2finish.setWeight(1);
|
||||||
|
Arc finish2finished = myFactory.createArc();
|
||||||
|
finish2finished.setTarget(finished);
|
||||||
|
finish2finished.setOutgoing(true);
|
||||||
|
finish2finished.setWeight(1);
|
||||||
|
Transition finish = myFactory.createTransition();
|
||||||
|
finish.setName(name + "_finish");
|
||||||
|
finish.getArcs().add(running2finish);
|
||||||
|
finish.getArcs().add(finish2finished);
|
||||||
|
|
||||||
|
network.getNodes().add(idle);
|
||||||
|
network.getNodes().add(start);
|
||||||
|
network.getNodes().add(started);
|
||||||
|
network.getNodes().add(running);
|
||||||
|
network.getNodes().add(finish);
|
||||||
|
network.getNodes().add(finished);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Conversion des WorkSequence en Node et Transition
|
||||||
|
for (Object o : process.getProcessElements()) {
|
||||||
|
if (o instanceof WorkSequence) {
|
||||||
|
WorkSequence ws = (WorkSequence) o;
|
||||||
|
WorkSequenceType type = ws.getLinkType();
|
||||||
|
WorkDefinition predecessor = ws.getPredecessor();
|
||||||
|
WorkDefinition successor = ws.getSuccessor();
|
||||||
|
|
||||||
|
Arc arc = myFactory.createArc();
|
||||||
|
arc.setOutgoing(false);
|
||||||
|
|
||||||
|
|
||||||
|
String predecessor_suffix = new String();
|
||||||
|
String successor_suffix = new String();
|
||||||
|
switch (type) {
|
||||||
|
case START_TO_START:
|
||||||
|
predecessor_suffix = "_started";
|
||||||
|
successor_suffix = "_start";
|
||||||
|
break;
|
||||||
|
case START_TO_FINISH:
|
||||||
|
predecessor_suffix = "_started";
|
||||||
|
successor_suffix = "_finished";
|
||||||
|
break;
|
||||||
|
case FINISH_TO_START:
|
||||||
|
predecessor_suffix = "_finished";
|
||||||
|
successor_suffix = "_start";
|
||||||
|
break;
|
||||||
|
case FINISH_TO_FINISH:
|
||||||
|
predecessor_suffix = "_finished";
|
||||||
|
successor_suffix = "_finish";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
System.out.print("the fuck ?");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (Node node : network.getNodes()) {
|
||||||
|
if (node instanceof Place) {
|
||||||
|
Place place = (Place) node;
|
||||||
|
if (place.getName().equals(predecessor.getName() + predecessor_suffix)) {
|
||||||
|
arc.setTarget(place);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (node instanceof Transition) {
|
||||||
|
Transition transition = (Transition) node;
|
||||||
|
if (transition.getName().equals(successor.getName() + successor_suffix)) {
|
||||||
|
transition.getArcs().add(arc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Créer le nouveau xmi (modèle convertit)
|
||||||
|
URI convURI = URI.createURI("models/test.xmi");
|
||||||
|
Resource conv = resSet.createResource(convURI);
|
||||||
|
|
||||||
|
// Ajouter le Network dans le nouveau modèle
|
||||||
|
conv.getContents().add(network);
|
||||||
|
|
||||||
|
// Sauver la ressource
|
||||||
|
try {
|
||||||
|
conv.save(Collections.EMPTY_MAP);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,193 @@
|
||||||
|
package simplepdl.manip;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.eclipse.emf.common.util.URI;
|
||||||
|
import org.eclipse.emf.ecore.resource.Resource;
|
||||||
|
import org.eclipse.emf.ecore.resource.ResourceSet;
|
||||||
|
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
|
||||||
|
import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
|
||||||
|
|
||||||
|
import petrinet.PetrinetPackage;
|
||||||
|
import petrinet.Place;
|
||||||
|
import petrinet.Transition;
|
||||||
|
import petrinet.Arc;
|
||||||
|
import petrinet.Network;
|
||||||
|
import petrinet.Node;
|
||||||
|
import petrinet.PetrinetFactory;
|
||||||
|
import simplepdl.Process;
|
||||||
|
import simplepdl.WorkDefinition;
|
||||||
|
import simplepdl.WorkSequence;
|
||||||
|
import simplepdl.WorkSequenceType;
|
||||||
|
import simplepdl.SimplepdlPackage;
|
||||||
|
|
||||||
|
public class simplepdl2petrinet {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
// Charger les package SimplePDL et Petrinet afin de les enregistrer dans le registre d'Eclipse.
|
||||||
|
SimplepdlPackage packageInstance = SimplepdlPackage.eINSTANCE;
|
||||||
|
PetrinetPackage packageInstance2 = PetrinetPackage.eINSTANCE;
|
||||||
|
|
||||||
|
// Enregistrer l'extension ".xmi" comme devant être ouverte à
|
||||||
|
// l'aide d'un objet "XMIResourceFactoryImpl"
|
||||||
|
Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE;
|
||||||
|
Map<String, Object> m = reg.getExtensionToFactoryMap();
|
||||||
|
m.put("xmi", new XMIResourceFactoryImpl());
|
||||||
|
|
||||||
|
// Créer un objet resourceSetImpl qui contiendra une ressource EMF (le modèle)
|
||||||
|
ResourceSet resSet = new ResourceSetImpl();
|
||||||
|
|
||||||
|
// Charger la ressource (notre modèle)
|
||||||
|
URI modelURI = URI.createURI("pdl-sujet.xmi");
|
||||||
|
Resource resource = resSet.getResource(modelURI, true);
|
||||||
|
|
||||||
|
// Récupérer le premier élément du modèle (élément racine)
|
||||||
|
Process process = (Process) resource.getContents().get(0);
|
||||||
|
|
||||||
|
// La fabrique pour fabriquer les éléments de PetriNET
|
||||||
|
PetrinetFactory myFactory = PetrinetFactory.eINSTANCE;
|
||||||
|
|
||||||
|
// Créer un élément Network
|
||||||
|
Network network = myFactory.createNetwork();
|
||||||
|
network.setName(process.getName());
|
||||||
|
|
||||||
|
// Conversion des WorkDefinition en Node et Transition
|
||||||
|
for (Object o : process.getProcessElements()) {
|
||||||
|
if (o instanceof WorkDefinition) {
|
||||||
|
WorkDefinition wd = (WorkDefinition) o;
|
||||||
|
String name = wd.getName();
|
||||||
|
|
||||||
|
Place idle = myFactory.createPlace();
|
||||||
|
idle.setName(name + "_idle");
|
||||||
|
idle.setTokens(1);
|
||||||
|
Place started = myFactory.createPlace();
|
||||||
|
started.setName(name + "_started");
|
||||||
|
started.setTokens(0);
|
||||||
|
Place running = myFactory.createPlace();
|
||||||
|
running.setName(name + "_running");
|
||||||
|
running.setTokens(0);
|
||||||
|
Place finished = myFactory.createPlace();
|
||||||
|
finished.setName(name + "_finished");
|
||||||
|
finished.setTokens(0);
|
||||||
|
|
||||||
|
Arc pause2start = myFactory.createArc();
|
||||||
|
pause2start.setTarget(idle);
|
||||||
|
pause2start.setOutgoing(false);
|
||||||
|
pause2start.setWeight(1);
|
||||||
|
Arc start2running = myFactory.createArc();
|
||||||
|
start2running.setTarget(running);
|
||||||
|
start2running.setOutgoing(true);
|
||||||
|
start2running.setWeight(1);
|
||||||
|
Arc start2started = myFactory.createArc();
|
||||||
|
start2started.setTarget(started);
|
||||||
|
start2started.setOutgoing(true);
|
||||||
|
start2started.setWeight(1);
|
||||||
|
Transition start = myFactory.createTransition();
|
||||||
|
start.setName(name + "_start");
|
||||||
|
start.getArcs().add(pause2start);
|
||||||
|
start.getArcs().add(start2running);
|
||||||
|
start.getArcs().add(start2started);
|
||||||
|
|
||||||
|
Arc running2finish = myFactory.createArc();
|
||||||
|
running2finish.setTarget(running);
|
||||||
|
running2finish.setOutgoing(false);
|
||||||
|
running2finish.setWeight(1);
|
||||||
|
Arc finish2finished = myFactory.createArc();
|
||||||
|
finish2finished.setTarget(finished);
|
||||||
|
finish2finished.setOutgoing(true);
|
||||||
|
finish2finished.setWeight(1);
|
||||||
|
Transition finish = myFactory.createTransition();
|
||||||
|
finish.setName(name + "_finish");
|
||||||
|
finish.getArcs().add(running2finish);
|
||||||
|
finish.getArcs().add(finish2finished);
|
||||||
|
|
||||||
|
network.getNodes().add(idle);
|
||||||
|
network.getNodes().add(start);
|
||||||
|
network.getNodes().add(started);
|
||||||
|
network.getNodes().add(running);
|
||||||
|
network.getNodes().add(finish);
|
||||||
|
network.getNodes().add(finished);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Conversion des WorkSequence en Node et Transition
|
||||||
|
for (Object o : process.getProcessElements()) {
|
||||||
|
if (o instanceof WorkSequence) {
|
||||||
|
WorkSequence ws = (WorkSequence) o;
|
||||||
|
WorkSequenceType type = ws.getLinkType();
|
||||||
|
WorkDefinition predecessor = ws.getPredecessor();
|
||||||
|
WorkDefinition successor = ws.getSuccessor();
|
||||||
|
|
||||||
|
System.out.println(predecessor.getName());
|
||||||
|
|
||||||
|
// creation des suffixs permettant la recherche des noeuds
|
||||||
|
String predecessor_suffix = new String();
|
||||||
|
String successor_suffix = new String();
|
||||||
|
switch (type) {
|
||||||
|
case START_TO_START:
|
||||||
|
predecessor_suffix = "_started";
|
||||||
|
successor_suffix = "_start";
|
||||||
|
break;
|
||||||
|
case START_TO_FINISH:
|
||||||
|
predecessor_suffix = "_started";
|
||||||
|
successor_suffix = "_finished";
|
||||||
|
break;
|
||||||
|
case FINISH_TO_START:
|
||||||
|
predecessor_suffix = "_finished";
|
||||||
|
successor_suffix = "_start";
|
||||||
|
break;
|
||||||
|
case FINISH_TO_FINISH:
|
||||||
|
predecessor_suffix = "_finished";
|
||||||
|
successor_suffix = "_finish";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
System.out.print("the fuck ?");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// creation du read-arc
|
||||||
|
Arc arc1 = myFactory.createArc();
|
||||||
|
arc1.setOutgoing(false);
|
||||||
|
arc1.setWeight(1);
|
||||||
|
Arc arc2 = myFactory.createArc();
|
||||||
|
arc2.setOutgoing(true);
|
||||||
|
arc2.setWeight(1);
|
||||||
|
|
||||||
|
for (Node node : network.getNodes()) {
|
||||||
|
if (node instanceof Place) {
|
||||||
|
Place place = (Place) node;
|
||||||
|
if (place.getName().equals(predecessor.getName() + predecessor_suffix)) {
|
||||||
|
arc1.setTarget(place);
|
||||||
|
arc2.setTarget(place);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (node instanceof Transition) {
|
||||||
|
Transition transition = (Transition) node;
|
||||||
|
if (transition.getName().equals(successor.getName() + successor_suffix)) {
|
||||||
|
transition.getArcs().add(arc1);
|
||||||
|
transition.getArcs().add(arc2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Créer le nouveau xmi (modèle convertit)
|
||||||
|
URI convURI = URI.createURI("models/Developpement_petrinet.xmi");
|
||||||
|
Resource conv = resSet.createResource(convURI);
|
||||||
|
|
||||||
|
// Ajouter le Network dans le nouveau modèle
|
||||||
|
conv.getContents().add(network);
|
||||||
|
|
||||||
|
// Sauver la ressource
|
||||||
|
try {
|
||||||
|
conv.save(Collections.EMPTY_MAP);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,194 @@
|
||||||
|
package simplepdl.manip;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.eclipse.emf.common.util.URI;
|
||||||
|
import org.eclipse.emf.ecore.resource.Resource;
|
||||||
|
import org.eclipse.emf.ecore.resource.ResourceSet;
|
||||||
|
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
|
||||||
|
import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
|
||||||
|
|
||||||
|
import petrinet.PetrinetPackage;
|
||||||
|
import petrinet.Place;
|
||||||
|
import petrinet.Transition;
|
||||||
|
import petrinet.Arc;
|
||||||
|
import petrinet.Network;
|
||||||
|
import petrinet.Node;
|
||||||
|
import petrinet.PetrinetFactory;
|
||||||
|
import simplepdl.Process;
|
||||||
|
import simplepdl.WorkDefinition;
|
||||||
|
import simplepdl.WorkSequence;
|
||||||
|
import simplepdl.WorkSequenceType;
|
||||||
|
import simplepdl.SimplepdlPackage;
|
||||||
|
|
||||||
|
public class simplepdl2petrinet {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
// Charger les package SimplePDL et Petrinet afin de les enregistrer dans le registre d'Eclipse.
|
||||||
|
SimplepdlPackage packageInstance = SimplepdlPackage.eINSTANCE;
|
||||||
|
PetrinetPackage packageInstance2 = PetrinetPackage.eINSTANCE;
|
||||||
|
|
||||||
|
// Enregistrer l'extension ".xmi" comme devant être ouverte à
|
||||||
|
// l'aide d'un objet "XMIResourceFactoryImpl"
|
||||||
|
Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE;
|
||||||
|
Map<String, Object> m = reg.getExtensionToFactoryMap();
|
||||||
|
m.put("xmi", new XMIResourceFactoryImpl());
|
||||||
|
|
||||||
|
// Créer un objet resourceSetImpl qui contiendra une ressource EMF (le modèle)
|
||||||
|
ResourceSet resSet = new ResourceSetImpl();
|
||||||
|
|
||||||
|
// Charger la ressource (notre modèle)
|
||||||
|
URI modelURI = URI.createURI("pdl-sujet.xmi");
|
||||||
|
Resource resource = resSet.getResource(modelURI, true);
|
||||||
|
|
||||||
|
// Récupérer le premier élément du modèle (élément racine)
|
||||||
|
Process process = (Process) resource.getContents().get(0);
|
||||||
|
|
||||||
|
// La fabrique pour fabriquer les éléments de PetriNET
|
||||||
|
PetrinetFactory myFactory = PetrinetFactory.eINSTANCE;
|
||||||
|
|
||||||
|
// Créer un élément Network
|
||||||
|
Network network = myFactory.createNetwork();
|
||||||
|
network.setName(process.getName());
|
||||||
|
|
||||||
|
// Conversion des WorkDefinition en Node et Transition
|
||||||
|
for (Object o : process.getProcessElements()) {
|
||||||
|
if (o instanceof WorkDefinition) {
|
||||||
|
WorkDefinition wd = (WorkDefinition) o;
|
||||||
|
String name = wd.getName();
|
||||||
|
|
||||||
|
Place idle = myFactory.createPlace();
|
||||||
|
idle.setName(name + "_idle");
|
||||||
|
idle.setTokens(1);
|
||||||
|
Place started = myFactory.createPlace();
|
||||||
|
started.setName(name + "_started");
|
||||||
|
started.setTokens(0);
|
||||||
|
Place running = myFactory.createPlace();
|
||||||
|
running.setName(name + "_running");
|
||||||
|
running.setTokens(0);
|
||||||
|
Place finished = myFactory.createPlace();
|
||||||
|
finished.setName(name + "_finished");
|
||||||
|
finished.setTokens(0);
|
||||||
|
|
||||||
|
Arc pause2start = myFactory.createArc();
|
||||||
|
pause2start.setTarget(idle);
|
||||||
|
pause2start.setOutgoing(false);
|
||||||
|
pause2start.setWeight(1);
|
||||||
|
Arc start2running = myFactory.createArc();
|
||||||
|
start2running.setTarget(running);
|
||||||
|
start2running.setOutgoing(true);
|
||||||
|
start2running.setWeight(1);
|
||||||
|
Arc start2started = myFactory.createArc();
|
||||||
|
start2started.setTarget(started);
|
||||||
|
start2started.setOutgoing(true);
|
||||||
|
start2started.setWeight(1);
|
||||||
|
Transition start = myFactory.createTransition();
|
||||||
|
start.setName(name + "_start");
|
||||||
|
start.getArcs().add(pause2start);
|
||||||
|
start.getArcs().add(start2running);
|
||||||
|
start.getArcs().add(start2started);
|
||||||
|
|
||||||
|
Arc running2finish = myFactory.createArc();
|
||||||
|
running2finish.setTarget(running);
|
||||||
|
running2finish.setOutgoing(false);
|
||||||
|
running2finish.setWeight(1);
|
||||||
|
Arc finish2finished = myFactory.createArc();
|
||||||
|
finish2finished.setTarget(finished);
|
||||||
|
finish2finished.setOutgoing(true);
|
||||||
|
finish2finished.setWeight(1);
|
||||||
|
Transition finish = myFactory.createTransition();
|
||||||
|
finish.setName(name + "_finish");
|
||||||
|
finish.getArcs().add(running2finish);
|
||||||
|
finish.getArcs().add(finish2finished);
|
||||||
|
|
||||||
|
network.getNodes().add(idle);
|
||||||
|
network.getNodes().add(start);
|
||||||
|
network.getNodes().add(started);
|
||||||
|
network.getNodes().add(running);
|
||||||
|
network.getNodes().add(finish);
|
||||||
|
network.getNodes().add(finished);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Conversion des WorkSequence en Node et Transition
|
||||||
|
for (Object o : process.getProcessElements()) {
|
||||||
|
if (o instanceof WorkSequence) {
|
||||||
|
WorkSequence ws = (WorkSequence) o;
|
||||||
|
WorkSequenceType type = ws.getLinkType();
|
||||||
|
WorkDefinition predecessor = ws.getPredecessor();
|
||||||
|
WorkDefinition successor = ws.getSuccessor();
|
||||||
|
|
||||||
|
// creation des suffixs permettant la recherche des noeuds
|
||||||
|
String predecessor_suffix = new String();
|
||||||
|
String successor_suffix = new String();
|
||||||
|
switch (type) {
|
||||||
|
case START_TO_START:
|
||||||
|
predecessor_suffix = "_started";
|
||||||
|
successor_suffix = "_start";
|
||||||
|
break;
|
||||||
|
case START_TO_FINISH:
|
||||||
|
predecessor_suffix = "_started";
|
||||||
|
successor_suffix = "_finished";
|
||||||
|
break;
|
||||||
|
case FINISH_TO_START:
|
||||||
|
predecessor_suffix = "_finished";
|
||||||
|
successor_suffix = "_start";
|
||||||
|
break;
|
||||||
|
case FINISH_TO_FINISH:
|
||||||
|
predecessor_suffix = "_finished";
|
||||||
|
successor_suffix = "_finish";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
System.out.print("the fuck ?");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// creation du read-arc
|
||||||
|
Arc arc1 = myFactory.createArc();
|
||||||
|
arc1.setOutgoing(false);
|
||||||
|
arc1.setWeight(1);
|
||||||
|
Arc arc2 = myFactory.createArc();
|
||||||
|
arc2.setOutgoing(true);
|
||||||
|
arc2.setWeight(1);
|
||||||
|
|
||||||
|
for (Node node : network.getNodes()) {
|
||||||
|
if (node instanceof Place) {
|
||||||
|
Place place = (Place) node;
|
||||||
|
if (place.getName().equals(predecessor.getName() + predecessor_suffix)) {
|
||||||
|
arc1.setTarget(place);
|
||||||
|
arc2.setTarget(place);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (node instanceof Transition) {
|
||||||
|
Transition transition = (Transition) node;
|
||||||
|
if (transition.getName().equals(successor.getName() + successor_suffix)) {
|
||||||
|
transition.getArcs().add(arc1);
|
||||||
|
transition.getArcs().add(arc2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Créer le nouveau xmi (modèle convertit)
|
||||||
|
URI convURI = URI.createURI("models/test.xmi");
|
||||||
|
Resource conv = resSet.createResource(convURI);
|
||||||
|
|
||||||
|
// Ajouter le Network dans le nouveau modèle
|
||||||
|
conv.getContents().add(network);
|
||||||
|
|
||||||
|
// Sauver la ressource
|
||||||
|
try {
|
||||||
|
conv.save(Collections.EMPTY_MAP);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,130 @@
|
||||||
|
package simplepdl.manip;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.eclipse.emf.common.util.URI;
|
||||||
|
import org.eclipse.emf.ecore.resource.Resource;
|
||||||
|
import org.eclipse.emf.ecore.resource.ResourceSet;
|
||||||
|
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
|
||||||
|
import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
|
||||||
|
|
||||||
|
import petrinet.PetrinetPackage;
|
||||||
|
import petrinet.Place;
|
||||||
|
import petrinet.Transition;
|
||||||
|
import petrinet.Arc;
|
||||||
|
import petrinet.Network;
|
||||||
|
import petrinet.PetrinetFactory;
|
||||||
|
import simplepdl.Process;
|
||||||
|
import simplepdl.WorkDefinition;
|
||||||
|
import simplepdl.WorkSequence;
|
||||||
|
import simplepdl.WorkSequenceType;
|
||||||
|
import simplepdl.SimplepdlPackage;
|
||||||
|
|
||||||
|
public class simplepdl2petrinet {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
// Charger les package SimplePDL et Petrinet afin de les enregistrer dans le registre d'Eclipse.
|
||||||
|
SimplepdlPackage packageInstance = SimplepdlPackage.eINSTANCE;
|
||||||
|
PetrinetPackage packageInstance2 = PetrinetPackage.eINSTANCE;
|
||||||
|
|
||||||
|
// Enregistrer l'extension ".xmi" comme devant être ouverte à
|
||||||
|
// l'aide d'un objet "XMIResourceFactoryImpl"
|
||||||
|
Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE;
|
||||||
|
Map<String, Object> m = reg.getExtensionToFactoryMap();
|
||||||
|
m.put("xmi", new XMIResourceFactoryImpl());
|
||||||
|
|
||||||
|
// Créer un objet resourceSetImpl qui contiendra une ressource EMF (le modèle)
|
||||||
|
ResourceSet resSet = new ResourceSetImpl();
|
||||||
|
|
||||||
|
// Charger la ressource (notre modèle)
|
||||||
|
URI modelURI = URI.createURI("pdl-sujet.xmi");
|
||||||
|
Resource resource = resSet.getResource(modelURI, true);
|
||||||
|
|
||||||
|
// Récupérer le premier élément du modèle (élément racine)
|
||||||
|
Process process = (Process) resource.getContents().get(0);
|
||||||
|
|
||||||
|
// La fabrique pour fabriquer les éléments de PetriNET
|
||||||
|
PetrinetFactory myFactory = PetrinetFactory.eINSTANCE;
|
||||||
|
|
||||||
|
// Créer un élément Network
|
||||||
|
Network network = myFactory.createNetwork();
|
||||||
|
network.setName(process.getName());
|
||||||
|
|
||||||
|
// Conversion des WorkDefinition en Node et Transition
|
||||||
|
for (Object o : process.getProcessElements()) {
|
||||||
|
if (o instanceof WorkDefinition) {
|
||||||
|
WorkDefinition wd = (WorkDefinition) o;
|
||||||
|
String name = wd.getName();
|
||||||
|
|
||||||
|
Place idle = myFactory.createPlace();
|
||||||
|
idle.setName(name + "_idle");
|
||||||
|
idle.setTokens(1);
|
||||||
|
Place started = myFactory.createPlace();
|
||||||
|
started.setName(name + "_started");
|
||||||
|
started.setTokens(0);
|
||||||
|
Place running = myFactory.createPlace();
|
||||||
|
running.setName(name + "_running");
|
||||||
|
running.setTokens(0);
|
||||||
|
Place finished = myFactory.createPlace();
|
||||||
|
finished.setName(name + "_finished");
|
||||||
|
finished.setTokens(0);
|
||||||
|
|
||||||
|
Arc pause2start = myFactory.createArc();
|
||||||
|
pause2start.setTarget(idle);
|
||||||
|
pause2start.setOutgoing(false);
|
||||||
|
pause2start.setWeight(1);
|
||||||
|
Arc start2running = myFactory.createArc();
|
||||||
|
start2running.setTarget(running);
|
||||||
|
start2running.setOutgoing(true);
|
||||||
|
start2running.setWeight(1);
|
||||||
|
Arc start2started = myFactory.createArc();
|
||||||
|
start2started.setTarget(started);
|
||||||
|
start2started.setOutgoing(true);
|
||||||
|
start2started.setWeight(1);
|
||||||
|
Transition start = myFactory.createTransition();
|
||||||
|
start.setName(name + "_start");
|
||||||
|
start.getArcs().add(pause2start);
|
||||||
|
start.getArcs().add(start2running);
|
||||||
|
start.getArcs().add(start2started);
|
||||||
|
|
||||||
|
Arc running2finish = myFactory.createArc();
|
||||||
|
running2finish.setTarget(running);
|
||||||
|
running2finish.setOutgoing(false);
|
||||||
|
running2finish.setWeight(1);
|
||||||
|
Arc finish2finished = myFactory.createArc();
|
||||||
|
finish2finished.setTarget(finished);
|
||||||
|
finish2finished.setOutgoing(true);
|
||||||
|
finish2finished.setWeight(1);
|
||||||
|
Transition finish = myFactory.createTransition();
|
||||||
|
finish.setName(name + "_finish");
|
||||||
|
finish.getArcs().add(running2finish);
|
||||||
|
finish.getArcs().add(finish2finished);
|
||||||
|
|
||||||
|
network.getNodes().add(idle);
|
||||||
|
network.getNodes().add(start);
|
||||||
|
network.getNodes().add(started);
|
||||||
|
network.getNodes().add(running);
|
||||||
|
network.getNodes().add(finish);
|
||||||
|
network.getNodes().add(finished);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Créer le nouveau xmi (modèle convertit)
|
||||||
|
URI convURI = URI.createURI("models/test.xmi");
|
||||||
|
Resource conv = resSet.createResource(convURI);
|
||||||
|
|
||||||
|
// Ajouter le Network dans le nouveau modèle
|
||||||
|
conv.getContents().add(network);
|
||||||
|
|
||||||
|
// Sauver la ressource
|
||||||
|
try {
|
||||||
|
conv.save(Collections.EMPTY_MAP);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,192 @@
|
||||||
|
package simplepdl.manip;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.eclipse.emf.common.util.URI;
|
||||||
|
import org.eclipse.emf.ecore.resource.Resource;
|
||||||
|
import org.eclipse.emf.ecore.resource.ResourceSet;
|
||||||
|
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
|
||||||
|
import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
|
||||||
|
|
||||||
|
import petrinet.PetrinetPackage;
|
||||||
|
import petrinet.Place;
|
||||||
|
import petrinet.Transition;
|
||||||
|
import petrinet.Arc;
|
||||||
|
import petrinet.Network;
|
||||||
|
import petrinet.Node;
|
||||||
|
import petrinet.PetrinetFactory;
|
||||||
|
import simplepdl.Process;
|
||||||
|
import simplepdl.WorkDefinition;
|
||||||
|
import simplepdl.WorkSequence;
|
||||||
|
import simplepdl.WorkSequenceType;
|
||||||
|
import simplepdl.SimplepdlPackage;
|
||||||
|
|
||||||
|
public class simplepdl2petrinet {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
// Charger les package SimplePDL et Petrinet afin de les enregistrer dans le registre d'Eclipse.
|
||||||
|
SimplepdlPackage packageInstance = SimplepdlPackage.eINSTANCE;
|
||||||
|
PetrinetPackage packageInstance2 = PetrinetPackage.eINSTANCE;
|
||||||
|
|
||||||
|
// Enregistrer l'extension ".xmi" comme devant être ouverte à
|
||||||
|
// l'aide d'un objet "XMIResourceFactoryImpl"
|
||||||
|
Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE;
|
||||||
|
Map<String, Object> m = reg.getExtensionToFactoryMap();
|
||||||
|
m.put("xmi", new XMIResourceFactoryImpl());
|
||||||
|
|
||||||
|
// Créer un objet resourceSetImpl qui contiendra une ressource EMF (le modèle)
|
||||||
|
ResourceSet resSet = new ResourceSetImpl();
|
||||||
|
|
||||||
|
// Charger la ressource (notre modèle)
|
||||||
|
URI modelURI = URI.createURI("pdl-sujet.xmi");
|
||||||
|
Resource resource = resSet.getResource(modelURI, true);
|
||||||
|
|
||||||
|
// Récupérer le premier élément du modèle (élément racine)
|
||||||
|
Process process = (Process) resource.getContents().get(0);
|
||||||
|
|
||||||
|
// La fabrique pour fabriquer les éléments de PetriNET
|
||||||
|
PetrinetFactory myFactory = PetrinetFactory.eINSTANCE;
|
||||||
|
|
||||||
|
// Créer un élément Network
|
||||||
|
Network network = myFactory.createNetwork();
|
||||||
|
network.setName(process.getName());
|
||||||
|
|
||||||
|
// Conversion des WorkDefinition en Node et Transition
|
||||||
|
for (Object o : process.getProcessElements()) {
|
||||||
|
if (o instanceof WorkDefinition) {
|
||||||
|
WorkDefinition wd = (WorkDefinition) o;
|
||||||
|
String name = wd.getName();
|
||||||
|
|
||||||
|
Place idle = myFactory.createPlace();
|
||||||
|
idle.setName(name + "_idle");
|
||||||
|
idle.setTokens(1);
|
||||||
|
Place started = myFactory.createPlace();
|
||||||
|
started.setName(name + "_started");
|
||||||
|
started.setTokens(0);
|
||||||
|
Place running = myFactory.createPlace();
|
||||||
|
running.setName(name + "_running");
|
||||||
|
running.setTokens(0);
|
||||||
|
Place finished = myFactory.createPlace();
|
||||||
|
finished.setName(name + "_finished");
|
||||||
|
finished.setTokens(0);
|
||||||
|
|
||||||
|
Arc pause2start = myFactory.createArc();
|
||||||
|
pause2start.setTarget(idle);
|
||||||
|
pause2start.setOutgoing(false);
|
||||||
|
pause2start.setWeight(1);
|
||||||
|
Arc start2running = myFactory.createArc();
|
||||||
|
start2running.setTarget(running);
|
||||||
|
start2running.setOutgoing(true);
|
||||||
|
start2running.setWeight(1);
|
||||||
|
Arc start2started = myFactory.createArc();
|
||||||
|
start2started.setTarget(started);
|
||||||
|
start2started.setOutgoing(true);
|
||||||
|
start2started.setWeight(1);
|
||||||
|
Transition start = myFactory.createTransition();
|
||||||
|
start.setName(name + "_start");
|
||||||
|
start.getArcs().add(pause2start);
|
||||||
|
start.getArcs().add(start2running);
|
||||||
|
start.getArcs().add(start2started);
|
||||||
|
|
||||||
|
Arc running2finish = myFactory.createArc();
|
||||||
|
running2finish.setTarget(running);
|
||||||
|
running2finish.setOutgoing(false);
|
||||||
|
running2finish.setWeight(1);
|
||||||
|
Arc finish2finished = myFactory.createArc();
|
||||||
|
finish2finished.setTarget(finished);
|
||||||
|
finish2finished.setOutgoing(true);
|
||||||
|
finish2finished.setWeight(1);
|
||||||
|
Transition finish = myFactory.createTransition();
|
||||||
|
finish.setName(name + "_finish");
|
||||||
|
finish.getArcs().add(running2finish);
|
||||||
|
finish.getArcs().add(finish2finished);
|
||||||
|
|
||||||
|
network.getNodes().add(idle);
|
||||||
|
network.getNodes().add(start);
|
||||||
|
network.getNodes().add(started);
|
||||||
|
network.getNodes().add(running);
|
||||||
|
network.getNodes().add(finish);
|
||||||
|
network.getNodes().add(finished);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Conversion des WorkSequence en Node et Transition
|
||||||
|
for (Object o : process.getProcessElements()) {
|
||||||
|
if (o instanceof WorkSequence) {
|
||||||
|
WorkSequence ws = (WorkSequence) o;
|
||||||
|
WorkSequenceType type = ws.getLinkType();
|
||||||
|
WorkDefinition predecessor = ws.getPredecessor();
|
||||||
|
WorkDefinition successor = ws.getSuccessor();
|
||||||
|
|
||||||
|
String predecessor_suffix = new String();
|
||||||
|
String successor_suffix = new String();
|
||||||
|
switch (type) {
|
||||||
|
case START_TO_START:
|
||||||
|
predecessor_suffix = "_started";
|
||||||
|
successor_suffix = "_start";
|
||||||
|
break;
|
||||||
|
case START_TO_FINISH:
|
||||||
|
predecessor_suffix = "_started";
|
||||||
|
successor_suffix = "_finished";
|
||||||
|
break;
|
||||||
|
case FINISH_TO_START:
|
||||||
|
predecessor_suffix = "_finished";
|
||||||
|
successor_suffix = "_start";
|
||||||
|
break;
|
||||||
|
case FINISH_TO_FINISH:
|
||||||
|
predecessor_suffix = "_finished";
|
||||||
|
successor_suffix = "_finish";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
System.out.print("the fuck ?");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
Arc arc1 = myFactory.createArc();
|
||||||
|
arc1.setOutgoing(false);
|
||||||
|
arc1.setWeight(1);
|
||||||
|
Arc arc2 = myFactory.createArc();
|
||||||
|
arc2.setOutgoing(true);
|
||||||
|
arc2.setWeight(1);
|
||||||
|
|
||||||
|
for (Node node : network.getNodes()) {
|
||||||
|
if (node instanceof Place) {
|
||||||
|
Place place = (Place) node;
|
||||||
|
if (place.getName().equals(predecessor.getName() + predecessor_suffix)) {
|
||||||
|
arc1.setTarget(place);
|
||||||
|
arc2.setTarget(place);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (node instanceof Transition) {
|
||||||
|
Transition transition = (Transition) node;
|
||||||
|
if (transition.getName().equals(successor.getName() + successor_suffix)) {
|
||||||
|
transition.getArcs().add(arc1);
|
||||||
|
transition.getArcs().add(arc2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Créer le nouveau xmi (modèle convertit)
|
||||||
|
URI convURI = URI.createURI("models/test.xmi");
|
||||||
|
Resource conv = resSet.createResource(convURI);
|
||||||
|
|
||||||
|
// Ajouter le Network dans le nouveau modèle
|
||||||
|
conv.getContents().add(network);
|
||||||
|
|
||||||
|
// Sauver la ressource
|
||||||
|
try {
|
||||||
|
conv.save(Collections.EMPTY_MAP);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,127 @@
|
||||||
|
package simplepdl.manip;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.eclipse.emf.common.util.URI;
|
||||||
|
import org.eclipse.emf.ecore.resource.Resource;
|
||||||
|
import org.eclipse.emf.ecore.resource.ResourceSet;
|
||||||
|
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
|
||||||
|
import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
|
||||||
|
|
||||||
|
import petrinet.PetrinetPackage;
|
||||||
|
import petrinet.Place;
|
||||||
|
import petrinet.Transition;
|
||||||
|
import petrinet.Arc;
|
||||||
|
import petrinet.Network;
|
||||||
|
import petrinet.PetrinetFactory;
|
||||||
|
import simplepdl.Process;
|
||||||
|
import simplepdl.WorkDefinition;
|
||||||
|
import simplepdl.WorkSequence;
|
||||||
|
import simplepdl.WorkSequenceType;
|
||||||
|
import simplepdl.SimplepdlPackage;
|
||||||
|
|
||||||
|
public class simplepdl2petrinet {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
// Charger les package SimplePDL et Petrinet afin de les enregistrer dans le registre d'Eclipse.
|
||||||
|
SimplepdlPackage packageInstance = SimplepdlPackage.eINSTANCE;
|
||||||
|
PetrinetPackage packageInstance2 = PetrinetPackage.eINSTANCE;
|
||||||
|
|
||||||
|
// Enregistrer l'extension ".xmi" comme devant être ouverte à
|
||||||
|
// l'aide d'un objet "XMIResourceFactoryImpl"
|
||||||
|
Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE;
|
||||||
|
Map<String, Object> m = reg.getExtensionToFactoryMap();
|
||||||
|
m.put("xmi", new XMIResourceFactoryImpl());
|
||||||
|
|
||||||
|
// Créer un objet resourceSetImpl qui contiendra une ressource EMF (le modèle)
|
||||||
|
ResourceSet resSet = new ResourceSetImpl();
|
||||||
|
|
||||||
|
// Charger la ressource (notre modèle)
|
||||||
|
URI modelURI = URI.createURI("pdl-sujet.xmi");
|
||||||
|
Resource resource = resSet.getResource(modelURI, true);
|
||||||
|
|
||||||
|
// Récupérer le premier élément du modèle (élément racine)
|
||||||
|
Process process = (Process) resource.getContents().get(0);
|
||||||
|
|
||||||
|
// La fabrique pour fabriquer les éléments de PetriNET
|
||||||
|
PetrinetFactory myFactory = PetrinetFactory.eINSTANCE;
|
||||||
|
|
||||||
|
// Créer un élément Network
|
||||||
|
Network network = myFactory.createNetwork();
|
||||||
|
network.setName(process.getName());
|
||||||
|
|
||||||
|
// Conversion des WorkDefinition en Node et Transition
|
||||||
|
for (Object o : process.getProcessElements()) {
|
||||||
|
if (o instanceof WorkDefinition) {
|
||||||
|
WorkDefinition wd = (WorkDefinition) o;
|
||||||
|
String name = wd.getName();
|
||||||
|
System.out.println(" - " + name);
|
||||||
|
|
||||||
|
Place idle = myFactory.createPlace();
|
||||||
|
idle.setName(name + "_idle");
|
||||||
|
idle.setTokens(1);
|
||||||
|
Place started = myFactory.createPlace();
|
||||||
|
idle.setName(name + "_started");
|
||||||
|
idle.setTokens(0);
|
||||||
|
Place running = myFactory.createPlace();
|
||||||
|
running.setName(name + "_running");
|
||||||
|
running.setTokens(0);
|
||||||
|
Place finished = myFactory.createPlace();
|
||||||
|
finished.setName(name + "_finished");
|
||||||
|
finished.setTokens(0);
|
||||||
|
|
||||||
|
Arc pause2start = myFactory.createArc();
|
||||||
|
pause2start.setTarget(idle);
|
||||||
|
pause2start.setOutgoing(false);
|
||||||
|
pause2start.setWeight(1);
|
||||||
|
Arc start2running = myFactory.createArc();
|
||||||
|
start2running.setTarget(running);
|
||||||
|
start2running.setOutgoing(true);
|
||||||
|
start2running.setWeight(1);
|
||||||
|
Transition start = myFactory.createTransition();
|
||||||
|
start.setName(name + "_start");
|
||||||
|
start.getArcs().add(pause2start);
|
||||||
|
start.getArcs().add(start2running);
|
||||||
|
|
||||||
|
Arc running2finish = myFactory.createArc();
|
||||||
|
running2finish.setTarget(running);
|
||||||
|
running2finish.setOutgoing(false);
|
||||||
|
running2finish.setWeight(1);
|
||||||
|
Arc finish2finished = myFactory.createArc();
|
||||||
|
finish2finished.setTarget(finished);
|
||||||
|
finish2finished.setOutgoing(true);
|
||||||
|
finish2finished.setWeight(1);
|
||||||
|
Transition finish = myFactory.createTransition();
|
||||||
|
finish.setName(name + "_finish");
|
||||||
|
finish.getArcs().add(running2finish);
|
||||||
|
finish.getArcs().add(finish2finished);
|
||||||
|
|
||||||
|
System.out.println(" + " + idle.getName() + " (" + idle.getTokens() + ")");
|
||||||
|
|
||||||
|
network.getNodes().add(idle);
|
||||||
|
network.getNodes().add(start);
|
||||||
|
network.getNodes().add(running);
|
||||||
|
network.getNodes().add(finish);
|
||||||
|
network.getNodes().add(finished);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Créer le nouveau xmi (modèle convertit)
|
||||||
|
URI convURI = URI.createURI("models/test.xmi");
|
||||||
|
Resource conv = resSet.createResource(convURI);
|
||||||
|
|
||||||
|
// Ajouter le Network dans le nouveau modèle
|
||||||
|
conv.getContents().add(network);
|
||||||
|
|
||||||
|
// Sauver la ressource
|
||||||
|
try {
|
||||||
|
conv.save(Collections.EMPTY_MAP);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,190 @@
|
||||||
|
package simplepdl.manip;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.eclipse.emf.common.util.URI;
|
||||||
|
import org.eclipse.emf.ecore.resource.Resource;
|
||||||
|
import org.eclipse.emf.ecore.resource.ResourceSet;
|
||||||
|
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
|
||||||
|
import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
|
||||||
|
|
||||||
|
import petrinet.PetrinetPackage;
|
||||||
|
import petrinet.Place;
|
||||||
|
import petrinet.Transition;
|
||||||
|
import petrinet.Arc;
|
||||||
|
import petrinet.Network;
|
||||||
|
import petrinet.Node;
|
||||||
|
import petrinet.PetrinetFactory;
|
||||||
|
import simplepdl.Process;
|
||||||
|
import simplepdl.WorkDefinition;
|
||||||
|
import simplepdl.WorkSequence;
|
||||||
|
import simplepdl.WorkSequenceType;
|
||||||
|
import simplepdl.SimplepdlPackage;
|
||||||
|
|
||||||
|
public class simplepdl2petrinet {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
// Charger les package SimplePDL et Petrinet afin de les enregistrer dans le registre d'Eclipse.
|
||||||
|
SimplepdlPackage packageInstance = SimplepdlPackage.eINSTANCE;
|
||||||
|
PetrinetPackage packageInstance2 = PetrinetPackage.eINSTANCE;
|
||||||
|
|
||||||
|
// Enregistrer l'extension ".xmi" comme devant être ouverte à
|
||||||
|
// l'aide d'un objet "XMIResourceFactoryImpl"
|
||||||
|
Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE;
|
||||||
|
Map<String, Object> m = reg.getExtensionToFactoryMap();
|
||||||
|
m.put("xmi", new XMIResourceFactoryImpl());
|
||||||
|
|
||||||
|
// Créer un objet resourceSetImpl qui contiendra une ressource EMF (le modèle)
|
||||||
|
ResourceSet resSet = new ResourceSetImpl();
|
||||||
|
|
||||||
|
// Charger la ressource (notre modèle)
|
||||||
|
URI modelURI = URI.createURI("pdl-sujet.xmi");
|
||||||
|
Resource resource = resSet.getResource(modelURI, true);
|
||||||
|
|
||||||
|
// Récupérer le premier élément du modèle (élément racine)
|
||||||
|
Process process = (Process) resource.getContents().get(0);
|
||||||
|
|
||||||
|
// La fabrique pour fabriquer les éléments de PetriNET
|
||||||
|
PetrinetFactory myFactory = PetrinetFactory.eINSTANCE;
|
||||||
|
|
||||||
|
// Créer un élément Network
|
||||||
|
Network network = myFactory.createNetwork();
|
||||||
|
network.setName(process.getName());
|
||||||
|
|
||||||
|
// Conversion des WorkDefinition en Node et Transition
|
||||||
|
for (Object o : process.getProcessElements()) {
|
||||||
|
if (o instanceof WorkDefinition) {
|
||||||
|
WorkDefinition wd = (WorkDefinition) o;
|
||||||
|
String name = wd.getName();
|
||||||
|
|
||||||
|
Place idle = myFactory.createPlace();
|
||||||
|
idle.setName(name + "_idle");
|
||||||
|
idle.setTokens(1);
|
||||||
|
Place started = myFactory.createPlace();
|
||||||
|
started.setName(name + "_started");
|
||||||
|
started.setTokens(0);
|
||||||
|
Place running = myFactory.createPlace();
|
||||||
|
running.setName(name + "_running");
|
||||||
|
running.setTokens(0);
|
||||||
|
Place finished = myFactory.createPlace();
|
||||||
|
finished.setName(name + "_finished");
|
||||||
|
finished.setTokens(0);
|
||||||
|
|
||||||
|
Arc pause2start = myFactory.createArc();
|
||||||
|
pause2start.setTarget(idle);
|
||||||
|
pause2start.setOutgoing(false);
|
||||||
|
pause2start.setWeight(1);
|
||||||
|
Arc start2running = myFactory.createArc();
|
||||||
|
start2running.setTarget(running);
|
||||||
|
start2running.setOutgoing(true);
|
||||||
|
start2running.setWeight(1);
|
||||||
|
Arc start2started = myFactory.createArc();
|
||||||
|
start2started.setTarget(started);
|
||||||
|
start2started.setOutgoing(true);
|
||||||
|
start2started.setWeight(1);
|
||||||
|
Transition start = myFactory.createTransition();
|
||||||
|
start.setName(name + "_start");
|
||||||
|
start.getArcs().add(pause2start);
|
||||||
|
start.getArcs().add(start2running);
|
||||||
|
start.getArcs().add(start2started);
|
||||||
|
|
||||||
|
Arc running2finish = myFactory.createArc();
|
||||||
|
running2finish.setTarget(running);
|
||||||
|
running2finish.setOutgoing(false);
|
||||||
|
running2finish.setWeight(1);
|
||||||
|
Arc finish2finished = myFactory.createArc();
|
||||||
|
finish2finished.setTarget(finished);
|
||||||
|
finish2finished.setOutgoing(true);
|
||||||
|
finish2finished.setWeight(1);
|
||||||
|
Transition finish = myFactory.createTransition();
|
||||||
|
finish.setName(name + "_finish");
|
||||||
|
finish.getArcs().add(running2finish);
|
||||||
|
finish.getArcs().add(finish2finished);
|
||||||
|
|
||||||
|
network.getNodes().add(idle);
|
||||||
|
network.getNodes().add(start);
|
||||||
|
network.getNodes().add(started);
|
||||||
|
network.getNodes().add(running);
|
||||||
|
network.getNodes().add(finish);
|
||||||
|
network.getNodes().add(finished);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Conversion des WorkSequence en Node et Transition
|
||||||
|
for (Object o : process.getProcessElements()) {
|
||||||
|
if (o instanceof WorkSequence) {
|
||||||
|
WorkSequence ws = (WorkSequence) o;
|
||||||
|
WorkSequenceType type = ws.getLinkType();
|
||||||
|
WorkDefinition predecessor = ws.getPredecessor();
|
||||||
|
WorkDefinition successor = ws.getSuccessor();
|
||||||
|
|
||||||
|
String predecessor_suffix = new String();
|
||||||
|
String successor_suffix = new String();
|
||||||
|
switch (type) {
|
||||||
|
case START_TO_START:
|
||||||
|
predecessor_suffix = "_started";
|
||||||
|
successor_suffix = "_start";
|
||||||
|
break;
|
||||||
|
case START_TO_FINISH:
|
||||||
|
predecessor_suffix = "_started";
|
||||||
|
successor_suffix = "_finished";
|
||||||
|
break;
|
||||||
|
case FINISH_TO_START:
|
||||||
|
predecessor_suffix = "_finished";
|
||||||
|
successor_suffix = "_start";
|
||||||
|
break;
|
||||||
|
case FINISH_TO_FINISH:
|
||||||
|
predecessor_suffix = "_finished";
|
||||||
|
successor_suffix = "_finish";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
System.out.print("the fuck ?");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
Arc arc1 = myFactory.createArc();
|
||||||
|
arc1.setOutgoing(false);
|
||||||
|
arc1.setWeight(1);
|
||||||
|
Arc arc2 = myFactory.createArc();
|
||||||
|
arc2.setOutgoing(true);
|
||||||
|
arc2.setWeight(2);
|
||||||
|
|
||||||
|
for (Node node : network.getNodes()) {
|
||||||
|
if (node instanceof Place) {
|
||||||
|
Place place = (Place) node;
|
||||||
|
if (place.getName().equals(predecessor.getName() + predecessor_suffix)) {
|
||||||
|
arc.setTarget(place);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (node instanceof Transition) {
|
||||||
|
Transition transition = (Transition) node;
|
||||||
|
if (transition.getName().equals(successor.getName() + successor_suffix)) {
|
||||||
|
transition.getArcs().add(arc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Créer le nouveau xmi (modèle convertit)
|
||||||
|
URI convURI = URI.createURI("models/test.xmi");
|
||||||
|
Resource conv = resSet.createResource(convURI);
|
||||||
|
|
||||||
|
// Ajouter le Network dans le nouveau modèle
|
||||||
|
conv.getContents().add(network);
|
||||||
|
|
||||||
|
// Sauver la ressource
|
||||||
|
try {
|
||||||
|
conv.save(Collections.EMPTY_MAP);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,44 @@
|
||||||
|
[comment encoding = UTF-8 /]
|
||||||
|
[module toTINA('http://petrinet')]
|
||||||
|
|
||||||
|
[template public networkToTINA(aNetwork : Network)]
|
||||||
|
[comment @main/]
|
||||||
|
[file (aNetwork.name + '.net', false, 'UTF-8')]
|
||||||
|
net [aNetwork.name/]
|
||||||
|
[let places : OrderedSet(Place) = aNetwork.getPlaces() ]
|
||||||
|
[if (places->size() > 0)]
|
||||||
|
[for (place : Place | places)]
|
||||||
|
pl [place.name/] ([place.tokens/])
|
||||||
|
[/for]
|
||||||
|
[else]
|
||||||
|
[/if]
|
||||||
|
[/let]
|
||||||
|
[let transitions : OrderedSet(Transition) = aNetwork.getTransitions() ]
|
||||||
|
[if (transitions->size() > 0)]
|
||||||
|
[for (transition : Transition | transitions)]
|
||||||
|
[transition.afficher()/]
|
||||||
|
[/for]
|
||||||
|
[else]
|
||||||
|
[/if]
|
||||||
|
[/let]
|
||||||
|
[/file]
|
||||||
|
[/template]
|
||||||
|
|
||||||
|
[query public getPlaces(n: Network) : OrderedSet(Place) =
|
||||||
|
n.nodes
|
||||||
|
->select( e | e.oclIsTypeOf(Place) )
|
||||||
|
->collect( e | e.oclAsType(Place) )
|
||||||
|
->asOrderedSet()
|
||||||
|
/]
|
||||||
|
|
||||||
|
[query public getTransitions(n: Network) : OrderedSet(Transition) =
|
||||||
|
n.nodes
|
||||||
|
->select( e | e.oclIsTypeOf(Transition) )
|
||||||
|
->collect( e | e.oclAsType(Transition) )
|
||||||
|
->asOrderedSet()
|
||||||
|
/]
|
||||||
|
|
||||||
|
[template public afficher(t : Transition) post (trim()) ]
|
||||||
|
[comment][let outgoing = t.getArcs()->select( e | e.isOutgoing() ) /][/comment]
|
||||||
|
tr [t.name/] [for (a : Arc | t.arcs)][if (not a.outgoing)][a.target.name/]*[a.weight/] [/if][/for]-> [for (a : Arc | t.arcs)][if (a.outgoing)][a.target.name/]*[a.weight/][/if][/for]
|
||||||
|
[/template]
|
|
@ -0,0 +1,124 @@
|
||||||
|
package simplepdl.manip;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.eclipse.emf.common.util.URI;
|
||||||
|
import org.eclipse.emf.ecore.resource.Resource;
|
||||||
|
import org.eclipse.emf.ecore.resource.ResourceSet;
|
||||||
|
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
|
||||||
|
import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
|
||||||
|
|
||||||
|
import petrinet.PetrinetPackage;
|
||||||
|
import petrinet.Place;
|
||||||
|
import petrinet.Transition;
|
||||||
|
import petrinet.Arc;
|
||||||
|
import petrinet.Network;
|
||||||
|
import petrinet.PetrinetFactory;
|
||||||
|
import simplepdl.Process;
|
||||||
|
import simplepdl.WorkDefinition;
|
||||||
|
import simplepdl.WorkSequence;
|
||||||
|
import simplepdl.WorkSequenceType;
|
||||||
|
import simplepdl.SimplepdlPackage;
|
||||||
|
|
||||||
|
public class simplepdl2petrinet {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
// Charger les package SimplePDL et Petrinet afin de les enregistrer dans le registre d'Eclipse.
|
||||||
|
SimplepdlPackage packageInstance = SimplepdlPackage.eINSTANCE;
|
||||||
|
PetrinetPackage packageInstance2 = PetrinetPackage.eINSTANCE;
|
||||||
|
|
||||||
|
// Enregistrer l'extension ".xmi" comme devant être ouverte à
|
||||||
|
// l'aide d'un objet "XMIResourceFactoryImpl"
|
||||||
|
Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE;
|
||||||
|
Map<String, Object> m = reg.getExtensionToFactoryMap();
|
||||||
|
m.put("xmi", new XMIResourceFactoryImpl());
|
||||||
|
|
||||||
|
// Créer un objet resourceSetImpl qui contiendra une ressource EMF (le modèle)
|
||||||
|
ResourceSet resSet = new ResourceSetImpl();
|
||||||
|
|
||||||
|
// Charger la ressource (notre modèle)
|
||||||
|
URI modelURI = URI.createURI("pdl-sujet.xmi");
|
||||||
|
Resource resource = resSet.getResource(modelURI, true);
|
||||||
|
|
||||||
|
// Récupérer le premier élément du modèle (élément racine)
|
||||||
|
Process process = (Process) resource.getContents().get(0);
|
||||||
|
|
||||||
|
// La fabrique pour fabriquer les éléments de PetriNET
|
||||||
|
PetrinetFactory myFactory = PetrinetFactory.eINSTANCE;
|
||||||
|
|
||||||
|
// Créer un élément Network
|
||||||
|
Network network = myFactory.createNetwork();
|
||||||
|
network.setName(process.getName());
|
||||||
|
|
||||||
|
// Conversion des WorkDefinition en Node et Transition
|
||||||
|
for (Object o : process.getProcessElements()) {
|
||||||
|
if (o instanceof WorkDefinition) {
|
||||||
|
WorkDefinition wd = (WorkDefinition) o;
|
||||||
|
String name = wd.getName();
|
||||||
|
System.out.println(" - " + name);
|
||||||
|
|
||||||
|
Place idle = myFactory.createPlace();
|
||||||
|
idle.setName(name + "_idle");
|
||||||
|
idle.setTokens(1);
|
||||||
|
Place running = myFactory.createPlace();
|
||||||
|
running.setName(name + "_running");
|
||||||
|
running.setTokens(1);
|
||||||
|
Place finished = myFactory.createPlace();
|
||||||
|
finished.setName(name + "_finished");
|
||||||
|
finished.setTokens(1);
|
||||||
|
|
||||||
|
Arc pause2start = myFactory.createArc();
|
||||||
|
pause2start.setTarget(idle);
|
||||||
|
pause2start.setOutgoing(false);
|
||||||
|
pause2start.setWeight(1);
|
||||||
|
Arc start2running = myFactory.createArc();
|
||||||
|
start2running.setTarget(running);
|
||||||
|
start2running.setOutgoing(true);
|
||||||
|
start2running.setWeight(1);
|
||||||
|
Transition start = myFactory.createTransition();
|
||||||
|
start.setName(name + "_start");
|
||||||
|
start.getArcs().add(pause2start);
|
||||||
|
start.getArcs().add(start2running);
|
||||||
|
|
||||||
|
Arc running2finish = myFactory.createArc();
|
||||||
|
running2finish.setTarget(running);
|
||||||
|
running2finish.setOutgoing(false);
|
||||||
|
running2finish.setWeight(1);
|
||||||
|
Arc finish2finished = myFactory.createArc();
|
||||||
|
finish2finished.setTarget(finished);
|
||||||
|
finish2finished.setOutgoing(true);
|
||||||
|
finish2finished.setWeight(1);
|
||||||
|
Transition finish = myFactory.createTransition();
|
||||||
|
finish.setName(name + "_finish");
|
||||||
|
finish.getArcs().add(running2finish);
|
||||||
|
finish.getArcs().add(finish2finished);
|
||||||
|
|
||||||
|
System.out.println(" + " + idle.getName() + " (" + idle.getTokens() + ")");
|
||||||
|
|
||||||
|
network.getNodes().add(idle);
|
||||||
|
network.getNodes().add(start);
|
||||||
|
network.getNodes().add(running);
|
||||||
|
network.getNodes().add(finish);
|
||||||
|
network.getNodes().add(finished);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Créer le nouveau xmi (modèle convertit)
|
||||||
|
URI convURI = URI.createURI("models/test.xmi");
|
||||||
|
Resource conv = resSet.createResource(convURI);
|
||||||
|
|
||||||
|
// Ajouter le Network dans le nouveau modèle
|
||||||
|
conv.getContents().add(network);
|
||||||
|
|
||||||
|
// Sauver la ressource
|
||||||
|
try {
|
||||||
|
conv.save(Collections.EMPTY_MAP);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,191 @@
|
||||||
|
package simplepdl.manip;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.eclipse.emf.common.util.URI;
|
||||||
|
import org.eclipse.emf.ecore.resource.Resource;
|
||||||
|
import org.eclipse.emf.ecore.resource.ResourceSet;
|
||||||
|
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
|
||||||
|
import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
|
||||||
|
|
||||||
|
import petrinet.PetrinetPackage;
|
||||||
|
import petrinet.Place;
|
||||||
|
import petrinet.Transition;
|
||||||
|
import petrinet.Arc;
|
||||||
|
import petrinet.Network;
|
||||||
|
import petrinet.Node;
|
||||||
|
import petrinet.PetrinetFactory;
|
||||||
|
import simplepdl.Process;
|
||||||
|
import simplepdl.WorkDefinition;
|
||||||
|
import simplepdl.WorkSequence;
|
||||||
|
import simplepdl.WorkSequenceType;
|
||||||
|
import simplepdl.SimplepdlPackage;
|
||||||
|
|
||||||
|
public class simplepdl2petrinet {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
// Charger les package SimplePDL et Petrinet afin de les enregistrer dans le registre d'Eclipse.
|
||||||
|
SimplepdlPackage packageInstance = SimplepdlPackage.eINSTANCE;
|
||||||
|
PetrinetPackage packageInstance2 = PetrinetPackage.eINSTANCE;
|
||||||
|
|
||||||
|
// Enregistrer l'extension ".xmi" comme devant être ouverte à
|
||||||
|
// l'aide d'un objet "XMIResourceFactoryImpl"
|
||||||
|
Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE;
|
||||||
|
Map<String, Object> m = reg.getExtensionToFactoryMap();
|
||||||
|
m.put("xmi", new XMIResourceFactoryImpl());
|
||||||
|
|
||||||
|
// Créer un objet resourceSetImpl qui contiendra une ressource EMF (le modèle)
|
||||||
|
ResourceSet resSet = new ResourceSetImpl();
|
||||||
|
|
||||||
|
// Charger la ressource (notre modèle)
|
||||||
|
URI modelURI = URI.createURI("pdl-sujet.xmi");
|
||||||
|
Resource resource = resSet.getResource(modelURI, true);
|
||||||
|
|
||||||
|
// Récupérer le premier élément du modèle (élément racine)
|
||||||
|
Process process = (Process) resource.getContents().get(0);
|
||||||
|
|
||||||
|
// La fabrique pour fabriquer les éléments de PetriNET
|
||||||
|
PetrinetFactory myFactory = PetrinetFactory.eINSTANCE;
|
||||||
|
|
||||||
|
// Créer un élément Network
|
||||||
|
Network network = myFactory.createNetwork();
|
||||||
|
network.setName(process.getName());
|
||||||
|
|
||||||
|
// Conversion des WorkDefinition en Node et Transition
|
||||||
|
for (Object o : process.getProcessElements()) {
|
||||||
|
if (o instanceof WorkDefinition) {
|
||||||
|
WorkDefinition wd = (WorkDefinition) o;
|
||||||
|
String name = wd.getName();
|
||||||
|
|
||||||
|
Place idle = myFactory.createPlace();
|
||||||
|
idle.setName(name + "_idle");
|
||||||
|
idle.setTokens(1);
|
||||||
|
Place started = myFactory.createPlace();
|
||||||
|
started.setName(name + "_started");
|
||||||
|
started.setTokens(0);
|
||||||
|
Place running = myFactory.createPlace();
|
||||||
|
running.setName(name + "_running");
|
||||||
|
running.setTokens(0);
|
||||||
|
Place finished = myFactory.createPlace();
|
||||||
|
finished.setName(name + "_finished");
|
||||||
|
finished.setTokens(0);
|
||||||
|
|
||||||
|
Arc pause2start = myFactory.createArc();
|
||||||
|
pause2start.setTarget(idle);
|
||||||
|
pause2start.setOutgoing(false);
|
||||||
|
pause2start.setWeight(1);
|
||||||
|
Arc start2running = myFactory.createArc();
|
||||||
|
start2running.setTarget(running);
|
||||||
|
start2running.setOutgoing(true);
|
||||||
|
start2running.setWeight(1);
|
||||||
|
Arc start2started = myFactory.createArc();
|
||||||
|
start2started.setTarget(started);
|
||||||
|
start2started.setOutgoing(true);
|
||||||
|
start2started.setWeight(1);
|
||||||
|
Transition start = myFactory.createTransition();
|
||||||
|
start.setName(name + "_start");
|
||||||
|
start.getArcs().add(pause2start);
|
||||||
|
start.getArcs().add(start2running);
|
||||||
|
start.getArcs().add(start2started);
|
||||||
|
|
||||||
|
Arc running2finish = myFactory.createArc();
|
||||||
|
running2finish.setTarget(running);
|
||||||
|
running2finish.setOutgoing(false);
|
||||||
|
running2finish.setWeight(1);
|
||||||
|
Arc finish2finished = myFactory.createArc();
|
||||||
|
finish2finished.setTarget(finished);
|
||||||
|
finish2finished.setOutgoing(true);
|
||||||
|
finish2finished.setWeight(1);
|
||||||
|
Transition finish = myFactory.createTransition();
|
||||||
|
finish.setName(name + "_finish");
|
||||||
|
finish.getArcs().add(running2finish);
|
||||||
|
finish.getArcs().add(finish2finished);
|
||||||
|
|
||||||
|
network.getNodes().add(idle);
|
||||||
|
network.getNodes().add(start);
|
||||||
|
network.getNodes().add(started);
|
||||||
|
network.getNodes().add(running);
|
||||||
|
network.getNodes().add(finish);
|
||||||
|
network.getNodes().add(finished);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Conversion des WorkSequence en Node et Transition
|
||||||
|
for (Object o : process.getProcessElements()) {
|
||||||
|
if (o instanceof WorkSequence) {
|
||||||
|
WorkSequence ws = (WorkSequence) o;
|
||||||
|
WorkSequenceType type = ws.getLinkType();
|
||||||
|
WorkDefinition predecessor = ws.getPredecessor();
|
||||||
|
WorkDefinition successor = ws.getSuccessor();
|
||||||
|
|
||||||
|
String predecessor_suffix = new String();
|
||||||
|
String successor_suffix = new String();
|
||||||
|
switch (type) {
|
||||||
|
case START_TO_START:
|
||||||
|
predecessor_suffix = "_started";
|
||||||
|
successor_suffix = "_start";
|
||||||
|
break;
|
||||||
|
case START_TO_FINISH:
|
||||||
|
predecessor_suffix = "_started";
|
||||||
|
successor_suffix = "_finished";
|
||||||
|
break;
|
||||||
|
case FINISH_TO_START:
|
||||||
|
predecessor_suffix = "_finished";
|
||||||
|
successor_suffix = "_start";
|
||||||
|
break;
|
||||||
|
case FINISH_TO_FINISH:
|
||||||
|
predecessor_suffix = "_finished";
|
||||||
|
successor_suffix = "_finish";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
System.out.print("the fuck ?");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
Arc arc1 = myFactory.createArc();
|
||||||
|
arc1.setOutgoing(false);
|
||||||
|
arc1.setWeight(1);
|
||||||
|
Arc arc2 = myFactory.createArc();
|
||||||
|
arc2.setOutgoing(true);
|
||||||
|
arc2.setWeight(1);
|
||||||
|
|
||||||
|
for (Node node : network.getNodes()) {
|
||||||
|
if (node instanceof Place) {
|
||||||
|
Place place = (Place) node;
|
||||||
|
if (place.getName().equals(predecessor.getName() + predecessor_suffix)) {
|
||||||
|
arc1.setTarget(place);
|
||||||
|
arc2.setTarget(place);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (node instanceof Transition) {
|
||||||
|
Transition transition = (Transition) node;
|
||||||
|
if (transition.getName().equals(successor.getName() + successor_suffix)) {
|
||||||
|
transition.getArcs().add(arc1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Créer le nouveau xmi (modèle convertit)
|
||||||
|
URI convURI = URI.createURI("models/test.xmi");
|
||||||
|
Resource conv = resSet.createResource(convURI);
|
||||||
|
|
||||||
|
// Ajouter le Network dans le nouveau modèle
|
||||||
|
conv.getContents().add(network);
|
||||||
|
|
||||||
|
// Sauver la ressource
|
||||||
|
try {
|
||||||
|
conv.save(Collections.EMPTY_MAP);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,193 @@
|
||||||
|
package simplepdl.manip;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.eclipse.emf.common.util.URI;
|
||||||
|
import org.eclipse.emf.ecore.resource.Resource;
|
||||||
|
import org.eclipse.emf.ecore.resource.ResourceSet;
|
||||||
|
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
|
||||||
|
import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
|
||||||
|
|
||||||
|
import petrinet.PetrinetPackage;
|
||||||
|
import petrinet.Place;
|
||||||
|
import petrinet.Transition;
|
||||||
|
import petrinet.Arc;
|
||||||
|
import petrinet.Network;
|
||||||
|
import petrinet.Node;
|
||||||
|
import petrinet.PetrinetFactory;
|
||||||
|
import simplepdl.Process;
|
||||||
|
import simplepdl.WorkDefinition;
|
||||||
|
import simplepdl.WorkSequence;
|
||||||
|
import simplepdl.WorkSequenceType;
|
||||||
|
import simplepdl.SimplepdlPackage;
|
||||||
|
|
||||||
|
public class simplepdl2petrinet {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
// Charger les package SimplePDL et Petrinet afin de les enregistrer dans le registre d'Eclipse.
|
||||||
|
SimplepdlPackage packageInstance = SimplepdlPackage.eINSTANCE;
|
||||||
|
PetrinetPackage packageInstance2 = PetrinetPackage.eINSTANCE;
|
||||||
|
|
||||||
|
// Enregistrer l'extension ".xmi" comme devant être ouverte à
|
||||||
|
// l'aide d'un objet "XMIResourceFactoryImpl"
|
||||||
|
Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE;
|
||||||
|
Map<String, Object> m = reg.getExtensionToFactoryMap();
|
||||||
|
m.put("xmi", new XMIResourceFactoryImpl());
|
||||||
|
|
||||||
|
// Créer un objet resourceSetImpl qui contiendra une ressource EMF (le modèle)
|
||||||
|
ResourceSet resSet = new ResourceSetImpl();
|
||||||
|
|
||||||
|
// Charger la ressource (notre modèle)
|
||||||
|
URI modelURI = URI.createURI("pdl-sujet.xmi");
|
||||||
|
Resource resource = resSet.getResource(modelURI, true);
|
||||||
|
|
||||||
|
// Récupérer le premier élément du modèle (élément racine)
|
||||||
|
Process process = (Process) resource.getContents().get(0);
|
||||||
|
|
||||||
|
// La fabrique pour fabriquer les éléments de PetriNET
|
||||||
|
PetrinetFactory myFactory = PetrinetFactory.eINSTANCE;
|
||||||
|
|
||||||
|
// Créer un élément Network
|
||||||
|
Network network = myFactory.createNetwork();
|
||||||
|
network.setName(process.getName());
|
||||||
|
|
||||||
|
// Conversion des WorkDefinition en Node et Transition
|
||||||
|
for (Object o : process.getProcessElements()) {
|
||||||
|
if (o instanceof WorkDefinition) {
|
||||||
|
WorkDefinition wd = (WorkDefinition) o;
|
||||||
|
String name = wd.getName();
|
||||||
|
|
||||||
|
Place idle = myFactory.createPlace();
|
||||||
|
idle.setName(name + "_idle");
|
||||||
|
idle.setTokens(1);
|
||||||
|
Place started = myFactory.createPlace();
|
||||||
|
started.setName(name + "_started");
|
||||||
|
started.setTokens(0);
|
||||||
|
Place running = myFactory.createPlace();
|
||||||
|
running.setName(name + "_running");
|
||||||
|
running.setTokens(0);
|
||||||
|
Place finished = myFactory.createPlace();
|
||||||
|
finished.setName(name + "_finished");
|
||||||
|
finished.setTokens(0);
|
||||||
|
|
||||||
|
Arc pause2start = myFactory.createArc();
|
||||||
|
pause2start.setTarget(idle);
|
||||||
|
pause2start.setOutgoing(false);
|
||||||
|
pause2start.setWeight(1);
|
||||||
|
Arc start2running = myFactory.createArc();
|
||||||
|
start2running.setTarget(running);
|
||||||
|
start2running.setOutgoing(true);
|
||||||
|
start2running.setWeight(1);
|
||||||
|
Arc start2started = myFactory.createArc();
|
||||||
|
start2started.setTarget(started);
|
||||||
|
start2started.setOutgoing(true);
|
||||||
|
start2started.setWeight(1);
|
||||||
|
Transition start = myFactory.createTransition();
|
||||||
|
start.setName(name + "_start");
|
||||||
|
start.getArcs().add(pause2start);
|
||||||
|
start.getArcs().add(start2running);
|
||||||
|
start.getArcs().add(start2started);
|
||||||
|
|
||||||
|
Arc running2finish = myFactory.createArc();
|
||||||
|
running2finish.setTarget(running);
|
||||||
|
running2finish.setOutgoing(false);
|
||||||
|
running2finish.setWeight(1);
|
||||||
|
Arc finish2finished = myFactory.createArc();
|
||||||
|
finish2finished.setTarget(finished);
|
||||||
|
finish2finished.setOutgoing(true);
|
||||||
|
finish2finished.setWeight(1);
|
||||||
|
Transition finish = myFactory.createTransition();
|
||||||
|
finish.setName(name + "_finish");
|
||||||
|
finish.getArcs().add(running2finish);
|
||||||
|
finish.getArcs().add(finish2finished);
|
||||||
|
|
||||||
|
network.getNodes().add(idle);
|
||||||
|
network.getNodes().add(start);
|
||||||
|
network.getNodes().add(started);
|
||||||
|
network.getNodes().add(running);
|
||||||
|
network.getNodes().add(finish);
|
||||||
|
network.getNodes().add(finished);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Conversion des WorkSequence en Node et Transition
|
||||||
|
for (Object o : process.getProcessElements()) {
|
||||||
|
if (o instanceof WorkSequence) {
|
||||||
|
WorkSequence ws = (WorkSequence) o;
|
||||||
|
WorkSequenceType type = ws.getLinkType();
|
||||||
|
WorkDefinition predecessor = ws.getPredecessor();
|
||||||
|
WorkDefinition successor = ws.getSuccessor();
|
||||||
|
|
||||||
|
System.out.println(predecessor.getName());
|
||||||
|
|
||||||
|
// creation des suffixs permettant la recherche des noeuds
|
||||||
|
String predecessor_suffix = new String();
|
||||||
|
String successor_suffix = new String();
|
||||||
|
switch (type) {
|
||||||
|
case START_TO_START:
|
||||||
|
predecessor_suffix = "_started";
|
||||||
|
successor_suffix = "_start";
|
||||||
|
break;
|
||||||
|
case START_TO_FINISH:
|
||||||
|
predecessor_suffix = "_started";
|
||||||
|
successor_suffix = "_finished";
|
||||||
|
break;
|
||||||
|
case FINISH_TO_START:
|
||||||
|
predecessor_suffix = "_finished";
|
||||||
|
successor_suffix = "_start";
|
||||||
|
break;
|
||||||
|
case FINISH_TO_FINISH:
|
||||||
|
predecessor_suffix = "_finished";
|
||||||
|
successor_suffix = "_finish";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
System.out.print("the fuck ?");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// creation du read-arc
|
||||||
|
Arc arc1 = myFactory.createArc();
|
||||||
|
arc1.setOutgoing(false);
|
||||||
|
arc1.setWeight(1);
|
||||||
|
Arc arc2 = myFactory.createArc();
|
||||||
|
arc2.setOutgoing(true);
|
||||||
|
arc2.setWeight(1);
|
||||||
|
|
||||||
|
for (Node node : network.getNodes()) {
|
||||||
|
if (node instanceof Place) {
|
||||||
|
Place place = (Place) node;
|
||||||
|
if (place.getName().equals(predecessor.getName() + predecessor_suffix)) {
|
||||||
|
arc1.setTarget(place);
|
||||||
|
arc2.setTarget(place);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (node instanceof Transition) {
|
||||||
|
Transition transition = (Transition) node;
|
||||||
|
if (transition.getName().equals(successor.getName() + successor_suffix)) {
|
||||||
|
transition.getArcs().add(arc1);
|
||||||
|
transition.getArcs().add(arc2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Créer le nouveau xmi (modèle convertit)
|
||||||
|
URI convURI = URI.createURI("models/test.xmi");
|
||||||
|
Resource conv = resSet.createResource(convURI);
|
||||||
|
|
||||||
|
// Ajouter le Network dans le nouveau modèle
|
||||||
|
conv.getContents().add(network);
|
||||||
|
|
||||||
|
// Sauver la ressource
|
||||||
|
try {
|
||||||
|
conv.save(Collections.EMPTY_MAP);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,133 @@
|
||||||
|
package simplepdl.manip;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.eclipse.emf.common.util.URI;
|
||||||
|
import org.eclipse.emf.ecore.resource.Resource;
|
||||||
|
import org.eclipse.emf.ecore.resource.ResourceSet;
|
||||||
|
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
|
||||||
|
import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
|
||||||
|
|
||||||
|
import petrinet.PetrinetPackage;
|
||||||
|
import petrinet.Place;
|
||||||
|
import petrinet.Transition;
|
||||||
|
import petrinet.Arc;
|
||||||
|
import petrinet.Network;
|
||||||
|
import petrinet.PetrinetFactory;
|
||||||
|
import simplepdl.Process;
|
||||||
|
import simplepdl.WorkDefinition;
|
||||||
|
import simplepdl.WorkSequence;
|
||||||
|
import simplepdl.WorkSequenceType;
|
||||||
|
import simplepdl.SimplepdlPackage;
|
||||||
|
|
||||||
|
public class simplepdl2petrinet {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
// Charger les package SimplePDL et Petrinet afin de les enregistrer dans le registre d'Eclipse.
|
||||||
|
SimplepdlPackage packageInstance = SimplepdlPackage.eINSTANCE;
|
||||||
|
PetrinetPackage packageInstance2 = PetrinetPackage.eINSTANCE;
|
||||||
|
|
||||||
|
// Enregistrer l'extension ".xmi" comme devant être ouverte à
|
||||||
|
// l'aide d'un objet "XMIResourceFactoryImpl"
|
||||||
|
Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE;
|
||||||
|
Map<String, Object> m = reg.getExtensionToFactoryMap();
|
||||||
|
m.put("xmi", new XMIResourceFactoryImpl());
|
||||||
|
|
||||||
|
// Créer un objet resourceSetImpl qui contiendra une ressource EMF (le modèle)
|
||||||
|
ResourceSet resSet = new ResourceSetImpl();
|
||||||
|
|
||||||
|
// Charger la ressource (notre modèle)
|
||||||
|
URI modelURI = URI.createURI("pdl-sujet.xmi");
|
||||||
|
Resource resource = resSet.getResource(modelURI, true);
|
||||||
|
|
||||||
|
// Récupérer le premier élément du modèle (élément racine)
|
||||||
|
Process process = (Process) resource.getContents().get(0);
|
||||||
|
|
||||||
|
// La fabrique pour fabriquer les éléments de PetriNET
|
||||||
|
PetrinetFactory myFactory = PetrinetFactory.eINSTANCE;
|
||||||
|
|
||||||
|
// Créer un élément Network
|
||||||
|
Network network = myFactory.createNetwork();
|
||||||
|
network.setName(process.getName());
|
||||||
|
|
||||||
|
// Conversion des WorkDefinition en Node et Transition
|
||||||
|
for (Object o : process.getProcessElements()) {
|
||||||
|
if (o instanceof WorkDefinition) {
|
||||||
|
WorkDefinition wd = (WorkDefinition) o;
|
||||||
|
String name = wd.getName();
|
||||||
|
System.out.println(" - " + name);
|
||||||
|
|
||||||
|
Place idle = myFactory.createPlace();
|
||||||
|
idle.setName(name + "_idle");
|
||||||
|
idle.setTokens(1);
|
||||||
|
Place started = myFactory.createPlace();
|
||||||
|
started.setName(name + "_started");
|
||||||
|
started.setTokens(0);
|
||||||
|
Place running = myFactory.createPlace();
|
||||||
|
running.setName(name + "_running");
|
||||||
|
running.setTokens(0);
|
||||||
|
Place finished = myFactory.createPlace();
|
||||||
|
finished.setName(name + "_finished");
|
||||||
|
finished.setTokens(0);
|
||||||
|
|
||||||
|
Arc pause2start = myFactory.createArc();
|
||||||
|
pause2start.setTarget(idle);
|
||||||
|
pause2start.setOutgoing(false);
|
||||||
|
pause2start.setWeight(1);
|
||||||
|
Arc start2running = myFactory.createArc();
|
||||||
|
start2running.setTarget(running);
|
||||||
|
start2running.setOutgoing(true);
|
||||||
|
start2running.setWeight(1);
|
||||||
|
Arc start2started = myFactory.createArc();
|
||||||
|
start2started.setTarget(started);
|
||||||
|
start2started.setOutgoing(true);
|
||||||
|
start2started.setWeight(1);
|
||||||
|
Transition start = myFactory.createTransition();
|
||||||
|
start.setName(name + "_start");
|
||||||
|
start.getArcs().add(pause2start);
|
||||||
|
start.getArcs().add(start2running);
|
||||||
|
start.getArcs().add(start2started);
|
||||||
|
|
||||||
|
Arc running2finish = myFactory.createArc();
|
||||||
|
running2finish.setTarget(running);
|
||||||
|
running2finish.setOutgoing(false);
|
||||||
|
running2finish.setWeight(1);
|
||||||
|
Arc finish2finished = myFactory.createArc();
|
||||||
|
finish2finished.setTarget(finished);
|
||||||
|
finish2finished.setOutgoing(true);
|
||||||
|
finish2finished.setWeight(1);
|
||||||
|
Transition finish = myFactory.createTransition();
|
||||||
|
finish.setName(name + "_finish");
|
||||||
|
finish.getArcs().add(running2finish);
|
||||||
|
finish.getArcs().add(finish2finished);
|
||||||
|
|
||||||
|
System.out.println(" + " + idle.getName() + " (" + idle.getTokens() + ")");
|
||||||
|
|
||||||
|
network.getNodes().add(idle);
|
||||||
|
network.getNodes().add(start);
|
||||||
|
network.getNodes().add(started);
|
||||||
|
network.getNodes().add(running);
|
||||||
|
network.getNodes().add(finish);
|
||||||
|
network.getNodes().add(finished);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Créer le nouveau xmi (modèle convertit)
|
||||||
|
URI convURI = URI.createURI("models/test.xmi");
|
||||||
|
Resource conv = resSet.createResource(convURI);
|
||||||
|
|
||||||
|
// Ajouter le Network dans le nouveau modèle
|
||||||
|
conv.getContents().add(network);
|
||||||
|
|
||||||
|
// Sauver la ressource
|
||||||
|
try {
|
||||||
|
conv.save(Collections.EMPTY_MAP);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -3,45 +3,63 @@
|
||||||
<nodes xsi:type="petrinet:Place" name="Conception_idle" tokens="1"/>
|
<nodes xsi:type="petrinet:Place" name="Conception_idle" tokens="1"/>
|
||||||
<nodes xsi:type="petrinet:Transition" name="Conception_start">
|
<nodes xsi:type="petrinet:Transition" name="Conception_start">
|
||||||
<arcs weight="1" target="//@nodes.0"/>
|
<arcs weight="1" target="//@nodes.0"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.3"/>
|
||||||
<arcs weight="1" outgoing="true" target="//@nodes.2"/>
|
<arcs weight="1" outgoing="true" target="//@nodes.2"/>
|
||||||
</nodes>
|
</nodes>
|
||||||
<nodes xsi:type="petrinet:Place" name="Conception_running" tokens="1"/>
|
<nodes xsi:type="petrinet:Place" name="Conception_started"/>
|
||||||
|
<nodes xsi:type="petrinet:Place" name="Conception_running"/>
|
||||||
<nodes xsi:type="petrinet:Transition" name="Conception_finish">
|
<nodes xsi:type="petrinet:Transition" name="Conception_finish">
|
||||||
<arcs weight="1" target="//@nodes.2"/>
|
<arcs weight="1" target="//@nodes.3"/>
|
||||||
<arcs weight="1" outgoing="true" target="//@nodes.4"/>
|
<arcs weight="1" outgoing="true" target="//@nodes.5"/>
|
||||||
</nodes>
|
</nodes>
|
||||||
<nodes xsi:type="petrinet:Place" name="Conception_finished" tokens="1"/>
|
<nodes xsi:type="petrinet:Place" name="Conception_finished"/>
|
||||||
<nodes xsi:type="petrinet:Place" name="Programmation_idle" tokens="1"/>
|
<nodes xsi:type="petrinet:Place" name="Programmation_idle" tokens="1"/>
|
||||||
<nodes xsi:type="petrinet:Transition" name="Programmation_start">
|
<nodes xsi:type="petrinet:Transition" name="Programmation_start">
|
||||||
<arcs weight="1" target="//@nodes.5"/>
|
<arcs weight="1" target="//@nodes.6"/>
|
||||||
<arcs weight="1" outgoing="true" target="//@nodes.7"/>
|
|
||||||
</nodes>
|
|
||||||
<nodes xsi:type="petrinet:Place" name="Programmation_running" tokens="1"/>
|
|
||||||
<nodes xsi:type="petrinet:Transition" name="Programmation_finish">
|
|
||||||
<arcs weight="1" target="//@nodes.7"/>
|
|
||||||
<arcs weight="1" outgoing="true" target="//@nodes.9"/>
|
<arcs weight="1" outgoing="true" target="//@nodes.9"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.8"/>
|
||||||
|
<arcs weight="1" target="//@nodes.5"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.5"/>
|
||||||
</nodes>
|
</nodes>
|
||||||
<nodes xsi:type="petrinet:Place" name="Programmation_finished" tokens="1"/>
|
<nodes xsi:type="petrinet:Place" name="Programmation_started"/>
|
||||||
|
<nodes xsi:type="petrinet:Place" name="Programmation_running"/>
|
||||||
|
<nodes xsi:type="petrinet:Transition" name="Programmation_finish">
|
||||||
|
<arcs weight="1" target="//@nodes.9"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.11"/>
|
||||||
|
</nodes>
|
||||||
|
<nodes xsi:type="petrinet:Place" name="Programmation_finished"/>
|
||||||
<nodes xsi:type="petrinet:Place" name="RedactionTests_idle" tokens="1"/>
|
<nodes xsi:type="petrinet:Place" name="RedactionTests_idle" tokens="1"/>
|
||||||
<nodes xsi:type="petrinet:Transition" name="RedactionTests_start">
|
<nodes xsi:type="petrinet:Transition" name="RedactionTests_start">
|
||||||
<arcs weight="1" target="//@nodes.10"/>
|
|
||||||
<arcs weight="1" outgoing="true" target="//@nodes.12"/>
|
|
||||||
</nodes>
|
|
||||||
<nodes xsi:type="petrinet:Place" name="RedactionTests_running" tokens="1"/>
|
|
||||||
<nodes xsi:type="petrinet:Transition" name="RedactionTests_finish">
|
|
||||||
<arcs weight="1" target="//@nodes.12"/>
|
<arcs weight="1" target="//@nodes.12"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.15"/>
|
||||||
<arcs weight="1" outgoing="true" target="//@nodes.14"/>
|
<arcs weight="1" outgoing="true" target="//@nodes.14"/>
|
||||||
|
<arcs weight="1" target="//@nodes.2"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.2"/>
|
||||||
</nodes>
|
</nodes>
|
||||||
<nodes xsi:type="petrinet:Place" name="RedactionTests_finished" tokens="1"/>
|
<nodes xsi:type="petrinet:Place" name="RedactionTests_started"/>
|
||||||
<nodes xsi:type="petrinet:Place" name="RedactionDocs_idle" tokens="1"/>
|
<nodes xsi:type="petrinet:Place" name="RedactionTests_running"/>
|
||||||
<nodes xsi:type="petrinet:Transition" name="RedactionDocs_start">
|
<nodes xsi:type="petrinet:Transition" name="RedactionTests_finish">
|
||||||
<arcs weight="1" target="//@nodes.15"/>
|
<arcs weight="1" target="//@nodes.15"/>
|
||||||
<arcs weight="1" outgoing="true" target="//@nodes.17"/>
|
<arcs weight="1" outgoing="true" target="//@nodes.17"/>
|
||||||
|
<arcs weight="1" target="//@nodes.11"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.11"/>
|
||||||
</nodes>
|
</nodes>
|
||||||
<nodes xsi:type="petrinet:Place" name="RedactionDocs_running" tokens="1"/>
|
<nodes xsi:type="petrinet:Place" name="RedactionTests_finished"/>
|
||||||
|
<nodes xsi:type="petrinet:Place" name="RedactionDocs_idle" tokens="1"/>
|
||||||
|
<nodes xsi:type="petrinet:Transition" name="RedactionDocs_start">
|
||||||
|
<arcs weight="1" target="//@nodes.18"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.21"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.20"/>
|
||||||
|
<arcs weight="1" target="//@nodes.2"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.2"/>
|
||||||
|
</nodes>
|
||||||
|
<nodes xsi:type="petrinet:Place" name="RedactionDocs_started"/>
|
||||||
|
<nodes xsi:type="petrinet:Place" name="RedactionDocs_running"/>
|
||||||
<nodes xsi:type="petrinet:Transition" name="RedactionDocs_finish">
|
<nodes xsi:type="petrinet:Transition" name="RedactionDocs_finish">
|
||||||
<arcs weight="1" target="//@nodes.17"/>
|
<arcs weight="1" target="//@nodes.21"/>
|
||||||
<arcs weight="1" outgoing="true" target="//@nodes.19"/>
|
<arcs weight="1" outgoing="true" target="//@nodes.23"/>
|
||||||
|
<arcs weight="1" target="//@nodes.5"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.5"/>
|
||||||
</nodes>
|
</nodes>
|
||||||
<nodes xsi:type="petrinet:Place" name="RedactionDocs_finished" tokens="1"/>
|
<nodes xsi:type="petrinet:Place" name="RedactionDocs_finished"/>
|
||||||
</petrinet:Network>
|
</petrinet:Network>
|
|
@ -0,0 +1,191 @@
|
||||||
|
package simplepdl.manip;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.eclipse.emf.common.util.URI;
|
||||||
|
import org.eclipse.emf.ecore.resource.Resource;
|
||||||
|
import org.eclipse.emf.ecore.resource.ResourceSet;
|
||||||
|
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
|
||||||
|
import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
|
||||||
|
|
||||||
|
import petrinet.PetrinetPackage;
|
||||||
|
import petrinet.Place;
|
||||||
|
import petrinet.Transition;
|
||||||
|
import petrinet.Arc;
|
||||||
|
import petrinet.Network;
|
||||||
|
import petrinet.Node;
|
||||||
|
import petrinet.PetrinetFactory;
|
||||||
|
import simplepdl.Process;
|
||||||
|
import simplepdl.WorkDefinition;
|
||||||
|
import simplepdl.WorkSequence;
|
||||||
|
import simplepdl.WorkSequenceType;
|
||||||
|
import simplepdl.SimplepdlPackage;
|
||||||
|
|
||||||
|
public class simplepdl2petrinet {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
// Charger les package SimplePDL et Petrinet afin de les enregistrer dans le registre d'Eclipse.
|
||||||
|
SimplepdlPackage packageInstance = SimplepdlPackage.eINSTANCE;
|
||||||
|
PetrinetPackage packageInstance2 = PetrinetPackage.eINSTANCE;
|
||||||
|
|
||||||
|
// Enregistrer l'extension ".xmi" comme devant être ouverte à
|
||||||
|
// l'aide d'un objet "XMIResourceFactoryImpl"
|
||||||
|
Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE;
|
||||||
|
Map<String, Object> m = reg.getExtensionToFactoryMap();
|
||||||
|
m.put("xmi", new XMIResourceFactoryImpl());
|
||||||
|
|
||||||
|
// Créer un objet resourceSetImpl qui contiendra une ressource EMF (le modèle)
|
||||||
|
ResourceSet resSet = new ResourceSetImpl();
|
||||||
|
|
||||||
|
// Charger la ressource (notre modèle)
|
||||||
|
URI modelURI = URI.createURI("pdl-sujet.xmi");
|
||||||
|
Resource resource = resSet.getResource(modelURI, true);
|
||||||
|
|
||||||
|
// Récupérer le premier élément du modèle (élément racine)
|
||||||
|
Process process = (Process) resource.getContents().get(0);
|
||||||
|
|
||||||
|
// La fabrique pour fabriquer les éléments de PetriNET
|
||||||
|
PetrinetFactory myFactory = PetrinetFactory.eINSTANCE;
|
||||||
|
|
||||||
|
// Créer un élément Network
|
||||||
|
Network network = myFactory.createNetwork();
|
||||||
|
network.setName(process.getName());
|
||||||
|
|
||||||
|
// Conversion des WorkDefinition en Node et Transition
|
||||||
|
for (Object o : process.getProcessElements()) {
|
||||||
|
if (o instanceof WorkDefinition) {
|
||||||
|
WorkDefinition wd = (WorkDefinition) o;
|
||||||
|
String name = wd.getName();
|
||||||
|
|
||||||
|
Place idle = myFactory.createPlace();
|
||||||
|
idle.setName(name + "_idle");
|
||||||
|
idle.setTokens(1);
|
||||||
|
Place started = myFactory.createPlace();
|
||||||
|
started.setName(name + "_started");
|
||||||
|
started.setTokens(0);
|
||||||
|
Place running = myFactory.createPlace();
|
||||||
|
running.setName(name + "_running");
|
||||||
|
running.setTokens(0);
|
||||||
|
Place finished = myFactory.createPlace();
|
||||||
|
finished.setName(name + "_finished");
|
||||||
|
finished.setTokens(0);
|
||||||
|
|
||||||
|
Arc pause2start = myFactory.createArc();
|
||||||
|
pause2start.setTarget(idle);
|
||||||
|
pause2start.setOutgoing(false);
|
||||||
|
pause2start.setWeight(1);
|
||||||
|
Arc start2running = myFactory.createArc();
|
||||||
|
start2running.setTarget(running);
|
||||||
|
start2running.setOutgoing(true);
|
||||||
|
start2running.setWeight(1);
|
||||||
|
Arc start2started = myFactory.createArc();
|
||||||
|
start2started.setTarget(started);
|
||||||
|
start2started.setOutgoing(true);
|
||||||
|
start2started.setWeight(1);
|
||||||
|
Transition start = myFactory.createTransition();
|
||||||
|
start.setName(name + "_start");
|
||||||
|
start.getArcs().add(pause2start);
|
||||||
|
start.getArcs().add(start2running);
|
||||||
|
start.getArcs().add(start2started);
|
||||||
|
|
||||||
|
Arc running2finish = myFactory.createArc();
|
||||||
|
running2finish.setTarget(running);
|
||||||
|
running2finish.setOutgoing(false);
|
||||||
|
running2finish.setWeight(1);
|
||||||
|
Arc finish2finished = myFactory.createArc();
|
||||||
|
finish2finished.setTarget(finished);
|
||||||
|
finish2finished.setOutgoing(true);
|
||||||
|
finish2finished.setWeight(1);
|
||||||
|
Transition finish = myFactory.createTransition();
|
||||||
|
finish.setName(name + "_finish");
|
||||||
|
finish.getArcs().add(running2finish);
|
||||||
|
finish.getArcs().add(finish2finished);
|
||||||
|
|
||||||
|
network.getNodes().add(idle);
|
||||||
|
network.getNodes().add(start);
|
||||||
|
network.getNodes().add(started);
|
||||||
|
network.getNodes().add(running);
|
||||||
|
network.getNodes().add(finish);
|
||||||
|
network.getNodes().add(finished);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Conversion des WorkSequence en Node et Transition
|
||||||
|
for (Object o : process.getProcessElements()) {
|
||||||
|
if (o instanceof WorkSequence) {
|
||||||
|
WorkSequence ws = (WorkSequence) o;
|
||||||
|
WorkSequenceType type = ws.getLinkType();
|
||||||
|
WorkDefinition predecessor = ws.getPredecessor();
|
||||||
|
WorkDefinition successor = ws.getSuccessor();
|
||||||
|
|
||||||
|
// creation des suffixs permettant la recherche des noeuds
|
||||||
|
String predecessor_suffix = new String();
|
||||||
|
String successor_suffix = new String();
|
||||||
|
switch (type) {
|
||||||
|
case START_TO_START:
|
||||||
|
predecessor_suffix = "_started";
|
||||||
|
successor_suffix = "_start";
|
||||||
|
break;
|
||||||
|
case START_TO_FINISH:
|
||||||
|
predecessor_suffix = "_started";
|
||||||
|
successor_suffix = "_finished";
|
||||||
|
break;
|
||||||
|
case FINISH_TO_START:
|
||||||
|
predecessor_suffix = "_finished";
|
||||||
|
successor_suffix = "_start";
|
||||||
|
break;
|
||||||
|
case FINISH_TO_FINISH:
|
||||||
|
predecessor_suffix = "_finished";
|
||||||
|
successor_suffix = "_finish";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
System.out.print("the fuck ?");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// creation du read-arc
|
||||||
|
Arc arc1 = myFactory.createArc();
|
||||||
|
arc1.setOutgoing(false);
|
||||||
|
arc1.setWeight(1);
|
||||||
|
Arc arc2 = myFactory.createArc();
|
||||||
|
arc2.setOutgoing(true);
|
||||||
|
arc2.setWeight(1);
|
||||||
|
|
||||||
|
for (Node node : network.getNodes()) {
|
||||||
|
if (node instanceof Place) {
|
||||||
|
Place place = (Place) node;
|
||||||
|
if (place.getName().equals(predecessor.getName() + predecessor_suffix)) {
|
||||||
|
arc1.setTarget(place);
|
||||||
|
arc2.setTarget(place);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (node instanceof Transition) {
|
||||||
|
Transition transition = (Transition) node;
|
||||||
|
if (transition.getName().equals(successor.getName() + successor_suffix)) {
|
||||||
|
transition.getArcs().add(arc1);
|
||||||
|
transition.getArcs().add(arc2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Créer le nouveau xmi (modèle convertit)
|
||||||
|
URI convURI = URI.createURI("models/test.xmi");
|
||||||
|
Resource conv = resSet.createResource(convURI);
|
||||||
|
|
||||||
|
// Ajouter le Network dans le nouveau modèle
|
||||||
|
conv.getContents().add(network);
|
||||||
|
|
||||||
|
// Sauver la ressource
|
||||||
|
try {
|
||||||
|
conv.save(Collections.EMPTY_MAP);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,65 @@
|
||||||
|
<?xml version="1.0" encoding="ASCII"?>
|
||||||
|
<petrinet:Network xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:petrinet="http://petrinet" name="Developpement">
|
||||||
|
<nodes xsi:type="petrinet:Place" name="Conception_idle" tokens="1"/>
|
||||||
|
<nodes xsi:type="petrinet:Transition" name="Conception_start">
|
||||||
|
<arcs weight="1" target="//@nodes.0"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.3"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.2"/>
|
||||||
|
</nodes>
|
||||||
|
<nodes xsi:type="petrinet:Place" name="Conception_started"/>
|
||||||
|
<nodes xsi:type="petrinet:Place" name="Conception_running"/>
|
||||||
|
<nodes xsi:type="petrinet:Transition" name="Conception_finish">
|
||||||
|
<arcs weight="1" target="//@nodes.3"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.5"/>
|
||||||
|
</nodes>
|
||||||
|
<nodes xsi:type="petrinet:Place" name="Conception_finished"/>
|
||||||
|
<nodes xsi:type="petrinet:Place" name="Programmation_idle" tokens="1"/>
|
||||||
|
<nodes xsi:type="petrinet:Transition" name="Programmation_start">
|
||||||
|
<arcs weight="1" target="//@nodes.6"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.9"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.8"/>
|
||||||
|
<arcs weight="1" target="//@nodes.5"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.5"/>
|
||||||
|
</nodes>
|
||||||
|
<nodes xsi:type="petrinet:Place" name="Programmation_started"/>
|
||||||
|
<nodes xsi:type="petrinet:Place" name="Programmation_running"/>
|
||||||
|
<nodes xsi:type="petrinet:Transition" name="Programmation_finish">
|
||||||
|
<arcs weight="1" target="//@nodes.9"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.11"/>
|
||||||
|
</nodes>
|
||||||
|
<nodes xsi:type="petrinet:Place" name="Programmation_finished"/>
|
||||||
|
<nodes xsi:type="petrinet:Place" name="RedactionTests_idle" tokens="1"/>
|
||||||
|
<nodes xsi:type="petrinet:Transition" name="RedactionTests_start">
|
||||||
|
<arcs weight="1" target="//@nodes.12"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.15"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.14"/>
|
||||||
|
<arcs weight="1" target="//@nodes.2"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.2"/>
|
||||||
|
</nodes>
|
||||||
|
<nodes xsi:type="petrinet:Place" name="RedactionTests_started"/>
|
||||||
|
<nodes xsi:type="petrinet:Place" name="RedactionTests_running"/>
|
||||||
|
<nodes xsi:type="petrinet:Transition" name="RedactionTests_finish">
|
||||||
|
<arcs weight="1" target="//@nodes.15"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.17"/>
|
||||||
|
<arcs weight="1" target="//@nodes.11"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.11"/>
|
||||||
|
</nodes>
|
||||||
|
<nodes xsi:type="petrinet:Place" name="RedactionTests_finished"/>
|
||||||
|
<nodes xsi:type="petrinet:Place" name="RedactionDocs_idle" tokens="1"/>
|
||||||
|
<nodes xsi:type="petrinet:Transition" name="RedactionDocs_start">
|
||||||
|
<arcs weight="1" target="//@nodes.18"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.21"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.20"/>
|
||||||
|
<arcs weight="1" target="//@nodes.2"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.2"/>
|
||||||
|
</nodes>
|
||||||
|
<nodes xsi:type="petrinet:Place" name="RedactionDocs_started"/>
|
||||||
|
<nodes xsi:type="petrinet:Place" name="RedactionDocs_running"/>
|
||||||
|
<nodes xsi:type="petrinet:Transition" name="RedactionDocs_finish">
|
||||||
|
<arcs weight="1" target="//@nodes.21"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.23"/>
|
||||||
|
<arcs weight="1" target="//@nodes.5"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.5"/>
|
||||||
|
</nodes>
|
||||||
|
<nodes xsi:type="petrinet:Place" name="RedactionDocs_finished"/>
|
||||||
|
</petrinet:Network>
|
|
@ -1,5 +1,5 @@
|
||||||
PROBLEMS_FILTERS_MIGRATE=true
|
PROBLEMS_FILTERS_MIGRATE=true
|
||||||
eclipse.preferences.version=1
|
eclipse.preferences.version=1
|
||||||
platformState=1631777710672
|
platformState=1631777710673
|
||||||
quickStart=false
|
quickStart=false
|
||||||
tipsAndTricks=true
|
tipsAndTricks=true
|
||||||
|
|
|
@ -7,7 +7,8 @@
|
||||||
<listEntry value="1"/>
|
<listEntry value="1"/>
|
||||||
</listAttribute>
|
</listAttribute>
|
||||||
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_EXCLUDE_TEST_CODE" value="true"/>
|
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_EXCLUDE_TEST_CODE" value="true"/>
|
||||||
|
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_CLASSPATH_ONLY_JAR" value="false"/>
|
||||||
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="simplepdl.manip.simplepdl2petrinet"/>
|
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="simplepdl.manip.simplepdl2petrinet"/>
|
||||||
<stringAttribute key="org.eclipse.jdt.launching.MODULE_NAME" value=""/>
|
<stringAttribute key="org.eclipse.jdt.launching.MODULE_NAME" value="fr.n7.simplepdl"/>
|
||||||
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="fr.n7.simplepdl"/>
|
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="fr.n7.simplepdl"/>
|
||||||
</launchConfiguration>
|
</launchConfiguration>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<booleanAttribute key="org.eclipse.acceleo.ide.ui.COMPUTE_PROFILING" value="false"/>
|
<booleanAttribute key="org.eclipse.acceleo.ide.ui.COMPUTE_PROFILING" value="false"/>
|
||||||
<booleanAttribute key="org.eclipse.acceleo.ide.ui.COMPUTE_TRACEABILITY" value="false"/>
|
<booleanAttribute key="org.eclipse.acceleo.ide.ui.COMPUTE_TRACEABILITY" value="false"/>
|
||||||
<stringAttribute key="org.eclipse.acceleo.ide.ui.LAUNCHING_STRATEGY_DESCRIPTION" value="Java Application"/>
|
<stringAttribute key="org.eclipse.acceleo.ide.ui.LAUNCHING_STRATEGY_DESCRIPTION" value="Java Application"/>
|
||||||
<stringAttribute key="org.eclipse.acceleo.ide.ui.MODEL_PATH" value="/fr.n7.petrinet.exemples/net.xmi"/>
|
<stringAttribute key="org.eclipse.acceleo.ide.ui.MODEL_PATH" value="/fr.n7.petrinet.exemples/Developpement_petrinet.xmi"/>
|
||||||
<stringAttribute key="org.eclipse.acceleo.ide.ui.TARGET_PATH" value="/fr.n7.petrinet.exemples/gen"/>
|
<stringAttribute key="org.eclipse.acceleo.ide.ui.TARGET_PATH" value="/fr.n7.petrinet.exemples/gen"/>
|
||||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
||||||
<listEntry value="/fr.n7.petrinet.toTINA/src/fr/n7/petrinet/toTINA/main/ToTINA.java"/>
|
<listEntry value="/fr.n7.petrinet.toTINA/src/fr/n7/petrinet/toTINA/main/ToTINA.java"/>
|
||||||
|
@ -17,6 +17,6 @@
|
||||||
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
|
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
|
||||||
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="fr.n7.petrinet.toTINA.main.ToTINA"/>
|
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="fr.n7.petrinet.toTINA.main.ToTINA"/>
|
||||||
<stringAttribute key="org.eclipse.jdt.launching.MODULE_NAME" value="fr.n7.petrinet.toTINA"/>
|
<stringAttribute key="org.eclipse.jdt.launching.MODULE_NAME" value="fr.n7.petrinet.toTINA"/>
|
||||||
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value=""/home/lfainsin/miniproj_idm/eclipse-workspace/fr.n7.petrinet.exemples/net.xmi" "/home/lfainsin/miniproj_idm/eclipse-workspace/fr.n7.petrinet.exemples/gen""/>
|
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value=""/home/lfainsin/miniproj_idm/eclipse-workspace/fr.n7.petrinet.exemples/Developpement_petrinet.xmi" "/home/lfainsin/miniproj_idm/eclipse-workspace/fr.n7.petrinet.exemples/gen""/>
|
||||||
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="fr.n7.petrinet.toTINA"/>
|
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="fr.n7.petrinet.toTINA"/>
|
||||||
</launchConfiguration>
|
</launchConfiguration>
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
<launchHistory>
|
<launchHistory>
|
||||||
<launchGroup id="org.eclipse.debug.ui.launchGroup.debug">
|
<launchGroup id="org.eclipse.debug.ui.launchGroup.debug">
|
||||||
<mruHistory>
|
<mruHistory>
|
||||||
<launch memento="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <launchConfiguration local="true" path="simplepdl2petrinet"/> "/>
|
|
||||||
<launch memento="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <launchConfiguration local="true" path="toTINA"/> "/>
|
<launch memento="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <launchConfiguration local="true" path="toTINA"/> "/>
|
||||||
|
<launch memento="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <launchConfiguration local="true" path="simplepdl2petrinet"/> "/>
|
||||||
<launch memento="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <launchConfiguration local="true" path="ToDOT"/> "/>
|
<launch memento="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <launchConfiguration local="true" path="ToDOT"/> "/>
|
||||||
<launch memento="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <launchConfiguration local="true" path="toHTML"/> "/>
|
<launch memento="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <launchConfiguration local="true" path="toHTML"/> "/>
|
||||||
<launch memento="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <launchConfiguration local="true" path="SimplePDLCreator"/> "/>
|
<launch memento="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <launchConfiguration local="true" path="SimplePDLCreator"/> "/>
|
||||||
|
@ -24,8 +24,8 @@
|
||||||
</launchGroup>
|
</launchGroup>
|
||||||
<launchGroup id="org.eclipse.debug.ui.launchGroup.run">
|
<launchGroup id="org.eclipse.debug.ui.launchGroup.run">
|
||||||
<mruHistory>
|
<mruHistory>
|
||||||
<launch memento="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <launchConfiguration local="true" path="simplepdl2petrinet"/> "/>
|
|
||||||
<launch memento="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <launchConfiguration local="true" path="toTINA"/> "/>
|
<launch memento="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <launchConfiguration local="true" path="toTINA"/> "/>
|
||||||
|
<launch memento="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <launchConfiguration local="true" path="simplepdl2petrinet"/> "/>
|
||||||
<launch memento="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <launchConfiguration local="true" path="ToDOT"/> "/>
|
<launch memento="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <launchConfiguration local="true" path="ToDOT"/> "/>
|
||||||
<launch memento="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <launchConfiguration local="true" path="toHTML"/> "/>
|
<launch memento="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <launchConfiguration local="true" path="toHTML"/> "/>
|
||||||
<launch memento="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <launchConfiguration local="true" path="SimplePDLCreator"/> "/>
|
<launch memento="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <launchConfiguration local="true" path="SimplePDLCreator"/> "/>
|
||||||
|
|
|
@ -22,13 +22,13 @@ INDEX VERSION 1.131+/home/lfainsin/miniproj_idm/eclipse-workspace/.metadata/.plu
|
||||||
2320756977.index
|
2320756977.index
|
||||||
3761123150.index
|
3761123150.index
|
||||||
649822626.index
|
649822626.index
|
||||||
|
1610757853.index
|
||||||
3144173601.index
|
3144173601.index
|
||||||
3144547538.index
|
3144547538.index
|
||||||
638382064.index
|
638382064.index
|
||||||
1366149182.index
|
1366149182.index
|
||||||
2662280364.index
|
2662280364.index
|
||||||
3977823992.index
|
3977823992.index
|
||||||
686276266.index
|
|
||||||
1027991553.index
|
1027991553.index
|
||||||
2344539973.index
|
2344539973.index
|
||||||
997444292.index
|
997444292.index
|
||||||
|
|
Before Width: | Height: | Size: 715 B After Width: | Height: | Size: 405 B |
Before Width: | Height: | Size: 494 B After Width: | Height: | Size: 603 B |
After Width: | Height: | Size: 493 B |
After Width: | Height: | Size: 612 B |
After Width: | Height: | Size: 411 B |
|
@ -13,3 +13,6 @@
|
||||||
1633794227791 Delete element
|
1633794227791 Delete element
|
||||||
1633817925558 Move file
|
1633817925558 Move file
|
||||||
1633818171927 Delete element
|
1633818171927 Delete element
|
||||||
|
1633865744611 Delete element
|
||||||
|
1633865919357 Delete element
|
||||||
|
1633865970104 Copy file
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
#Cached timestamps
|
#Cached timestamps
|
||||||
#Sun Oct 10 00:17:26 CEST 2021
|
#Sun Oct 10 00:27:50 CEST 2021
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# List of external plug-in models previously loaded. Timestamp: 1633817862111
|
# List of external plug-in models previously loaded. Timestamp: 1633863537523
|
||||||
file:/mnt/n7fs/ens/tp_cregut/eclipse-gls-2020-09/plugins/com.google.guava_27.1.0.v20190517-1946.jar
|
file:/mnt/n7fs/ens/tp_cregut/eclipse-gls-2020-09/plugins/com.google.guava_27.1.0.v20190517-1946.jar
|
||||||
file:/mnt/n7fs/ens/tp_cregut/eclipse-gls-2020-09/plugins/com.google.inject_3.0.0.v201605172100.jar
|
file:/mnt/n7fs/ens/tp_cregut/eclipse-gls-2020-09/plugins/com.google.inject_3.0.0.v201605172100.jar
|
||||||
file:/mnt/n7fs/ens/tp_cregut/eclipse-gls-2020-09/plugins/com.ibm.icu_67.1.0.v20200706-1749.jar
|
file:/mnt/n7fs/ens/tp_cregut/eclipse-gls-2020-09/plugins/com.ibm.icu_67.1.0.v20200706-1749.jar
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
#Sun Oct 10 00:17:33 CEST 2021
|
#Sun Oct 10 12:58:52 CEST 2021
|
||||||
org.eclipse.core.runtime=2
|
org.eclipse.core.runtime=2
|
||||||
org.eclipse.platform=4.17.0.v20200902-1800
|
org.eclipse.platform=4.17.0.v20200902-1800
|
||||||
|
|
|
@ -0,0 +1,65 @@
|
||||||
|
<?xml version="1.0" encoding="ASCII"?>
|
||||||
|
<petrinet:Network xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:petrinet="http://petrinet" name="Developpement">
|
||||||
|
<nodes xsi:type="petrinet:Place" name="Conception_idle" tokens="1"/>
|
||||||
|
<nodes xsi:type="petrinet:Transition" name="Conception_start">
|
||||||
|
<arcs weight="1" target="//@nodes.0"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.3"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.2"/>
|
||||||
|
</nodes>
|
||||||
|
<nodes xsi:type="petrinet:Place" name="Conception_started"/>
|
||||||
|
<nodes xsi:type="petrinet:Place" name="Conception_running"/>
|
||||||
|
<nodes xsi:type="petrinet:Transition" name="Conception_finish">
|
||||||
|
<arcs weight="1" target="//@nodes.3"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.5"/>
|
||||||
|
</nodes>
|
||||||
|
<nodes xsi:type="petrinet:Place" name="Conception_finished"/>
|
||||||
|
<nodes xsi:type="petrinet:Place" name="Programmation_idle" tokens="1"/>
|
||||||
|
<nodes xsi:type="petrinet:Transition" name="Programmation_start">
|
||||||
|
<arcs weight="1" target="//@nodes.6"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.9"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.8"/>
|
||||||
|
<arcs weight="1" target="//@nodes.5"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.5"/>
|
||||||
|
</nodes>
|
||||||
|
<nodes xsi:type="petrinet:Place" name="Programmation_started"/>
|
||||||
|
<nodes xsi:type="petrinet:Place" name="Programmation_running"/>
|
||||||
|
<nodes xsi:type="petrinet:Transition" name="Programmation_finish">
|
||||||
|
<arcs weight="1" target="//@nodes.9"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.11"/>
|
||||||
|
</nodes>
|
||||||
|
<nodes xsi:type="petrinet:Place" name="Programmation_finished"/>
|
||||||
|
<nodes xsi:type="petrinet:Place" name="RedactionTests_idle" tokens="1"/>
|
||||||
|
<nodes xsi:type="petrinet:Transition" name="RedactionTests_start">
|
||||||
|
<arcs weight="1" target="//@nodes.12"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.15"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.14"/>
|
||||||
|
<arcs weight="1" target="//@nodes.2"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.2"/>
|
||||||
|
</nodes>
|
||||||
|
<nodes xsi:type="petrinet:Place" name="RedactionTests_started"/>
|
||||||
|
<nodes xsi:type="petrinet:Place" name="RedactionTests_running"/>
|
||||||
|
<nodes xsi:type="petrinet:Transition" name="RedactionTests_finish">
|
||||||
|
<arcs weight="1" target="//@nodes.15"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.17"/>
|
||||||
|
<arcs weight="1" target="//@nodes.11"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.11"/>
|
||||||
|
</nodes>
|
||||||
|
<nodes xsi:type="petrinet:Place" name="RedactionTests_finished"/>
|
||||||
|
<nodes xsi:type="petrinet:Place" name="RedactionDocs_idle" tokens="1"/>
|
||||||
|
<nodes xsi:type="petrinet:Transition" name="RedactionDocs_start">
|
||||||
|
<arcs weight="1" target="//@nodes.18"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.21"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.20"/>
|
||||||
|
<arcs weight="1" target="//@nodes.2"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.2"/>
|
||||||
|
</nodes>
|
||||||
|
<nodes xsi:type="petrinet:Place" name="RedactionDocs_started"/>
|
||||||
|
<nodes xsi:type="petrinet:Place" name="RedactionDocs_running"/>
|
||||||
|
<nodes xsi:type="petrinet:Transition" name="RedactionDocs_finish">
|
||||||
|
<arcs weight="1" target="//@nodes.21"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.23"/>
|
||||||
|
<arcs weight="1" target="//@nodes.5"/>
|
||||||
|
<arcs weight="1" outgoing="true" target="//@nodes.5"/>
|
||||||
|
</nodes>
|
||||||
|
<nodes xsi:type="petrinet:Place" name="RedactionDocs_finished"/>
|
||||||
|
</petrinet:Network>
|