nouveaux livrables

This commit is contained in:
Laureηt 2021-10-20 16:36:15 +02:00
parent 6354238864
commit 93532d7c67
No known key found for this signature in database
GPG key ID: D88C6B294FD40994
24 changed files with 1982 additions and 414 deletions

51
livrables/PDL.xtext Normal file
View file

@ -0,0 +1,51 @@
// automatically generated by Xtext
grammar fr.n7.simplepdl.txt.PDL with org.eclipse.xtext.common.Terminals
import "http://simplepdl"
import "http://www.eclipse.org/emf/2002/Ecore" as ecore
Process returns Process :
{Process}
'process' name=ID '{'
processElements+=ProcessElement*
'}' ;
ProcessElement returns ProcessElement:
WorkDefinition | WorkSequence | Guidance | Resource
;
WorkDefinition returns WorkDefinition :
{WorkDefinition}
'wd' name=ID
requests+=Request*
;
WorkSequence returns WorkSequence :
{WorkSequence}
'ws' linkType=WorkSequenceType
'from' predecessor=[WorkDefinition]
'to' successor=[WorkDefinition]
;
Guidance returns Guidance :
{Guidance}
'note' text=STRING
;
Resource returns Resource :
{Resource}
'res' name=ID quantity=INT
;
Request returns Request :
{Request}
'req' target=[Resource] quantity=INT
;
enum WorkSequenceType returns WorkSequenceType :
startToStart = 's2s'
| finishToStart = 'f2s'
| startToFinish = 's2f'
| finishToFinish = 'f2f'
;

View file

@ -1 +0,0 @@
../eclipse-workspace/fr.n7.petrinet.toTINA/src/fr/n7/petrinet/toTINA/main/toTINA.mtl

View file

@ -0,0 +1,19 @@
[comment encoding = UTF-8 /]
[module toLTL('http://simplepdl')]
[template public processToLTL(aProcess : Process)]
[comment @main/]
[file (aProcess.name + '.ltl', false, 'UTF-8')]
[let wds : OrderedSet(WorkDefinition) = aProcess.getWDs() ]
[for (wds) before ('[] <> (') separator (' /\\ ') after (');')][self.name + '_finished'/][/for]
[/let]
[/file]
[/template]
[query public getWDs(p: Process) : OrderedSet(WorkDefinition) =
p.processElements->select( e | e.oclIsTypeOf(WorkDefinition) )
->collect( e | e.oclAsType(WorkDefinition) )
->asOrderedSet()
/]

View file

@ -0,0 +1,20 @@
[comment encoding = UTF-8 /]
[module toLTL('http://simplepdl')]
[template public processToLTL(aProcess : Process)]
[comment @main/]
[file (aProcess.name + '.ltl', false, 'UTF-8')]
[let wds : OrderedSet(WorkDefinition) = aProcess.getWDs() ]
[for (wds) before ('[] <> ((') separator (') /\\ (') after ('));')]['(' + self.name + '_idle /\\ -' + self.name + '_running /\\ -' + self.name + '_finished) \\/ (-' + self.name + '_idle /\\ ' + self.name + '_running /\\ -' + self.name + '_finished) \\/ (-' + self.name + '_idle /\\ -' + self.name + '_running /\\ ' + self.name + '_finished)'/][/for]
[for (wds) before ('[] <> ((') separator (') /\\ (') after ('));')][self.name + '_finished => [](-' + self.name + '_running' + ' /\\ -' + self.name + '_idle /\\ ' + self.name + '_started)'/][/for]
[/let]
[/file]
[/template]
[query public getWDs(p: Process) : OrderedSet(WorkDefinition) =
p.processElements->select( e | e.oclIsTypeOf(WorkDefinition) )
->collect( e | e.oclAsType(WorkDefinition) )
->asOrderedSet()
/]

View file

@ -0,0 +1,158 @@
module SimplePDL2PetriNet;
create OUT: petrinet from IN: simplepdl;
-- Obtenir la place correspondant au predecesseur d'une WorkSequence
helper context simplepdl!WorkSequence
def: getPlaceOfPredecessor(): petrinet!Place =
if self.linkType = #startToStart or self.linkType = #startToFinish then
petrinet!Place.allInstances()
->select(p | p.name = self.predecessor.name + '_started')
->asSequence()->first()
else
petrinet!Place.allInstances()
->select(p | p.name = self.predecessor.name + '_finished')
->asSequence()->first()
endif;
-- Obtenir la transition correspondant au successeur d'une WorkSequence
helper context simplepdl!WorkSequence
def: getTransitionOfSuccessor(): petrinet!Transition =
if self.linkType = #startToStart or self.linkType = #finishToStart then
petrinet!Transition.allInstances()
->select(t | t.name = self.successor.name + '_start')
->asSequence()->first()
else
petrinet!Transition.allInstances()
->select(t | t.name = self.successor.name + '_finish')
->asSequence()->first()
endif;
-- Obtenir la place correspondant a la Resource d'une Request
helper context simplepdl!Request
def: getPlaceOfTarget(): petrinet!Place =
petrinet!Place.allInstances()
->select(p | p.name = self.target.name + '_resource')
->asSequence()->first();
-- Obtenir la transition start correspondant au Requester d'une Request
helper context simplepdl!Request
def: getStartTransitionOfRequester(): petrinet!Transition =
petrinet!Transition.allInstances()
->select(t | t.name = self.requester.name + '_start')
->asSequence()->first();
-- Obtenir la transition finish correspondant au Requester d'une Request
helper context simplepdl!Request
def: getFinishTransitionOfRequester(): petrinet!Transition =
petrinet!Transition.allInstances()
->select(t | t.name = self.requester.name + '_finish')
->asSequence()->first();
-- Traduire un Process en un PetriNet de même nom
rule Process2PetriNet {
from p: simplepdl!Process
to pn: petrinet!Network (name <- p.name)
}
-- Traduire une WorkDefinition en un motif sur le réseau de Petri
rule WorkDefinition2PetriNet {
from wd: simplepdl!WorkDefinition
to
-- PLACES d'une WorkDefinition
p_idle: petrinet!Place(
name <- wd.name + '_idle',
tokens <- 1,
network <- wd.process),
p_running: petrinet!Place(
name <- wd.name + '_running',
tokens <- 0,
network <- wd.process),
p_started: petrinet!Place(
name <- wd.name + '_started',
tokens <- 0,
network <- wd.process),
p_finished: petrinet!Place(
name <- wd.name + '_finished',
tokens <- 0,
network <- wd.process),
-- TRANSITIONS d'une WorkDefinition
t_start: petrinet!Transition(
name <- wd.name + '_start',
network <- wd.process),
t_finish: petrinet!Transition(
name <- wd.name + '_finish',
network <- wd.process),
-- ARCS d'un WorkDefinition
a_idle2start: petrinet!Arc(
place <- p_idle,
transition <- t_start,
outgoing <- false,
weight <- 1),
a_start2running: petrinet!Arc(
place <- p_running,
transition <- t_start,
outgoing <- true,
weight <- 1),
a_start2started: petrinet!Arc(
place <- p_started,
transition <- t_start,
outgoing <- true,
weight <- 1),
a_running2finish: petrinet!Arc(
place <- p_running,
transition <- t_finish,
outgoing <- false,
weight <- 1),
a_finish2finished: petrinet!Arc(
place <- p_finished,
transition <- t_finish,
outgoing <- true,
weight <- 1)
}
-- Traduire une WorkDefinition en un motif sur le réseau de Petri
rule WorkSequence2PetriNet {
from ws: simplepdl!WorkSequence
to
-- ARCS d'une WorkSequence
arc1: petrinet!Arc(
place <- ws.getPlaceOfPredecessor(),
transition <- ws.getTransitionOfSuccessor(),
outgoing <- false,
weight <- 1),
arc2: petrinet!Arc(
place <- ws.getPlaceOfPredecessor(),
transition <- ws.getTransitionOfSuccessor(),
outgoing <- true,
weight <- 1)
}
-- Traduire une Resource en un motif sur le réseau de Petri
rule Resource2PetriNet {
from res: simplepdl!Resource
to
-- PLACE d'une Resource
place: petrinet!Place(
name <- res.name + '_resource',
tokens <- res.quantity,
network <- res.process)
}
-- Traduire une Request en un motif sur le réseau de Petri
rule Request2PetriNet {
from req: simplepdl!Request
to
-- ARCS d'une Request
arcs1: petrinet!Arc(
place <- req.getPlaceOfTarget(),
transition <- req.getStartTransitionOfRequester(),
outgoing <- false,
weight <- req.quantity),
arcs2: petrinet!Arc(
place <- req.getPlaceOfTarget(),
transition <- req.getFinishTransitionOfRequester(),
outgoing <- true,
weight <- req.quantity)
}

View file

@ -1 +0,0 @@
../eclipse-workspace/fr.n7.simplepdl/src/simplepdl/manip/simplepdl2petrinet.java

View file

@ -1 +0,0 @@
../eclipse-workspace/fr.n7.petrinet/ko-net.xmi

26
livrables/ko-net.xmi Normal file
View file

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<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"
xsi:schemaLocation="http://petrinet petriNET.ecore"
name="mauvaisNetwork">
<nodes xsi:type="petrinet:Place"
name="okay"
tokens="10"/>
<nodes xsi:type="petrinet:Place"
name="1"
tokens="1"/>
<nodes xsi:type="petrinet:Place"
name="placeNeg"
tokens="-5"/>
<nodes xsi:type="petrinet:Transition"
name="debut2fin">
<arcs weight="-5"
place="//@nodes.1"/>
<arcs weight="1"
outgoing="true"
place="//@nodes.2"/>
</nodes>
</petrinet:Network>

View file

@ -1 +0,0 @@
../eclipse-workspace/fr.n7.simplepdl/ko-pdl1.xmi

37
livrables/ko-pdl1.xmi Normal file
View file

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<simplepdl:Process
xmi:version="2.0"
xmlns:xmi="http://www.omg.org/XMI"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:simplepdl="http://simplepdl"
xsi:schemaLocation="http://simplepdl simplePDL.ecore"
name="ExempleProcess1">
<processElements
xsi:type="simplepdl:Resource"
quantity="-5"
name="Crayon"/>
<processElements
xsi:type="simplepdl:Resource"
quantity="1"
name="00000"/>
<processElements
xsi:type="simplepdl:Resource"
name="zeroResource"/>
<processElements
xsi:type="simplepdl:Resource"
quantity="5"
name="Okay"/>
<processElements
xsi:type="simplepdl:WorkDefinition"
name="Demandeur">
<requests
quantity="-5"
target="//@processElements.0"/>
<requests
quantity="10000000"
target="//@processElements.3"/>
<requests
quantity="5"
target="//@processElements.3"/>
</processElements>
</simplepdl:Process>

View file

@ -1 +0,0 @@
../eclipse-workspace/fr.n7.simplepdl/ko-pdl2.xmi

32
livrables/ko-pdl2.xmi Normal file
View file

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<simplepdl:Process
xmi:version="2.0"
xmlns:xmi="http://www.omg.org/XMI"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:simplepdl="http://simplepdl"
xsi:schemaLocation="http://simplepdl simplePDL.ecore"
name="ExempleProcess1">
<processElements
xsi:type="simplepdl:WorkDefinition"
linksToSuccessors="//@processElements.1"
name="A1"/>
<processElements
xsi:type="simplepdl:WorkSequence"
predecessor="//@processElements.0"
successor="//@processElements.3"/>
<processElements
xsi:type="simplepdl:WorkDefinition"
name="000"/>
<processElements
xsi:type="simplepdl:WorkDefinition"
linksToPredecessors="//@processElements.1 //@processElements.4"
linksToSuccessors="//@processElements.4"
name="A 2"/>
<processElements
xsi:type="simplepdl:WorkSequence"
predecessor="//@processElements.3"
successor="//@processElements.3"/>
<processElements
xsi:type="simplepdl:WorkDefinition"
name="A1"/>
</simplepdl:Process>

View file

@ -1 +0,0 @@
../eclipse-workspace/fr.n7.petrinet/net.xmi

24
livrables/net.xmi Normal file
View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<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"
xsi:schemaLocation="http://petrinet petriNet.ecore"
name="gentilNetwork">
<nodes xsi:type="petrinet:Place"
name="debut"
tokens="1"
arcs="//@nodes.2/@arcs.0"/>
<nodes xsi:type="petrinet:Place"
name="fin"
arcs="//@nodes.2/@arcs.1"/>
<nodes xsi:type="petrinet:Transition"
name="debut2fin">
<arcs weight="1"
place="//@nodes.0"/>
<arcs weight="1"
outgoing="true"
place="//@nodes.1"/>
</nodes>
</petrinet:Network>

View file

@ -1 +0,0 @@
../eclipse-workspace/fr.n7.petrinet.exemples/gen/Developpement.net

25
livrables/pdl-sujet.net Normal file
View file

@ -0,0 +1,25 @@
net Developpement
pl Conception_idle (1)
pl Conception_running (0)
pl Conception_started (0)
pl Conception_finished (0)
pl RedactionTest_idle (1)
pl RedactionTest_running (0)
pl RedactionTest_started (0)
pl RedactionTest_finished (0)
pl RedactionDoc_idle (1)
pl RedactionDoc_running (0)
pl RedactionDoc_started (0)
pl RedactionDoc_finished (0)
pl Programmation_idle (1)
pl Programmation_running (0)
pl Programmation_started (0)
pl Programmation_finished (0)
tr Conception_start Conception_idle*1 -> Conception_running*1 Conception_started*1
tr Conception_finish Conception_running*1 -> Conception_finished*1
tr RedactionTest_start RedactionTest_idle*1 Conception_started*1 -> RedactionTest_running*1 RedactionTest_started*1 Conception_started*1
tr RedactionTest_finish RedactionTest_running*1 Programmation_finished*1 -> RedactionTest_finished*1 Programmation_finished*1
tr RedactionDoc_start RedactionDoc_idle*1 Conception_started*1 -> RedactionDoc_running*1 RedactionDoc_started*1 Conception_started*1
tr RedactionDoc_finish RedactionDoc_running*1 Conception_finished*1 -> RedactionDoc_finished*1 Conception_finished*1
tr Programmation_start Programmation_idle*1 Conception_finished*1 -> Programmation_running*1 Programmation_started*1 Conception_finished*1
tr Programmation_finish Programmation_running*1 -> Programmation_finished*1

View file

@ -1 +0,0 @@
../eclipse-workspace/fr.n7.simplepdl/pdl-sujet.xmi

12
livrables/pdl-sujet.xmi Normal file
View file

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<simplepdl:Process xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:simplepdl="http://simplepdl" name="Developpement">
<processElements xsi:type="simplepdl:WorkDefinition" linksToSuccessors="//@processElements.4 //@processElements.6 //@processElements.7 //@processElements.8" name="Conception"/>
<processElements xsi:type="simplepdl:WorkDefinition" linksToPredecessors="//@processElements.4" linksToSuccessors="//@processElements.5" name="Programmation"/>
<processElements xsi:type="simplepdl:WorkDefinition" linksToPredecessors="//@processElements.5 //@processElements.6" name="RedactionTests"/>
<processElements xsi:type="simplepdl:WorkDefinition" linksToPredecessors="//@processElements.7 //@processElements.8" name="RedactionDocs"/>
<processElements xsi:type="simplepdl:WorkSequence" linkType="finishToStart" predecessor="//@processElements.0" successor="//@processElements.1"/>
<processElements xsi:type="simplepdl:WorkSequence" linkType="finishToFinish" predecessor="//@processElements.1" successor="//@processElements.2"/>
<processElements xsi:type="simplepdl:WorkSequence" predecessor="//@processElements.0" successor="//@processElements.2"/>
<processElements xsi:type="simplepdl:WorkSequence" predecessor="//@processElements.0" successor="//@processElements.3"/>
<processElements xsi:type="simplepdl:WorkSequence" linkType="finishToFinish" predecessor="//@processElements.0" successor="//@processElements.3"/>
</simplepdl:Process>

View file

@ -1 +0,0 @@
../eclipse-workspace/fr.n7.petrinet/petrinet.aird

367
livrables/petriNet.aird Normal file
View file

@ -0,0 +1,367 @@
<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:diagram="http://www.eclipse.org/sirius/diagram/1.1.0" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.3/notation" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" xmlns:viewpoint="http://www.eclipse.org/sirius/1.1.0" xsi:schemaLocation="http://www.eclipse.org/sirius/description/1.1.0 http://www.eclipse.org/sirius/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/style/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description/style">
<viewpoint:DAnalysis uid="_8tPnQCxCEeyIb_aAzHoOBA" selectedViews="_8vS1sCxCEeyIb_aAzHoOBA _8veb4CxCEeyIb_aAzHoOBA _8vfqACxCEeyIb_aAzHoOBA _8vitUCxCEeyIb_aAzHoOBA" version="14.3.1.202003261200">
<semanticResources>petriNet.ecore</semanticResources>
<semanticResources>petriNet.genmodel</semanticResources>
<ownedViews xmi:type="viewpoint:DView" uid="_8vS1sCxCEeyIb_aAzHoOBA">
<viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']"/>
<ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_9Y_6ASxCEeyIb_aAzHoOBA" name="petrinet class diagram" repPath="#_9Y5zYCxCEeyIb_aAzHoOBA" changeId="4f3bb097-e80a-4128-9372-c3fe2680afe4">
<description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
<target xmi:type="ecore:EPackage" href="petriNet.ecore#/"/>
</ownedRepresentationDescriptors>
</ownedViews>
<ownedViews xmi:type="viewpoint:DView" uid="_8veb4CxCEeyIb_aAzHoOBA">
<viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Review']"/>
</ownedViews>
<ownedViews xmi:type="viewpoint:DView" uid="_8vfqACxCEeyIb_aAzHoOBA">
<viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Archetype']"/>
</ownedViews>
<ownedViews xmi:type="viewpoint:DView" uid="_8vitUCxCEeyIb_aAzHoOBA">
<viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Generation']"/>
</ownedViews>
</viewpoint:DAnalysis>
<diagram:DSemanticDiagram uid="_9Y5zYCxCEeyIb_aAzHoOBA">
<ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_9ZEygCxCEeyIb_aAzHoOBA" source="GMF_DIAGRAMS">
<data xmi:type="notation:Diagram" xmi:id="_9ZEygSxCEeyIb_aAzHoOBA" type="Sirius" element="_9Y5zYCxCEeyIb_aAzHoOBA" measurementUnit="Pixel">
<children xmi:type="notation:Node" xmi:id="_9x0psCxCEeyIb_aAzHoOBA" type="2003" element="_9xmAMCxCEeyIb_aAzHoOBA">
<children xmi:type="notation:Node" xmi:id="_9x1QwCxCEeyIb_aAzHoOBA" type="5007"/>
<children xmi:type="notation:Node" xmi:id="_9x1QwSxCEeyIb_aAzHoOBA" type="7004">
<children xmi:type="notation:Node" xmi:id="_9x3F8CxCEeyIb_aAzHoOBA" type="3010" element="_9xtU8ixCEeyIb_aAzHoOBA">
<styles xmi:type="notation:FontStyle" xmi:id="_9x3F8SxCEeyIb_aAzHoOBA" fontName="Ubuntu" fontHeight="8" bold="true"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_9x3F8ixCEeyIb_aAzHoOBA"/>
</children>
<styles xmi:type="notation:SortingStyle" xmi:id="_9x1QwixCEeyIb_aAzHoOBA"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_9x1QwyxCEeyIb_aAzHoOBA"/>
</children>
<styles xmi:type="notation:ShapeStyle" xmi:id="_9x0psSxCEeyIb_aAzHoOBA" fontName="Ubuntu" fontHeight="8"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_9x0psixCEeyIb_aAzHoOBA" x="230" y="160"/>
</children>
<children xmi:type="notation:Node" xmi:id="_9x130CxCEeyIb_aAzHoOBA" type="2003" element="_9xn1YCxCEeyIb_aAzHoOBA">
<children xmi:type="notation:Node" xmi:id="_9x130yxCEeyIb_aAzHoOBA" type="5007"/>
<children xmi:type="notation:Node" xmi:id="_9x131CxCEeyIb_aAzHoOBA" type="7004">
<children xmi:type="notation:Node" xmi:id="_9x3F8yxCEeyIb_aAzHoOBA" type="3010" element="_9xt8ASxCEeyIb_aAzHoOBA">
<styles xmi:type="notation:FontStyle" xmi:id="_9x3F9CxCEeyIb_aAzHoOBA" fontName="Ubuntu" fontHeight="8" bold="true"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_9x3F9SxCEeyIb_aAzHoOBA"/>
</children>
<styles xmi:type="notation:SortingStyle" xmi:id="_9x131SxCEeyIb_aAzHoOBA"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_9x131ixCEeyIb_aAzHoOBA"/>
</children>
<styles xmi:type="notation:ShapeStyle" xmi:id="_9x130SxCEeyIb_aAzHoOBA" fontName="Ubuntu" fontHeight="8" italic="true"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_9x130ixCEeyIb_aAzHoOBA" x="495" y="160"/>
</children>
<children xmi:type="notation:Node" xmi:id="_9x131yxCEeyIb_aAzHoOBA" type="2003" element="_9xoccCxCEeyIb_aAzHoOBA">
<children xmi:type="notation:Node" xmi:id="_9x132ixCEeyIb_aAzHoOBA" type="5007"/>
<children xmi:type="notation:Node" xmi:id="_9x132yxCEeyIb_aAzHoOBA" type="7004">
<children xmi:type="notation:Node" xmi:id="_9x3tACxCEeyIb_aAzHoOBA" type="3010" element="_9xujESxCEeyIb_aAzHoOBA">
<styles xmi:type="notation:FontStyle" xmi:id="_9x3tASxCEeyIb_aAzHoOBA" fontName="Ubuntu" fontHeight="8" bold="true"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_9x3tAixCEeyIb_aAzHoOBA"/>
</children>
<styles xmi:type="notation:SortingStyle" xmi:id="_9x133CxCEeyIb_aAzHoOBA"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_9x133SxCEeyIb_aAzHoOBA"/>
</children>
<styles xmi:type="notation:ShapeStyle" xmi:id="_9x132CxCEeyIb_aAzHoOBA" fontName="Ubuntu" fontHeight="8"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_9x132SxCEeyIb_aAzHoOBA" x="770" y="340"/>
</children>
<children xmi:type="notation:Node" xmi:id="_9x2e4CxCEeyIb_aAzHoOBA" type="2003" element="_9xpDgSxCEeyIb_aAzHoOBA">
<children xmi:type="notation:Node" xmi:id="_9x2e4yxCEeyIb_aAzHoOBA" type="5007"/>
<children xmi:type="notation:Node" xmi:id="_9x2e5CxCEeyIb_aAzHoOBA" type="7004">
<children xmi:type="notation:Node" xmi:id="_9x3tAyxCEeyIb_aAzHoOBA" type="3010" element="_9xvKISxCEeyIb_aAzHoOBA">
<styles xmi:type="notation:FontStyle" xmi:id="_9x3tBCxCEeyIb_aAzHoOBA" fontName="Ubuntu" fontHeight="8" bold="true"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_9x3tBSxCEeyIb_aAzHoOBA"/>
</children>
<children xmi:type="notation:Node" xmi:id="_9x4UECxCEeyIb_aAzHoOBA" type="3010" element="_9xvxMSxCEeyIb_aAzHoOBA">
<styles xmi:type="notation:FontStyle" xmi:id="_9x4UESxCEeyIb_aAzHoOBA" fontName="Ubuntu" fontHeight="8" bold="true"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_9x4UEixCEeyIb_aAzHoOBA"/>
</children>
<styles xmi:type="notation:SortingStyle" xmi:id="_9x2e5SxCEeyIb_aAzHoOBA"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_9x2e5ixCEeyIb_aAzHoOBA"/>
</children>
<styles xmi:type="notation:ShapeStyle" xmi:id="_9x2e4SxCEeyIb_aAzHoOBA" fontName="Ubuntu" fontHeight="8"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_9x2e4ixCEeyIb_aAzHoOBA" x="472" y="340"/>
</children>
<children xmi:type="notation:Node" xmi:id="_9x2e5yxCEeyIb_aAzHoOBA" type="2003" element="_9xpqkSxCEeyIb_aAzHoOBA">
<children xmi:type="notation:Node" xmi:id="_9x2e6ixCEeyIb_aAzHoOBA" type="5007"/>
<children xmi:type="notation:Node" xmi:id="_9x2e6yxCEeyIb_aAzHoOBA" type="7004">
<styles xmi:type="notation:SortingStyle" xmi:id="_9x2e7CxCEeyIb_aAzHoOBA"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_9x2e7SxCEeyIb_aAzHoOBA"/>
</children>
<styles xmi:type="notation:ShapeStyle" xmi:id="_9x2e6CxCEeyIb_aAzHoOBA" fontName="Ubuntu" fontHeight="8"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_9x2e6SxCEeyIb_aAzHoOBA" x="230" y="340"/>
</children>
<styles xmi:type="notation:DiagramStyle" xmi:id="_9ZEygixCEeyIb_aAzHoOBA"/>
<edges xmi:type="notation:Edge" xmi:id="_9x4UEyxCEeyIb_aAzHoOBA" type="4001" element="_9xw_UCxCEeyIb_aAzHoOBA" source="_9x131yxCEeyIb_aAzHoOBA" target="_9x130CxCEeyIb_aAzHoOBA">
<children xmi:type="notation:Node" xmi:id="_9x4UFyxCEeyIb_aAzHoOBA" type="6001">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_9x4UGCxCEeyIb_aAzHoOBA" y="-10"/>
</children>
<children xmi:type="notation:Node" xmi:id="_9x4UGSxCEeyIb_aAzHoOBA" type="6002">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_9x4UGixCEeyIb_aAzHoOBA" y="10"/>
</children>
<children xmi:type="notation:Node" xmi:id="_9x4UGyxCEeyIb_aAzHoOBA" type="6003">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_9x4UHCxCEeyIb_aAzHoOBA" y="10"/>
</children>
<styles xmi:type="notation:ConnectorStyle" xmi:id="_9x4UFCxCEeyIb_aAzHoOBA" routing="Tree"/>
<styles xmi:type="notation:FontStyle" xmi:id="_9x4UFSxCEeyIb_aAzHoOBA" fontName="Ubuntu" fontHeight="8"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_9x4UFixCEeyIb_aAzHoOBA" points="[-1, 0, 96, 380]$[-2, -320, 95, 60]$[-98, -380, -1, 0]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9x47ICxCEeyIb_aAzHoOBA" id="(0.5084745762711864,0.0)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9x47ISxCEeyIb_aAzHoOBA" id="(0.5084745762711864,1.0)"/>
</edges>
<edges xmi:type="notation:Edge" xmi:id="_9x47IixCEeyIb_aAzHoOBA" type="4001" element="_9xxmYyxCEeyIb_aAzHoOBA" source="_9x2e5yxCEeyIb_aAzHoOBA" target="_9x130CxCEeyIb_aAzHoOBA">
<children xmi:type="notation:Node" xmi:id="_9x47JixCEeyIb_aAzHoOBA" type="6001">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_9x47JyxCEeyIb_aAzHoOBA" x="-29" y="-10"/>
</children>
<children xmi:type="notation:Node" xmi:id="_9x47KCxCEeyIb_aAzHoOBA" type="6002">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_9x47KSxCEeyIb_aAzHoOBA" x="-7" y="-4"/>
</children>
<children xmi:type="notation:Node" xmi:id="_9x47KixCEeyIb_aAzHoOBA" type="6003">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_9x47KyxCEeyIb_aAzHoOBA" x="-29" y="10"/>
</children>
<styles xmi:type="notation:ConnectorStyle" xmi:id="_9x47IyxCEeyIb_aAzHoOBA" routing="Tree"/>
<styles xmi:type="notation:FontStyle" xmi:id="_9x47JCxCEeyIb_aAzHoOBA" fontName="Ubuntu" fontHeight="8"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_9x47JSxCEeyIb_aAzHoOBA" points="[0, 0, -265, 82]$[0, -35, -265, 47]$[265, -35, 0, 47]$[265, -82, 0, 0]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9x47LCxCEeyIb_aAzHoOBA" id="(0.5084745762711864,0.0)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9x5iMCxCEeyIb_aAzHoOBA" id="(0.5084745762711864,1.0)"/>
</edges>
<edges xmi:type="notation:Edge" xmi:id="_9x5iMSxCEeyIb_aAzHoOBA" type="4001" element="_9xyNcCxCEeyIb_aAzHoOBA" source="_9x0psCxCEeyIb_aAzHoOBA" target="_9x130CxCEeyIb_aAzHoOBA">
<children xmi:type="notation:Node" xmi:id="_9x5iNSxCEeyIb_aAzHoOBA" type="6001">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_9x5iNixCEeyIb_aAzHoOBA" y="-10"/>
</children>
<children xmi:type="notation:Node" xmi:id="_9x5iNyxCEeyIb_aAzHoOBA" type="6002">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_9x5iOCxCEeyIb_aAzHoOBA" x="19" y="8"/>
</children>
<children xmi:type="notation:Node" xmi:id="_9x5iOSxCEeyIb_aAzHoOBA" type="6003">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_9x5iOixCEeyIb_aAzHoOBA" x="-9" y="-7"/>
</children>
<styles xmi:type="notation:ConnectorStyle" xmi:id="_9x5iMixCEeyIb_aAzHoOBA" routing="Rectilinear"/>
<styles xmi:type="notation:FontStyle" xmi:id="_9x5iMyxCEeyIb_aAzHoOBA" fontName="Ubuntu" fontHeight="8"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_9x5iNCxCEeyIb_aAzHoOBA" points="[58, 48, -207, -50]$[205, 48, -60, -50]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9x5iOyxCEeyIb_aAzHoOBA" id="(0.5084745762711864,0.0)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9x5iPCxCEeyIb_aAzHoOBA" id="(0.5084745762711864,1.0)"/>
</edges>
<edges xmi:type="notation:Edge" xmi:id="_9x5iPSxCEeyIb_aAzHoOBA" type="4001" element="_9xy0iSxCEeyIb_aAzHoOBA" source="_9x2e4CxCEeyIb_aAzHoOBA" target="_9x2e5yxCEeyIb_aAzHoOBA">
<children xmi:type="notation:Node" xmi:id="_9x5iQSxCEeyIb_aAzHoOBA" type="6001">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_9x5iQixCEeyIb_aAzHoOBA" y="10"/>
</children>
<children xmi:type="notation:Node" xmi:id="_9x5iQyxCEeyIb_aAzHoOBA" type="6002">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_9x5iRCxCEeyIb_aAzHoOBA" x="10" y="7"/>
</children>
<children xmi:type="notation:Node" xmi:id="_9x5iRSxCEeyIb_aAzHoOBA" type="6003">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_9x5iRixCEeyIb_aAzHoOBA" x="-22" y="-8"/>
</children>
<styles xmi:type="notation:ConnectorStyle" xmi:id="_9x5iPixCEeyIb_aAzHoOBA" routing="Rectilinear"/>
<styles xmi:type="notation:FontStyle" xmi:id="_9x5iPyxCEeyIb_aAzHoOBA" fontName="Ubuntu" fontHeight="8" bold="true"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_9x5iQCxCEeyIb_aAzHoOBA" points="[-82, -1, 183, -1]$[-206, -1, 59, -1]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9x5iRyxCEeyIb_aAzHoOBA" id="(0.5,0.5)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9x5iSCxCEeyIb_aAzHoOBA" id="(0.5,0.5)"/>
</edges>
<edges xmi:type="notation:Edge" xmi:id="_9x6JQCxCEeyIb_aAzHoOBA" type="4001" element="_9xzblixCEeyIb_aAzHoOBA" source="_9x131yxCEeyIb_aAzHoOBA" target="_9x2e4CxCEeyIb_aAzHoOBA">
<children xmi:type="notation:Node" xmi:id="_9x6JRCxCEeyIb_aAzHoOBA" type="6001">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_9x6JRSxCEeyIb_aAzHoOBA" x="9" y="-10"/>
</children>
<children xmi:type="notation:Node" xmi:id="_9x6JRixCEeyIb_aAzHoOBA" type="6002">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_9x6JRyxCEeyIb_aAzHoOBA" x="13" y="7"/>
</children>
<children xmi:type="notation:Node" xmi:id="_9x6JSCxCEeyIb_aAzHoOBA" type="6003">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_9x6JSSxCEeyIb_aAzHoOBA" x="-11" y="-8"/>
</children>
<styles xmi:type="notation:ConnectorStyle" xmi:id="_9x6JQSxCEeyIb_aAzHoOBA" routing="Rectilinear"/>
<styles xmi:type="notation:FontStyle" xmi:id="_9x6JQixCEeyIb_aAzHoOBA" fontName="Ubuntu" fontHeight="8"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_9x6JQyxCEeyIb_aAzHoOBA" points="[-59, -1, 216, -1]$[-193, -1, 82, -1]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9x6JSixCEeyIb_aAzHoOBA" id="(0.5,0.5)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9x6JSyxCEeyIb_aAzHoOBA" id="(0.5,0.5)"/>
</edges>
</data>
</ownedAnnotationEntries>
<ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_9ZMHQCxCEeyIb_aAzHoOBA" source="DANNOTATION_CUSTOMIZATION_KEY">
<data xmi:type="diagram:ComputedStyleDescriptionRegistry" uid="_9ZMHQSxCEeyIb_aAzHoOBA">
<computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_9xtU8yxCEeyIb_aAzHoOBA" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1">
<borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
<labelFormat>bold</labelFormat>
<labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
<color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
</computedStyleDescriptions>
<computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_9xy0gCxCEeyIb_aAzHoOBA" sourceArrow="FillDiamond" routingStyle="manhattan">
<strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
<beginLabelStyleDescription xmi:type="style:BeginLabelStyleDescription" xmi:id="_9xy0gSxCEeyIb_aAzHoOBA" showIcon="false" labelExpression="service:renderEOpposite">
<labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
</beginLabelStyleDescription>
<endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_9xy0gixCEeyIb_aAzHoOBA" showIcon="false" labelExpression="service:render">
<labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
</endLabelStyleDescription>
</computedStyleDescriptions>
<computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_9xy0iixCEeyIb_aAzHoOBA" sourceArrow="InputArrow" targetArrow="FillDiamond" routingStyle="manhattan">
<strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
<beginLabelStyleDescription xmi:type="style:BeginLabelStyleDescription" xmi:id="_9xy0iyxCEeyIb_aAzHoOBA" showIcon="false" labelExpression="service:renderEOpposite">
<labelFormat>bold</labelFormat>
<labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
</beginLabelStyleDescription>
<endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_9xy0jCxCEeyIb_aAzHoOBA" showIcon="false" labelExpression="service:render">
<labelFormat>bold</labelFormat>
<labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
</endLabelStyleDescription>
</computedStyleDescriptions>
</data>
</ownedAnnotationEntries>
<ownedDiagramElements xmi:type="diagram:DNodeList" uid="_9xmAMCxCEeyIb_aAzHoOBA" name="Network" tooltipText="" outgoingEdges="_9xyNcCxCEeyIb_aAzHoOBA" width="12" height="10">
<target xmi:type="ecore:EClass" href="petriNet.ecore#//Network"/>
<semanticElements xmi:type="ecore:EClass" href="petriNet.ecore#//Network"/>
<arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
<arrangeConstraints>KEEP_SIZE</arrangeConstraints>
<arrangeConstraints>KEEP_RATIO</arrangeConstraints>
<ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_9xmnQCxCEeyIb_aAzHoOBA" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
<description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
</ownedStyle>
<actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
<ownedElements xmi:type="diagram:DNodeListElement" uid="_9xtU8ixCEeyIb_aAzHoOBA" name="name : EString" tooltipText="">
<target xmi:type="ecore:EAttribute" href="petriNet.ecore#//Network/name"/>
<semanticElements xmi:type="ecore:EAttribute" href="petriNet.ecore#//Network/name"/>
<ownedStyle xmi:type="diagram:BundledImage" uid="_9xt8ACxCEeyIb_aAzHoOBA" labelAlignment="LEFT" description="_9xtU8yxCEeyIb_aAzHoOBA">
<labelFormat>bold</labelFormat>
</ownedStyle>
<actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
</ownedElements>
</ownedDiagramElements>
<ownedDiagramElements xmi:type="diagram:DNodeList" uid="_9xn1YCxCEeyIb_aAzHoOBA" name="Node" tooltipText="" incomingEdges="_9xw_UCxCEeyIb_aAzHoOBA _9xxmYyxCEeyIb_aAzHoOBA _9xyNcCxCEeyIb_aAzHoOBA" width="12" height="10">
<target xmi:type="ecore:EClass" href="petriNet.ecore#//Node"/>
<semanticElements xmi:type="ecore:EClass" href="petriNet.ecore#//Node"/>
<arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
<arrangeConstraints>KEEP_SIZE</arrangeConstraints>
<arrangeConstraints>KEEP_RATIO</arrangeConstraints>
<ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_9xn1YSxCEeyIb_aAzHoOBA" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="228,228,228">
<labelFormat>italic</labelFormat>
<description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@conditionnalStyles.1/@style"/>
</ownedStyle>
<actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
<ownedElements xmi:type="diagram:DNodeListElement" uid="_9xt8ASxCEeyIb_aAzHoOBA" name="name : EString" tooltipText="">
<target xmi:type="ecore:EAttribute" href="petriNet.ecore#//Node/name"/>
<semanticElements xmi:type="ecore:EAttribute" href="petriNet.ecore#//Node/name"/>
<ownedStyle xmi:type="diagram:BundledImage" uid="_9xujECxCEeyIb_aAzHoOBA" labelAlignment="LEFT" description="_9xtU8yxCEeyIb_aAzHoOBA">
<labelFormat>bold</labelFormat>
</ownedStyle>
<actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
</ownedElements>
</ownedDiagramElements>
<ownedDiagramElements xmi:type="diagram:DNodeList" uid="_9xoccCxCEeyIb_aAzHoOBA" name="Place" tooltipText="" outgoingEdges="_9xw_UCxCEeyIb_aAzHoOBA _9xzblixCEeyIb_aAzHoOBA" width="12" height="10">
<target xmi:type="ecore:EClass" href="petriNet.ecore#//Place"/>
<semanticElements xmi:type="ecore:EClass" href="petriNet.ecore#//Place"/>
<arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
<arrangeConstraints>KEEP_SIZE</arrangeConstraints>
<arrangeConstraints>KEEP_RATIO</arrangeConstraints>
<ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_9xoccSxCEeyIb_aAzHoOBA" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
<description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
</ownedStyle>
<actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
<ownedElements xmi:type="diagram:DNodeListElement" uid="_9xujESxCEeyIb_aAzHoOBA" name="tokens : EInt" tooltipText="">
<target xmi:type="ecore:EAttribute" href="petriNet.ecore#//Place/tokens"/>
<semanticElements xmi:type="ecore:EAttribute" href="petriNet.ecore#//Place/tokens"/>
<ownedStyle xmi:type="diagram:BundledImage" uid="_9xvKICxCEeyIb_aAzHoOBA" labelAlignment="LEFT" description="_9xtU8yxCEeyIb_aAzHoOBA">
<labelFormat>bold</labelFormat>
</ownedStyle>
<actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
</ownedElements>
</ownedDiagramElements>
<ownedDiagramElements xmi:type="diagram:DNodeList" uid="_9xpDgSxCEeyIb_aAzHoOBA" name="Arc" tooltipText="" outgoingEdges="_9xy0iSxCEeyIb_aAzHoOBA" incomingEdges="_9xzblixCEeyIb_aAzHoOBA" width="12" height="10">
<target xmi:type="ecore:EClass" href="petriNet.ecore#//Arc"/>
<semanticElements xmi:type="ecore:EClass" href="petriNet.ecore#//Arc"/>
<arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
<arrangeConstraints>KEEP_SIZE</arrangeConstraints>
<arrangeConstraints>KEEP_RATIO</arrangeConstraints>
<ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_9xpDgixCEeyIb_aAzHoOBA" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
<description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
</ownedStyle>
<actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
<ownedElements xmi:type="diagram:DNodeListElement" uid="_9xvKISxCEeyIb_aAzHoOBA" name="weight : EInt" tooltipText="">
<target xmi:type="ecore:EAttribute" href="petriNet.ecore#//Arc/weight"/>
<semanticElements xmi:type="ecore:EAttribute" href="petriNet.ecore#//Arc/weight"/>
<ownedStyle xmi:type="diagram:BundledImage" uid="_9xvxMCxCEeyIb_aAzHoOBA" labelAlignment="LEFT" description="_9xtU8yxCEeyIb_aAzHoOBA">
<labelFormat>bold</labelFormat>
</ownedStyle>
<actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
</ownedElements>
<ownedElements xmi:type="diagram:DNodeListElement" uid="_9xvxMSxCEeyIb_aAzHoOBA" name="outgoing : EBoolean = false" tooltipText="">
<target xmi:type="ecore:EAttribute" href="petriNet.ecore#//Arc/outgoing"/>
<semanticElements xmi:type="ecore:EAttribute" href="petriNet.ecore#//Arc/outgoing"/>
<ownedStyle xmi:type="diagram:BundledImage" uid="_9xvxMixCEeyIb_aAzHoOBA" labelAlignment="LEFT" description="_9xtU8yxCEeyIb_aAzHoOBA">
<labelFormat>bold</labelFormat>
</ownedStyle>
<actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
</ownedElements>
</ownedDiagramElements>
<ownedDiagramElements xmi:type="diagram:DNodeList" uid="_9xpqkSxCEeyIb_aAzHoOBA" name="Transition" tooltipText="" outgoingEdges="_9xxmYyxCEeyIb_aAzHoOBA" incomingEdges="_9xy0iSxCEeyIb_aAzHoOBA" width="12" height="10">
<target xmi:type="ecore:EClass" href="petriNet.ecore#//Transition"/>
<semanticElements xmi:type="ecore:EClass" href="petriNet.ecore#//Transition"/>
<arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
<arrangeConstraints>KEEP_SIZE</arrangeConstraints>
<arrangeConstraints>KEEP_RATIO</arrangeConstraints>
<ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_9xpqkixCEeyIb_aAzHoOBA" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
<description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
</ownedStyle>
<actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
</ownedDiagramElements>
<ownedDiagramElements xmi:type="diagram:DEdge" uid="_9xw_UCxCEeyIb_aAzHoOBA" sourceNode="_9xoccCxCEeyIb_aAzHoOBA" targetNode="_9xn1YCxCEeyIb_aAzHoOBA">
<target xmi:type="ecore:EClass" href="petriNet.ecore#//Place"/>
<semanticElements xmi:type="ecore:EClass" href="petriNet.ecore#//Place"/>
<ownedStyle xmi:type="diagram:EdgeStyle" uid="_9xw_USxCEeyIb_aAzHoOBA" targetArrow="InputClosedArrow" routingStyle="tree">
<description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
<beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_9xw_UixCEeyIb_aAzHoOBA" showIcon="false">
<labelFormat>italic</labelFormat>
</beginLabelStyle>
<centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_9xw_UyxCEeyIb_aAzHoOBA" showIcon="false"/>
</ownedStyle>
<actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
</ownedDiagramElements>
<ownedDiagramElements xmi:type="diagram:DEdge" uid="_9xxmYyxCEeyIb_aAzHoOBA" sourceNode="_9xpqkSxCEeyIb_aAzHoOBA" targetNode="_9xn1YCxCEeyIb_aAzHoOBA">
<target xmi:type="ecore:EClass" href="petriNet.ecore#//Transition"/>
<semanticElements xmi:type="ecore:EClass" href="petriNet.ecore#//Transition"/>
<ownedStyle xmi:type="diagram:EdgeStyle" uid="_9xxmZCxCEeyIb_aAzHoOBA" targetArrow="InputClosedArrow" routingStyle="tree">
<description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
<beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_9xxmZSxCEeyIb_aAzHoOBA" showIcon="false">
<labelFormat>italic</labelFormat>
</beginLabelStyle>
<centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_9xxmZixCEeyIb_aAzHoOBA" showIcon="false"/>
</ownedStyle>
<actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
</ownedDiagramElements>
<ownedDiagramElements xmi:type="diagram:DEdge" uid="_9xyNcCxCEeyIb_aAzHoOBA" sourceNode="_9xmAMCxCEeyIb_aAzHoOBA" targetNode="_9xn1YCxCEeyIb_aAzHoOBA" beginLabel="[1..1] network" endLabel="[0..*] nodes">
<target xmi:type="ecore:EReference" href="petriNet.ecore#//Network/nodes"/>
<semanticElements xmi:type="ecore:EReference" href="petriNet.ecore#//Node/network"/>
<semanticElements xmi:type="ecore:EReference" href="petriNet.ecore#//Network/nodes"/>
<ownedStyle xmi:type="diagram:EdgeStyle" uid="_9xy0gyxCEeyIb_aAzHoOBA" description="_9xy0gCxCEeyIb_aAzHoOBA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
<beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_9xy0hCxCEeyIb_aAzHoOBA" showIcon="false"/>
<endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_9xy0hSxCEeyIb_aAzHoOBA" showIcon="false"/>
</ownedStyle>
<actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
</ownedDiagramElements>
<ownedDiagramElements xmi:type="diagram:DEdge" uid="_9xy0iSxCEeyIb_aAzHoOBA" sourceNode="_9xpDgSxCEeyIb_aAzHoOBA" targetNode="_9xpqkSxCEeyIb_aAzHoOBA" beginLabel="[0..*] arcs" endLabel="[1..1] transition">
<target xmi:type="ecore:EReference" href="petriNet.ecore#//Arc/transition"/>
<semanticElements xmi:type="ecore:EReference" href="petriNet.ecore#//Transition/arcs"/>
<semanticElements xmi:type="ecore:EReference" href="petriNet.ecore#//Arc/transition"/>
<ownedStyle xmi:type="diagram:EdgeStyle" uid="_9xzbkCxCEeyIb_aAzHoOBA" description="_9xy0iixCEeyIb_aAzHoOBA" sourceArrow="InputArrow" targetArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
<beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_9xzbkSxCEeyIb_aAzHoOBA" showIcon="false">
<labelFormat>bold</labelFormat>
</beginLabelStyle>
<endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_9xzbkixCEeyIb_aAzHoOBA" showIcon="false">
<labelFormat>bold</labelFormat>
</endLabelStyle>
</ownedStyle>
<actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
</ownedDiagramElements>
<ownedDiagramElements xmi:type="diagram:DEdge" uid="_9xzblixCEeyIb_aAzHoOBA" sourceNode="_9xoccCxCEeyIb_aAzHoOBA" targetNode="_9xpDgSxCEeyIb_aAzHoOBA" beginLabel="[1..1] place" endLabel="[0..*] arcs">
<target xmi:type="ecore:EReference" href="petriNet.ecore#//Place/arcs"/>
<semanticElements xmi:type="ecore:EReference" href="petriNet.ecore#//Place/arcs"/>
<semanticElements xmi:type="ecore:EReference" href="petriNet.ecore#//Arc/place"/>
<ownedStyle xmi:type="diagram:EdgeStyle" uid="_9xzblyxCEeyIb_aAzHoOBA" sourceArrow="InputArrow" routingStyle="manhattan" strokeColor="0,0,0">
<description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']/@style"/>
<beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_9xzbmCxCEeyIb_aAzHoOBA" showIcon="false"/>
<endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_9xzbmSxCEeyIb_aAzHoOBA" showIcon="false"/>
</ownedStyle>
<actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
</ownedDiagramElements>
<description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
<filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_9Y8PoCxCEeyIb_aAzHoOBA"/>
<activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
<activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']"/>
<activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Validation']"/>
<activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Archetype']/@ownedRepresentationExtensions[name='Entities%20With%20Archetypes']/@layers[name='Archetypes']"/>
<target xmi:type="ecore:EPackage" href="petriNet.ecore#/"/>
</diagram:DSemanticDiagram>
</xmi:XMI>

View file

@ -1 +0,0 @@
../eclipse-workspace/fr.n7.petrinet/petrinet.ecore

34
livrables/petriNet.ecore Normal file
View file

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="petrinet" nsURI="http://petrinet" nsPrefix="petrinet">
<eClassifiers xsi:type="ecore:EClass" name="Network">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="nodes" upperBound="-1"
eType="#//Node" containment="true" eOpposite="#//Node/network"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Node" abstract="true">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="network" lowerBound="1"
eType="#//Network" eOpposite="#//Network/nodes"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Place" eSuperTypes="#//Node">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="tokens" lowerBound="1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="arcs" upperBound="-1" eType="#//Arc"
eOpposite="#//Arc/place"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Arc">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="weight" lowerBound="1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="outgoing" lowerBound="1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="place" lowerBound="1" eType="#//Place"
eOpposite="#//Place/arcs"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="transition" lowerBound="1"
eType="#//Transition" eOpposite="#//Transition/arcs"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Transition" eSuperTypes="#//Node">
<eStructuralFeatures xsi:type="ecore:EReference" name="arcs" upperBound="-1" eType="#//Arc"
containment="true" eOpposite="#//Arc/transition"/>
</eClassifiers>
</ecore:EPackage>

View file

@ -1 +0,0 @@
../eclipse-workspace/fr.n7.petrinet/petrinet.ocl

21
livrables/petriNet.ocl Normal file
View file

@ -0,0 +1,21 @@
import 'petriNet.ecore'
package petrinet
context Network
inv validName('Invalid name: ' + self.name):
self.name.matches('[A-Za-z_][A-Za-z0-9_]*')
inv uniqNamesNode: self.nodes
->forAll(n1, n2 | n1 = n2 or n1.name <> n2.name)
context Node
inv nameMin2Char: self.name.matches('..+')
inv weirdName: not self.name.matches('([0-9]*|_*)')
context Place
inv negativeQuantity: self.tokens >= 0
context Arc
inv negativeQuantity: self.weight >= 0
endpackage

View file

@ -1 +0,0 @@
../eclipse-workspace/fr.n7.petrinet/petrinet.png

Before

Width:  |  Height:  |  Size: 48 B

After

Width:  |  Height:  |  Size: 257 KiB

BIN
livrables/petriNet.png Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 B

After

Width:  |  Height:  |  Size: 257 KiB

View file

@ -1 +0,0 @@
../eclipse-workspace/fr.n7.simplepdl/simplepdl.aird

635
livrables/simplePDL.aird Normal file
View file

@ -0,0 +1,635 @@
<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:diagram="http://www.eclipse.org/sirius/diagram/1.1.0" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.3/notation" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" xmlns:viewpoint="http://www.eclipse.org/sirius/1.1.0" xsi:schemaLocation="http://www.eclipse.org/sirius/description/1.1.0 http://www.eclipse.org/sirius/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/style/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description/style">
<viewpoint:DAnalysis uid="_BpTvICkCEeymi53fmcz7Wg" selectedViews="_Bp_EkCkCEeymi53fmcz7Wg _BqFLMCkCEeymi53fmcz7Wg _BqFyQCkCEeymi53fmcz7Wg _BqI1kCkCEeymi53fmcz7Wg" version="14.3.1.202003261200">
<semanticResources>simplePDL.ecore</semanticResources>
<ownedViews xmi:type="viewpoint:DView" uid="_Bp_EkCkCEeymi53fmcz7Wg">
<viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']"/>
<ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_Cl7IYSkCEeymi53fmcz7Wg" name="simplepdl class diagram" repPath="#_Cl4sICkCEeymi53fmcz7Wg" changeId="2914be5a-6605-4b7c-99a1-9444936a3e37">
<description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
<target xmi:type="ecore:EPackage" href="simplePDL.ecore#/"/>
</ownedRepresentationDescriptors>
</ownedViews>
<ownedViews xmi:type="viewpoint:DView" uid="_BqFLMCkCEeymi53fmcz7Wg">
<viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Review']"/>
</ownedViews>
<ownedViews xmi:type="viewpoint:DView" uid="_BqFyQCkCEeymi53fmcz7Wg">
<viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Archetype']"/>
</ownedViews>
<ownedViews xmi:type="viewpoint:DView" uid="_BqI1kCkCEeymi53fmcz7Wg">
<viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Generation']"/>
</ownedViews>
</viewpoint:DAnalysis>
<diagram:DSemanticDiagram uid="_Cl4sICkCEeymi53fmcz7Wg">
<ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_Cl7vcCkCEeymi53fmcz7Wg" source="GMF_DIAGRAMS">
<data xmi:type="notation:Diagram" xmi:id="_Cl7vcSkCEeymi53fmcz7Wg" type="Sirius" element="_Cl4sICkCEeymi53fmcz7Wg" measurementUnit="Pixel">
<children xmi:type="notation:Node" xmi:id="_C6o0ICkCEeymi53fmcz7Wg" type="2003" element="_C6XuYCkCEeymi53fmcz7Wg">
<children xmi:type="notation:Node" xmi:id="_C6o0IykCEeymi53fmcz7Wg" type="5007"/>
<children xmi:type="notation:Node" xmi:id="_C6pbMCkCEeymi53fmcz7Wg" type="7004">
<children xmi:type="notation:Node" xmi:id="_C6qpWykCEeymi53fmcz7Wg" type="3010" element="_C6iGcykCEeymi53fmcz7Wg">
<styles xmi:type="notation:FontStyle" xmi:id="_C6qpXCkCEeymi53fmcz7Wg" fontName="Ubuntu" fontHeight="8"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_C6qpXSkCEeymi53fmcz7Wg"/>
</children>
<children xmi:type="notation:Node" xmi:id="_C6qpXikCEeymi53fmcz7Wg" type="3010" element="_C6itgSkCEeymi53fmcz7Wg">
<styles xmi:type="notation:FontStyle" xmi:id="_C6qpXykCEeymi53fmcz7Wg" fontName="Ubuntu" fontHeight="8"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_C6qpYCkCEeymi53fmcz7Wg"/>
</children>
<children xmi:type="notation:Node" xmi:id="_C6rQYCkCEeymi53fmcz7Wg" type="3010" element="_C6itgykCEeymi53fmcz7Wg">
<styles xmi:type="notation:FontStyle" xmi:id="_C6rQYSkCEeymi53fmcz7Wg" fontName="Ubuntu" fontHeight="8"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_C6rQYikCEeymi53fmcz7Wg"/>
</children>
<children xmi:type="notation:Node" xmi:id="_C6rQYykCEeymi53fmcz7Wg" type="3010" element="_C6ithSkCEeymi53fmcz7Wg">
<styles xmi:type="notation:FontStyle" xmi:id="_C6rQZCkCEeymi53fmcz7Wg" fontName="Ubuntu" fontHeight="8"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_C6rQZSkCEeymi53fmcz7Wg"/>
</children>
<styles xmi:type="notation:SortingStyle" xmi:id="_C6pbMSkCEeymi53fmcz7Wg"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_C6pbMikCEeymi53fmcz7Wg"/>
</children>
<styles xmi:type="notation:ShapeStyle" xmi:id="_C6o0ISkCEeymi53fmcz7Wg" fontName="Ubuntu" fontHeight="8"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_C6o0IikCEeymi53fmcz7Wg" x="525" y="525"/>
</children>
<children xmi:type="notation:Node" xmi:id="_C6pbMykCEeymi53fmcz7Wg" type="2003" element="_C6YVcCkCEeymi53fmcz7Wg">
<children xmi:type="notation:Node" xmi:id="_C6pbNikCEeymi53fmcz7Wg" type="5007"/>
<children xmi:type="notation:Node" xmi:id="_C6pbNykCEeymi53fmcz7Wg" type="7004">
<styles xmi:type="notation:SortingStyle" xmi:id="_C6pbOCkCEeymi53fmcz7Wg"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_C6pbOSkCEeymi53fmcz7Wg"/>
</children>
<styles xmi:type="notation:ShapeStyle" xmi:id="_C6pbNCkCEeymi53fmcz7Wg" fontName="Ubuntu" fontHeight="8" italic="true"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_C6pbNSkCEeymi53fmcz7Wg" x="525" y="215"/>
</children>
<children xmi:type="notation:Node" xmi:id="_C6pbOikCEeymi53fmcz7Wg" type="2003" element="_C6Y8gCkCEeymi53fmcz7Wg">
<children xmi:type="notation:Node" xmi:id="_C6pbPSkCEeymi53fmcz7Wg" type="5007"/>
<children xmi:type="notation:Node" xmi:id="_C6pbPikCEeymi53fmcz7Wg" type="7004">
<children xmi:type="notation:Node" xmi:id="_C6rQZikCEeymi53fmcz7Wg" type="3010" element="_C6fDIykCEeymi53fmcz7Wg">
<styles xmi:type="notation:FontStyle" xmi:id="_C6rQZykCEeymi53fmcz7Wg" fontName="Ubuntu" fontHeight="8" bold="true"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_C6rQaCkCEeymi53fmcz7Wg"/>
</children>
<styles xmi:type="notation:SortingStyle" xmi:id="_C6pbPykCEeymi53fmcz7Wg"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_C6pbQCkCEeymi53fmcz7Wg"/>
</children>
<styles xmi:type="notation:ShapeStyle" xmi:id="_C6pbOykCEeymi53fmcz7Wg" fontName="Ubuntu" fontHeight="8"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_C6pbPCkCEeymi53fmcz7Wg" x="295" y="390"/>
</children>
<children xmi:type="notation:Node" xmi:id="_C6pbQSkCEeymi53fmcz7Wg" type="2003" element="_C6ZjkCkCEeymi53fmcz7Wg">
<children xmi:type="notation:Node" xmi:id="_C6qCQCkCEeymi53fmcz7Wg" type="5007"/>
<children xmi:type="notation:Node" xmi:id="_C6qCQSkCEeymi53fmcz7Wg" type="7004">
<children xmi:type="notation:Node" xmi:id="_C6rQaSkCEeymi53fmcz7Wg" type="3010" element="_C6fqMSkCEeymi53fmcz7Wg">
<styles xmi:type="notation:FontStyle" xmi:id="_C6rQaikCEeymi53fmcz7Wg" fontName="Ubuntu" fontHeight="8" bold="true"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_C6rQaykCEeymi53fmcz7Wg"/>
</children>
<styles xmi:type="notation:SortingStyle" xmi:id="_C6qCQikCEeymi53fmcz7Wg"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_C6qCQykCEeymi53fmcz7Wg"/>
</children>
<styles xmi:type="notation:ShapeStyle" xmi:id="_C6pbQikCEeymi53fmcz7Wg" fontName="Ubuntu" fontHeight="8"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_C6pbQykCEeymi53fmcz7Wg" x="735" y="390"/>
</children>
<children xmi:type="notation:Node" xmi:id="_C6qCRCkCEeymi53fmcz7Wg" type="2003" element="_C6aKoCkCEeymi53fmcz7Wg">
<children xmi:type="notation:Node" xmi:id="_C6qCRykCEeymi53fmcz7Wg" type="5007"/>
<children xmi:type="notation:Node" xmi:id="_C6qCSCkCEeymi53fmcz7Wg" type="7004">
<children xmi:type="notation:Node" xmi:id="_C6r3cCkCEeymi53fmcz7Wg" type="3010" element="_C6gRQCkCEeymi53fmcz7Wg">
<styles xmi:type="notation:FontStyle" xmi:id="_C6r3cSkCEeymi53fmcz7Wg" fontName="Ubuntu" fontHeight="8" bold="true"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_C6r3cikCEeymi53fmcz7Wg"/>
</children>
<styles xmi:type="notation:SortingStyle" xmi:id="_C6qCSSkCEeymi53fmcz7Wg"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_C6qCSikCEeymi53fmcz7Wg"/>
</children>
<styles xmi:type="notation:ShapeStyle" xmi:id="_C6qCRSkCEeymi53fmcz7Wg" fontName="Ubuntu" fontHeight="8"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_C6qCRikCEeymi53fmcz7Wg" x="205" y="215"/>
</children>
<children xmi:type="notation:Node" xmi:id="_C6qCSykCEeymi53fmcz7Wg" type="2003" element="_C6aKoykCEeymi53fmcz7Wg">
<children xmi:type="notation:Node" xmi:id="_C6qCTikCEeymi53fmcz7Wg" type="5007"/>
<children xmi:type="notation:Node" xmi:id="_C6qCTykCEeymi53fmcz7Wg" type="7004">
<children xmi:type="notation:Node" xmi:id="_C6r3cykCEeymi53fmcz7Wg" type="3010" element="_C6gRQikCEeymi53fmcz7Wg">
<styles xmi:type="notation:FontStyle" xmi:id="_C6r3dCkCEeymi53fmcz7Wg" fontName="Ubuntu" fontHeight="8" bold="true"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_C6r3dSkCEeymi53fmcz7Wg"/>
</children>
<styles xmi:type="notation:SortingStyle" xmi:id="_C6qCUCkCEeymi53fmcz7Wg"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_C6qCUSkCEeymi53fmcz7Wg"/>
</children>
<styles xmi:type="notation:ShapeStyle" xmi:id="_C6qCTCkCEeymi53fmcz7Wg" fontName="Ubuntu" fontHeight="8"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_C6qCTSkCEeymi53fmcz7Wg" x="802" y="215"/>
</children>
<children xmi:type="notation:Node" xmi:id="_C6qCUikCEeymi53fmcz7Wg" type="2003" element="_C6axsikCEeymi53fmcz7Wg">
<children xmi:type="notation:Node" xmi:id="_C6qpUCkCEeymi53fmcz7Wg" type="5007"/>
<children xmi:type="notation:Node" xmi:id="_C6qpUSkCEeymi53fmcz7Wg" type="7004">
<children xmi:type="notation:Node" xmi:id="_C6r3dikCEeymi53fmcz7Wg" type="3010" element="_C6g4USkCEeymi53fmcz7Wg">
<styles xmi:type="notation:FontStyle" xmi:id="_C6r3dykCEeymi53fmcz7Wg" fontName="Ubuntu" fontHeight="8" bold="true"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_C6r3eCkCEeymi53fmcz7Wg"/>
</children>
<children xmi:type="notation:Node" xmi:id="_C6r3eSkCEeymi53fmcz7Wg" type="3010" element="_C6hfYCkCEeymi53fmcz7Wg">
<styles xmi:type="notation:FontStyle" xmi:id="_C6r3eikCEeymi53fmcz7Wg" fontName="Ubuntu" fontHeight="8" bold="true"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_C6r3eykCEeymi53fmcz7Wg"/>
</children>
<styles xmi:type="notation:SortingStyle" xmi:id="_C6qpUikCEeymi53fmcz7Wg"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_C6qpUykCEeymi53fmcz7Wg"/>
</children>
<styles xmi:type="notation:ShapeStyle" xmi:id="_C6qCUykCEeymi53fmcz7Wg" fontName="Ubuntu" fontHeight="8"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_C6qCVCkCEeymi53fmcz7Wg" x="100" y="390"/>
</children>
<children xmi:type="notation:Node" xmi:id="_C6qpVCkCEeymi53fmcz7Wg" type="2003" element="_C6bYwikCEeymi53fmcz7Wg">
<children xmi:type="notation:Node" xmi:id="_C6qpVykCEeymi53fmcz7Wg" type="5007"/>
<children xmi:type="notation:Node" xmi:id="_C6qpWCkCEeymi53fmcz7Wg" type="7004">
<children xmi:type="notation:Node" xmi:id="_C6r3fCkCEeymi53fmcz7Wg" type="3010" element="_C6hfYikCEeymi53fmcz7Wg">
<styles xmi:type="notation:FontStyle" xmi:id="_C6r3fSkCEeymi53fmcz7Wg" fontName="Ubuntu" fontHeight="8" bold="true"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_C6r3fikCEeymi53fmcz7Wg"/>
</children>
<styles xmi:type="notation:SortingStyle" xmi:id="_C6qpWSkCEeymi53fmcz7Wg"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_C6qpWikCEeymi53fmcz7Wg"/>
</children>
<styles xmi:type="notation:ShapeStyle" xmi:id="_C6qpVSkCEeymi53fmcz7Wg" fontName="Ubuntu" fontHeight="8"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_C6qpVikCEeymi53fmcz7Wg" x="205" y="555"/>
</children>
<styles xmi:type="notation:DiagramStyle" xmi:id="_Cl7vcikCEeymi53fmcz7Wg"/>
<edges xmi:type="notation:Edge" xmi:id="_C6tsoikCEeymi53fmcz7Wg" type="4001" element="_C6lJySkCEeymi53fmcz7Wg" source="_C6pbOikCEeymi53fmcz7Wg" target="_C6pbMykCEeymi53fmcz7Wg">
<children xmi:type="notation:Node" xmi:id="_C6tspikCEeymi53fmcz7Wg" type="6001">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_C6tspykCEeymi53fmcz7Wg" y="-10"/>
</children>
<children xmi:type="notation:Node" xmi:id="_C6tsqCkCEeymi53fmcz7Wg" type="6002">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_C6tsqSkCEeymi53fmcz7Wg" y="10"/>
</children>
<children xmi:type="notation:Node" xmi:id="_C6tsqikCEeymi53fmcz7Wg" type="6003">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_C6tsqykCEeymi53fmcz7Wg" y="10"/>
</children>
<styles xmi:type="notation:ConnectorStyle" xmi:id="_C6tsoykCEeymi53fmcz7Wg" routing="Tree"/>
<styles xmi:type="notation:FontStyle" xmi:id="_C6tspCkCEeymi53fmcz7Wg" fontName="Ubuntu" fontHeight="8"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_C6tspSkCEeymi53fmcz7Wg" points="[-1, 0, -31, 380]$[0, -320, -30, 60]$[29, -380, -1, 0]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_C6tsrCkCEeymi53fmcz7Wg" id="(0.5084745762711864,0.0)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_C6tsrSkCEeymi53fmcz7Wg" id="(0.5084745762711864,1.0)"/>
</edges>
<edges xmi:type="notation:Edge" xmi:id="_C6tsrikCEeymi53fmcz7Wg" type="4001" element="_C6mX4CkCEeymi53fmcz7Wg" source="_C6pbQSkCEeymi53fmcz7Wg" target="_C6pbMykCEeymi53fmcz7Wg">
<children xmi:type="notation:Node" xmi:id="_C6tssikCEeymi53fmcz7Wg" type="6001">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_C6tssykCEeymi53fmcz7Wg" y="-10"/>
</children>
<children xmi:type="notation:Node" xmi:id="_C6tstCkCEeymi53fmcz7Wg" type="6002">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_C6tstSkCEeymi53fmcz7Wg" y="10"/>
</children>
<children xmi:type="notation:Node" xmi:id="_C6tstikCEeymi53fmcz7Wg" type="6003">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_C6tstykCEeymi53fmcz7Wg" y="10"/>
</children>
<styles xmi:type="notation:ConnectorStyle" xmi:id="_C6tsrykCEeymi53fmcz7Wg" routing="Tree"/>
<styles xmi:type="notation:FontStyle" xmi:id="_C6tssCkCEeymi53fmcz7Wg" fontName="Ubuntu" fontHeight="8"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_C6tssSkCEeymi53fmcz7Wg" points="[0, 0, 278, 77]$[0, -59, 278, 18]$[-279, -59, -1, 18]$[-279, -77, -1, 0]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_C6tsuCkCEeymi53fmcz7Wg" id="(0.503968253968254,0.0)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_C6tsuSkCEeymi53fmcz7Wg" id="(0.5084745762711864,1.0)"/>
</edges>
<edges xmi:type="notation:Edge" xmi:id="_C6tsuikCEeymi53fmcz7Wg" type="4001" element="_C6mX5ykCEeymi53fmcz7Wg" source="_C6qCSykCEeymi53fmcz7Wg" target="_C6pbMykCEeymi53fmcz7Wg">
<children xmi:type="notation:Node" xmi:id="_C6uTsCkCEeymi53fmcz7Wg" type="6001">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_C6uTsSkCEeymi53fmcz7Wg" y="-10"/>
</children>
<children xmi:type="notation:Node" xmi:id="_C6uTsikCEeymi53fmcz7Wg" type="6002">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_C6uTsykCEeymi53fmcz7Wg" y="10"/>
</children>
<children xmi:type="notation:Node" xmi:id="_C6uTtCkCEeymi53fmcz7Wg" type="6003">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_C6uTtSkCEeymi53fmcz7Wg" y="10"/>
</children>
<styles xmi:type="notation:ConnectorStyle" xmi:id="_C6tsuykCEeymi53fmcz7Wg" routing="Tree"/>
<styles xmi:type="notation:FontStyle" xmi:id="_C6tsvCkCEeymi53fmcz7Wg" fontName="Ubuntu" fontHeight="8"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_C6tsvSkCEeymi53fmcz7Wg" points="[-1, 0, 75, 60]$[-77, -60, -1, 0]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_C6uTtikCEeymi53fmcz7Wg" id="(0.5084745762711864,0.0)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_C6uTtykCEeymi53fmcz7Wg" id="(0.5084745762711864,1.0)"/>
</edges>
<edges xmi:type="notation:Edge" xmi:id="_C6uTuCkCEeymi53fmcz7Wg" type="4001" element="_C6mX7ikCEeymi53fmcz7Wg" source="_C6qCUikCEeymi53fmcz7Wg" target="_C6pbMykCEeymi53fmcz7Wg">
<children xmi:type="notation:Node" xmi:id="_C6uTvCkCEeymi53fmcz7Wg" type="6001">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_C6uTvSkCEeymi53fmcz7Wg" y="-10"/>
</children>
<children xmi:type="notation:Node" xmi:id="_C6uTvikCEeymi53fmcz7Wg" type="6002">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_C6uTvykCEeymi53fmcz7Wg" y="10"/>
</children>
<children xmi:type="notation:Node" xmi:id="_C6uTwCkCEeymi53fmcz7Wg" type="6003">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_C6uTwSkCEeymi53fmcz7Wg" y="10"/>
</children>
<styles xmi:type="notation:ConnectorStyle" xmi:id="_C6uTuSkCEeymi53fmcz7Wg" routing="Tree"/>
<styles xmi:type="notation:FontStyle" xmi:id="_C6uTuikCEeymi53fmcz7Wg" fontName="Ubuntu" fontHeight="8"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_C6uTuykCEeymi53fmcz7Wg" points="[-1, 0, -136, 60]$[134, -60, -1, 0]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_C6uTwikCEeymi53fmcz7Wg" id="(0.5084745762711864,0.0)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_C6uTwykCEeymi53fmcz7Wg" id="(0.5084745762711864,1.0)"/>
</edges>
<edges xmi:type="notation:Edge" xmi:id="_C6u6wCkCEeymi53fmcz7Wg" type="4001" element="_C6m-9ikCEeymi53fmcz7Wg" source="_C6pbOikCEeymi53fmcz7Wg" target="_C6pbQSkCEeymi53fmcz7Wg">
<children xmi:type="notation:Node" xmi:id="_C6u6xCkCEeymi53fmcz7Wg" type="6001">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_C6u6xSkCEeymi53fmcz7Wg" x="35" y="-10"/>
</children>
<children xmi:type="notation:Node" xmi:id="_C6vh0CkCEeymi53fmcz7Wg" type="6002">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_C6vh0SkCEeymi53fmcz7Wg" x="-4" y="12"/>
</children>
<children xmi:type="notation:Node" xmi:id="_C6vh0ikCEeymi53fmcz7Wg" type="6003">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_C6vh0ykCEeymi53fmcz7Wg" x="-24" y="-10"/>
</children>
<styles xmi:type="notation:ConnectorStyle" xmi:id="_C6u6wSkCEeymi53fmcz7Wg" routing="Rectilinear"/>
<styles xmi:type="notation:FontStyle" xmi:id="_C6u6wikCEeymi53fmcz7Wg" fontName="Ubuntu" fontHeight="8"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_C6u6wykCEeymi53fmcz7Wg" points="[59, 10, -448, 10]$[381, 10, -126, 10]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_C6vh1CkCEeymi53fmcz7Wg" id="(0.5,0.5)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_C6vh1SkCEeymi53fmcz7Wg" id="(0.5,0.5)"/>
</edges>
<edges xmi:type="notation:Edge" xmi:id="_C6vh1ikCEeymi53fmcz7Wg" type="4001" element="_C6nmBikCEeymi53fmcz7Wg" source="_C6pbOikCEeymi53fmcz7Wg" target="_C6pbQSkCEeymi53fmcz7Wg">
<children xmi:type="notation:Node" xmi:id="_C6wI4CkCEeymi53fmcz7Wg" type="6001">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_C6wI4SkCEeymi53fmcz7Wg" x="35" y="-10"/>
</children>
<children xmi:type="notation:Node" xmi:id="_C6wI4ikCEeymi53fmcz7Wg" type="6002">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_C6wI4ykCEeymi53fmcz7Wg" x="2" y="11"/>
</children>
<children xmi:type="notation:Node" xmi:id="_C6wI5CkCEeymi53fmcz7Wg" type="6003">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_C6wI5SkCEeymi53fmcz7Wg" x="-19" y="-9"/>
</children>
<styles xmi:type="notation:ConnectorStyle" xmi:id="_C6vh1ykCEeymi53fmcz7Wg" routing="Rectilinear"/>
<styles xmi:type="notation:FontStyle" xmi:id="_C6vh2CkCEeymi53fmcz7Wg" fontName="Ubuntu" fontHeight="8"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_C6vh2SkCEeymi53fmcz7Wg" points="[59, -19, -448, -19]$[381, -19, -126, -19]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_C6wI5ikCEeymi53fmcz7Wg" id="(0.5,0.5)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_C6wI5ykCEeymi53fmcz7Wg" id="(0.5,0.5)"/>
</edges>
<edges xmi:type="notation:Edge" xmi:id="_NMBYwCxBEeyIb_aAzHoOBA" type="4001" element="_NLhpgCxBEeyIb_aAzHoOBA" source="_C6pbMykCEeymi53fmcz7Wg" target="_C6qCRCkCEeymi53fmcz7Wg">
<children xmi:type="notation:Node" xmi:id="_NMHfYCxBEeyIb_aAzHoOBA" type="6001">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_NMHfYSxBEeyIb_aAzHoOBA" y="-10"/>
</children>
<children xmi:type="notation:Node" xmi:id="_NMKisCxBEeyIb_aAzHoOBA" type="6002">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_NMKisSxBEeyIb_aAzHoOBA" x="35" y="8"/>
</children>
<children xmi:type="notation:Node" xmi:id="_NMLJwCxBEeyIb_aAzHoOBA" type="6003">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_NMLJwSxBEeyIb_aAzHoOBA" x="-4" y="-12"/>
</children>
<styles xmi:type="notation:ConnectorStyle" xmi:id="_NMBYwSxBEeyIb_aAzHoOBA" routing="Rectilinear"/>
<styles xmi:type="notation:FontStyle" xmi:id="_NMBYwixBEeyIb_aAzHoOBA" fontName="Ubuntu" fontHeight="8" bold="true"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_NMBYwyxBEeyIb_aAzHoOBA" points="[0, 0, 320, 0]$[-320, 0, 0, 0]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NMvxgCxBEeyIb_aAzHoOBA" id="(0.5,0.5)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NMvxgSxBEeyIb_aAzHoOBA" id="(0.5,0.5)"/>
</edges>
<edges xmi:type="notation:Edge" xmi:id="_NMvxgixBEeyIb_aAzHoOBA" type="4001" element="_NLl68CxBEeyIb_aAzHoOBA" source="_C6qCUikCEeymi53fmcz7Wg" target="_C6qpVCkCEeymi53fmcz7Wg">
<children xmi:type="notation:Node" xmi:id="_NMvxhixBEeyIb_aAzHoOBA" type="6001">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_NMvxhyxBEeyIb_aAzHoOBA" x="-30"/>
</children>
<children xmi:type="notation:Node" xmi:id="_NMwYkCxBEeyIb_aAzHoOBA" type="6002">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_NMwYkSxBEeyIb_aAzHoOBA" x="-7" y="36"/>
</children>
<children xmi:type="notation:Node" xmi:id="_NMwYkixBEeyIb_aAzHoOBA" type="6003">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_NMwYkyxBEeyIb_aAzHoOBA" x="-15" y="14"/>
</children>
<styles xmi:type="notation:ConnectorStyle" xmi:id="_NMvxgyxBEeyIb_aAzHoOBA" routing="Rectilinear"/>
<styles xmi:type="notation:FontStyle" xmi:id="_NMvxhCxBEeyIb_aAzHoOBA" fontName="Ubuntu" fontHeight="8"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_NMvxhSxBEeyIb_aAzHoOBA" points="[-9, 49, -114, -116]$[-9, 164, -114, -1]$[46, 164, -59, -1]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NMwYlCxBEeyIb_aAzHoOBA" id="(0.5,0.5)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NMwYlSxBEeyIb_aAzHoOBA" id="(0.5,0.5)"/>
</edges>
<edges xmi:type="notation:Edge" xmi:id="_NMw_oCxBEeyIb_aAzHoOBA" type="4001" element="_NLnJECxBEeyIb_aAzHoOBA" source="_C6pbOikCEeymi53fmcz7Wg" target="_C6qpVCkCEeymi53fmcz7Wg">
<children xmi:type="notation:Node" xmi:id="_NMw_pCxBEeyIb_aAzHoOBA" type="6001">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_NMw_pSxBEeyIb_aAzHoOBA" x="-10"/>
</children>
<children xmi:type="notation:Node" xmi:id="_NMw_pixBEeyIb_aAzHoOBA" type="6002">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_NMw_pyxBEeyIb_aAzHoOBA" x="-4" y="-39"/>
</children>
<children xmi:type="notation:Node" xmi:id="_NMw_qCxBEeyIb_aAzHoOBA" type="6003">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_NMw_qSxBEeyIb_aAzHoOBA" x="-18" y="-12"/>
</children>
<styles xmi:type="notation:ConnectorStyle" xmi:id="_NMw_oSxBEeyIb_aAzHoOBA" routing="Rectilinear"/>
<styles xmi:type="notation:FontStyle" xmi:id="_NMw_oixBEeyIb_aAzHoOBA" fontName="Ubuntu" fontHeight="8"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_NMw_oyxBEeyIb_aAzHoOBA" points="[-1, 49, 89, -116]$[-1, 166, 89, 1]$[-31, 166, 59, 1]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NMxmsCxBEeyIb_aAzHoOBA" id="(0.5,0.5)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NMxmsSxBEeyIb_aAzHoOBA" id="(0.5,0.5)"/>
</edges>
<edges xmi:type="notation:Edge" xmi:id="_01onQCxBEeyIb_aAzHoOBA" type="4001" element="_01T3ICxBEeyIb_aAzHoOBA" source="_C6pbMykCEeymi53fmcz7Wg" target="_C6qCSykCEeymi53fmcz7Wg">
<children xmi:type="notation:Node" xmi:id="_01onRCxBEeyIb_aAzHoOBA" type="6001">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_01onRSxBEeyIb_aAzHoOBA" y="-10"/>
</children>
<children xmi:type="notation:Node" xmi:id="_01onRixBEeyIb_aAzHoOBA" type="6002">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_01onRyxBEeyIb_aAzHoOBA" x="15" y="12"/>
</children>
<children xmi:type="notation:Node" xmi:id="_01onSCxBEeyIb_aAzHoOBA" type="6003">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_01onSSxBEeyIb_aAzHoOBA" x="-20" y="-8"/>
</children>
<styles xmi:type="notation:ConnectorStyle" xmi:id="_01onQSxBEeyIb_aAzHoOBA" routing="Rectilinear"/>
<styles xmi:type="notation:FontStyle" xmi:id="_01onQixBEeyIb_aAzHoOBA" fontName="Ubuntu" fontHeight="8"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_01onQyxBEeyIb_aAzHoOBA" points="[0, 0, -277, 0]$[277, 0, 0, 0]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_01p1YCxBEeyIb_aAzHoOBA" id="(0.5,0.5)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_01p1YSxBEeyIb_aAzHoOBA" id="(0.5,0.5)"/>
</edges>
</data>
</ownedAnnotationEntries>
<ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_Cl9koSkCEeymi53fmcz7Wg" source="DANNOTATION_CUSTOMIZATION_KEY">
<data xmi:type="diagram:ComputedStyleDescriptionRegistry" uid="_Cl9koikCEeymi53fmcz7Wg">
<computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_C6fDJCkCEeymi53fmcz7Wg" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1">
<borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
<labelFormat>bold</labelFormat>
<labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
<color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
</computedStyleDescriptions>
<computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_NLkFwCxBEeyIb_aAzHoOBA" sourceArrow="InputArrow" targetArrow="FillDiamond" routingStyle="manhattan">
<strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
<beginLabelStyleDescription xmi:type="style:BeginLabelStyleDescription" xmi:id="_NLkFwSxBEeyIb_aAzHoOBA" showIcon="false" labelExpression="service:renderEOpposite">
<labelFormat>bold</labelFormat>
<labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
</beginLabelStyleDescription>
<endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_NLkFwixBEeyIb_aAzHoOBA" showIcon="false" labelExpression="service:render">
<labelFormat>bold</labelFormat>
<labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
</endLabelStyleDescription>
</computedStyleDescriptions>
<computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_NLoXMCxBEeyIb_aAzHoOBA" sourceArrow="FillDiamond" routingStyle="manhattan">
<strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
<beginLabelStyleDescription xmi:type="style:BeginLabelStyleDescription" xmi:id="_NLoXMSxBEeyIb_aAzHoOBA" showIcon="false" labelExpression="service:renderEOpposite">
<labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
</beginLabelStyleDescription>
<endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_NLoXMixBEeyIb_aAzHoOBA" showIcon="false" labelExpression="service:render">
<labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
</endLabelStyleDescription>
</computedStyleDescriptions>
</data>
</ownedAnnotationEntries>
<ownedDiagramElements xmi:type="diagram:DNodeList" uid="_C6XuYCkCEeymi53fmcz7Wg" name="WorkSequenceType" tooltipText="" width="12" height="10">
<target xmi:type="ecore:EEnum" href="simplePDL.ecore#//WorkSequenceType"/>
<semanticElements xmi:type="ecore:EEnum" href="simplePDL.ecore#//WorkSequenceType"/>
<arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
<arrangeConstraints>KEEP_SIZE</arrangeConstraints>
<arrangeConstraints>KEEP_RATIO</arrangeConstraints>
<ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_C6XuYSkCEeymi53fmcz7Wg" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="221,236,202">
<description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@style"/>
</ownedStyle>
<actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']"/>
<ownedElements xmi:type="diagram:DNodeListElement" uid="_C6iGcykCEeymi53fmcz7Wg" name="startToStart" tooltipText="">
<target xmi:type="ecore:EEnumLiteral" href="simplePDL.ecore#//WorkSequenceType/startToStart"/>
<semanticElements xmi:type="ecore:EEnumLiteral" href="simplePDL.ecore#//WorkSequenceType/startToStart"/>
<ownedStyle xmi:type="diagram:BundledImage" uid="_C6itgCkCEeymi53fmcz7Wg" labelAlignment="LEFT">
<description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
</ownedStyle>
<actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
</ownedElements>
<ownedElements xmi:type="diagram:DNodeListElement" uid="_C6itgSkCEeymi53fmcz7Wg" name="finishToStart" tooltipText="">
<target xmi:type="ecore:EEnumLiteral" href="simplePDL.ecore#//WorkSequenceType/finishToStart"/>
<semanticElements xmi:type="ecore:EEnumLiteral" href="simplePDL.ecore#//WorkSequenceType/finishToStart"/>
<ownedStyle xmi:type="diagram:BundledImage" uid="_C6itgikCEeymi53fmcz7Wg" labelAlignment="LEFT">
<description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
</ownedStyle>
<actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
</ownedElements>
<ownedElements xmi:type="diagram:DNodeListElement" uid="_C6itgykCEeymi53fmcz7Wg" name="startToFinish" tooltipText="">
<target xmi:type="ecore:EEnumLiteral" href="simplePDL.ecore#//WorkSequenceType/startToFinish"/>
<semanticElements xmi:type="ecore:EEnumLiteral" href="simplePDL.ecore#//WorkSequenceType/startToFinish"/>
<ownedStyle xmi:type="diagram:BundledImage" uid="_C6ithCkCEeymi53fmcz7Wg" labelAlignment="LEFT">
<description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
</ownedStyle>
<actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
</ownedElements>
<ownedElements xmi:type="diagram:DNodeListElement" uid="_C6ithSkCEeymi53fmcz7Wg" name="finishToFinish" tooltipText="">
<target xmi:type="ecore:EEnumLiteral" href="simplePDL.ecore#//WorkSequenceType/finishToFinish"/>
<semanticElements xmi:type="ecore:EEnumLiteral" href="simplePDL.ecore#//WorkSequenceType/finishToFinish"/>
<ownedStyle xmi:type="diagram:BundledImage" uid="_C6jUkCkCEeymi53fmcz7Wg" labelAlignment="LEFT">
<description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
</ownedStyle>
<actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
</ownedElements>
</ownedDiagramElements>
<ownedDiagramElements xmi:type="diagram:DNodeList" uid="_C6YVcCkCEeymi53fmcz7Wg" name="ProcessElement" tooltipText="" outgoingEdges="_NLhpgCxBEeyIb_aAzHoOBA _01T3ICxBEeyIb_aAzHoOBA" incomingEdges="_C6lJySkCEeymi53fmcz7Wg _C6mX4CkCEeymi53fmcz7Wg _C6mX5ykCEeymi53fmcz7Wg _C6mX7ikCEeymi53fmcz7Wg" width="12" height="10">
<target xmi:type="ecore:EClass" href="simplePDL.ecore#//ProcessElement"/>
<semanticElements xmi:type="ecore:EClass" href="simplePDL.ecore#//ProcessElement"/>
<arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
<arrangeConstraints>KEEP_SIZE</arrangeConstraints>
<arrangeConstraints>KEEP_RATIO</arrangeConstraints>
<ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_00944SxBEeyIb_aAzHoOBA" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="228,228,228">
<labelFormat>italic</labelFormat>
<description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@conditionnalStyles.1/@style"/>
</ownedStyle>
<actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
</ownedDiagramElements>
<ownedDiagramElements xmi:type="diagram:DNodeList" uid="_C6Y8gCkCEeymi53fmcz7Wg" name="WorkDefinition" tooltipText="" outgoingEdges="_C6lJySkCEeymi53fmcz7Wg _C6m-9ikCEeymi53fmcz7Wg _C6nmBikCEeymi53fmcz7Wg _NLnJECxBEeyIb_aAzHoOBA" width="12" height="10">
<target xmi:type="ecore:EClass" href="simplePDL.ecore#//WorkDefinition"/>
<semanticElements xmi:type="ecore:EClass" href="simplePDL.ecore#//WorkDefinition"/>
<arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
<arrangeConstraints>KEEP_SIZE</arrangeConstraints>
<arrangeConstraints>KEEP_RATIO</arrangeConstraints>
<ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_C6Y8gSkCEeymi53fmcz7Wg" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
<description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
</ownedStyle>
<actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
<ownedElements xmi:type="diagram:DNodeListElement" uid="_C6fDIykCEeymi53fmcz7Wg" name="name : EString" tooltipText="">
<target xmi:type="ecore:EAttribute" href="simplePDL.ecore#//WorkDefinition/name"/>
<semanticElements xmi:type="ecore:EAttribute" href="simplePDL.ecore#//WorkDefinition/name"/>
<ownedStyle xmi:type="diagram:BundledImage" uid="_C6fqMCkCEeymi53fmcz7Wg" labelAlignment="LEFT" description="_C6fDJCkCEeymi53fmcz7Wg">
<labelFormat>bold</labelFormat>
</ownedStyle>
<actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
</ownedElements>
</ownedDiagramElements>
<ownedDiagramElements xmi:type="diagram:DNodeList" uid="_C6ZjkCkCEeymi53fmcz7Wg" name="WorkSequence" tooltipText="" outgoingEdges="_C6mX4CkCEeymi53fmcz7Wg" incomingEdges="_C6m-9ikCEeymi53fmcz7Wg _C6nmBikCEeymi53fmcz7Wg" width="12" height="10">
<target xmi:type="ecore:EClass" href="simplePDL.ecore#//WorkSequence"/>
<semanticElements xmi:type="ecore:EClass" href="simplePDL.ecore#//WorkSequence"/>
<arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
<arrangeConstraints>KEEP_SIZE</arrangeConstraints>
<arrangeConstraints>KEEP_RATIO</arrangeConstraints>
<ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_C6ZjkSkCEeymi53fmcz7Wg" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
<description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
</ownedStyle>
<actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
<ownedElements xmi:type="diagram:DNodeListElement" uid="_C6fqMSkCEeymi53fmcz7Wg" name="linkType : WorkSequenceType = startToStart" tooltipText="">
<target xmi:type="ecore:EAttribute" href="simplePDL.ecore#//WorkSequence/linkType"/>
<semanticElements xmi:type="ecore:EAttribute" href="simplePDL.ecore#//WorkSequence/linkType"/>
<ownedStyle xmi:type="diagram:BundledImage" uid="_C6fqMikCEeymi53fmcz7Wg" labelAlignment="LEFT" description="_C6fDJCkCEeymi53fmcz7Wg">
<labelFormat>bold</labelFormat>
</ownedStyle>
<actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
</ownedElements>
</ownedDiagramElements>
<ownedDiagramElements xmi:type="diagram:DNodeList" uid="_C6aKoCkCEeymi53fmcz7Wg" name="Process" tooltipText="" incomingEdges="_NLhpgCxBEeyIb_aAzHoOBA" width="12" height="10">
<target xmi:type="ecore:EClass" href="simplePDL.ecore#//Process"/>
<semanticElements xmi:type="ecore:EClass" href="simplePDL.ecore#//Process"/>
<arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
<arrangeConstraints>KEEP_SIZE</arrangeConstraints>
<arrangeConstraints>KEEP_RATIO</arrangeConstraints>
<ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_C6aKoSkCEeymi53fmcz7Wg" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
<description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
</ownedStyle>
<actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
<ownedElements xmi:type="diagram:DNodeListElement" uid="_C6gRQCkCEeymi53fmcz7Wg" name="name : EString" tooltipText="">
<target xmi:type="ecore:EAttribute" href="simplePDL.ecore#//Process/name"/>
<semanticElements xmi:type="ecore:EAttribute" href="simplePDL.ecore#//Process/name"/>
<ownedStyle xmi:type="diagram:BundledImage" uid="_C6gRQSkCEeymi53fmcz7Wg" labelAlignment="LEFT" description="_C6fDJCkCEeymi53fmcz7Wg">
<labelFormat>bold</labelFormat>
</ownedStyle>
<actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
</ownedElements>
</ownedDiagramElements>
<ownedDiagramElements xmi:type="diagram:DNodeList" uid="_C6aKoykCEeymi53fmcz7Wg" name="Guidance" tooltipText="" outgoingEdges="_C6mX5ykCEeymi53fmcz7Wg" incomingEdges="_01T3ICxBEeyIb_aAzHoOBA" width="12" height="10">
<target xmi:type="ecore:EClass" href="simplePDL.ecore#//Guidance"/>
<semanticElements xmi:type="ecore:EClass" href="simplePDL.ecore#//Guidance"/>
<arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
<arrangeConstraints>KEEP_SIZE</arrangeConstraints>
<arrangeConstraints>KEEP_RATIO</arrangeConstraints>
<ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_C6axsCkCEeymi53fmcz7Wg" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
<description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
</ownedStyle>
<actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
<ownedElements xmi:type="diagram:DNodeListElement" uid="_C6gRQikCEeymi53fmcz7Wg" name="text : EString" tooltipText="">
<target xmi:type="ecore:EAttribute" href="simplePDL.ecore#//Guidance/text"/>
<semanticElements xmi:type="ecore:EAttribute" href="simplePDL.ecore#//Guidance/text"/>
<ownedStyle xmi:type="diagram:BundledImage" uid="_C6g4UCkCEeymi53fmcz7Wg" labelAlignment="LEFT" description="_C6fDJCkCEeymi53fmcz7Wg">
<labelFormat>bold</labelFormat>
</ownedStyle>
<actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
</ownedElements>
</ownedDiagramElements>
<ownedDiagramElements xmi:type="diagram:DNodeList" uid="_C6axsikCEeymi53fmcz7Wg" name="Resource" tooltipText="" outgoingEdges="_C6mX7ikCEeymi53fmcz7Wg _NLl68CxBEeyIb_aAzHoOBA" width="12" height="10">
<target xmi:type="ecore:EClass" href="simplePDL.ecore#//Resource"/>
<semanticElements xmi:type="ecore:EClass" href="simplePDL.ecore#//Resource"/>
<arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
<arrangeConstraints>KEEP_SIZE</arrangeConstraints>
<arrangeConstraints>KEEP_RATIO</arrangeConstraints>
<ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_C6bYwCkCEeymi53fmcz7Wg" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
<description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
</ownedStyle>
<actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
<ownedElements xmi:type="diagram:DNodeListElement" uid="_C6g4USkCEeymi53fmcz7Wg" name="quantity : EInt" tooltipText="">
<target xmi:type="ecore:EAttribute" href="simplePDL.ecore#//Resource/quantity"/>
<semanticElements xmi:type="ecore:EAttribute" href="simplePDL.ecore#//Resource/quantity"/>
<ownedStyle xmi:type="diagram:BundledImage" uid="_C6g4UikCEeymi53fmcz7Wg" labelAlignment="LEFT" description="_C6fDJCkCEeymi53fmcz7Wg">
<labelFormat>bold</labelFormat>
</ownedStyle>
<actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
</ownedElements>
<ownedElements xmi:type="diagram:DNodeListElement" uid="_C6hfYCkCEeymi53fmcz7Wg" name="name : EString" tooltipText="">
<target xmi:type="ecore:EAttribute" href="simplePDL.ecore#//Resource/name"/>
<semanticElements xmi:type="ecore:EAttribute" href="simplePDL.ecore#//Resource/name"/>
<ownedStyle xmi:type="diagram:BundledImage" uid="_C6hfYSkCEeymi53fmcz7Wg" labelAlignment="LEFT" description="_C6fDJCkCEeymi53fmcz7Wg">
<labelFormat>bold</labelFormat>
</ownedStyle>
<actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
</ownedElements>
</ownedDiagramElements>
<ownedDiagramElements xmi:type="diagram:DNodeList" uid="_C6bYwikCEeymi53fmcz7Wg" name="Request" tooltipText="" incomingEdges="_NLl68CxBEeyIb_aAzHoOBA _NLnJECxBEeyIb_aAzHoOBA" width="12" height="10">
<target xmi:type="ecore:EClass" href="simplePDL.ecore#//Request"/>
<semanticElements xmi:type="ecore:EClass" href="simplePDL.ecore#//Request"/>
<arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
<arrangeConstraints>KEEP_SIZE</arrangeConstraints>
<arrangeConstraints>KEEP_RATIO</arrangeConstraints>
<ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_C6b_0CkCEeymi53fmcz7Wg" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
<description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
</ownedStyle>
<actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
<ownedElements xmi:type="diagram:DNodeListElement" uid="_C6hfYikCEeymi53fmcz7Wg" name="quantity : EInt" tooltipText="">
<target xmi:type="ecore:EAttribute" href="simplePDL.ecore#//Request/quantity"/>
<semanticElements xmi:type="ecore:EAttribute" href="simplePDL.ecore#//Request/quantity"/>
<ownedStyle xmi:type="diagram:BundledImage" uid="_C6iGcCkCEeymi53fmcz7Wg" labelAlignment="LEFT" description="_C6fDJCkCEeymi53fmcz7Wg">
<labelFormat>bold</labelFormat>
</ownedStyle>
<actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
</ownedElements>
</ownedDiagramElements>
<ownedDiagramElements xmi:type="diagram:DEdge" uid="_C6lJySkCEeymi53fmcz7Wg" sourceNode="_C6Y8gCkCEeymi53fmcz7Wg" targetNode="_C6YVcCkCEeymi53fmcz7Wg">
<target xmi:type="ecore:EClass" href="simplePDL.ecore#//WorkDefinition"/>
<semanticElements xmi:type="ecore:EClass" href="simplePDL.ecore#//WorkDefinition"/>
<ownedStyle xmi:type="diagram:EdgeStyle" uid="_C6lw0CkCEeymi53fmcz7Wg" targetArrow="InputClosedArrow" routingStyle="tree">
<description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
<beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_C6lw0SkCEeymi53fmcz7Wg" showIcon="false">
<labelFormat>italic</labelFormat>
</beginLabelStyle>
<centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_C6lw0ikCEeymi53fmcz7Wg" showIcon="false"/>
</ownedStyle>
<actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
</ownedDiagramElements>
<ownedDiagramElements xmi:type="diagram:DEdge" uid="_C6mX4CkCEeymi53fmcz7Wg" sourceNode="_C6ZjkCkCEeymi53fmcz7Wg" targetNode="_C6YVcCkCEeymi53fmcz7Wg">
<target xmi:type="ecore:EClass" href="simplePDL.ecore#//WorkSequence"/>
<semanticElements xmi:type="ecore:EClass" href="simplePDL.ecore#//WorkSequence"/>
<ownedStyle xmi:type="diagram:EdgeStyle" uid="_C6mX4SkCEeymi53fmcz7Wg" targetArrow="InputClosedArrow" routingStyle="tree">
<description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
<beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_C6mX4ikCEeymi53fmcz7Wg" showIcon="false">
<labelFormat>italic</labelFormat>
</beginLabelStyle>
<centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_C6mX4ykCEeymi53fmcz7Wg" showIcon="false"/>
</ownedStyle>
<actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
</ownedDiagramElements>
<ownedDiagramElements xmi:type="diagram:DEdge" uid="_C6mX5ykCEeymi53fmcz7Wg" sourceNode="_C6aKoykCEeymi53fmcz7Wg" targetNode="_C6YVcCkCEeymi53fmcz7Wg">
<target xmi:type="ecore:EClass" href="simplePDL.ecore#//Guidance"/>
<semanticElements xmi:type="ecore:EClass" href="simplePDL.ecore#//Guidance"/>
<ownedStyle xmi:type="diagram:EdgeStyle" uid="_C6mX6CkCEeymi53fmcz7Wg" targetArrow="InputClosedArrow" routingStyle="tree">
<description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
<beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_C6mX6SkCEeymi53fmcz7Wg" showIcon="false">
<labelFormat>italic</labelFormat>
</beginLabelStyle>
<centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_C6mX6ikCEeymi53fmcz7Wg" showIcon="false"/>
</ownedStyle>
<actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
</ownedDiagramElements>
<ownedDiagramElements xmi:type="diagram:DEdge" uid="_C6mX7ikCEeymi53fmcz7Wg" sourceNode="_C6axsikCEeymi53fmcz7Wg" targetNode="_C6YVcCkCEeymi53fmcz7Wg">
<target xmi:type="ecore:EClass" href="simplePDL.ecore#//Resource"/>
<semanticElements xmi:type="ecore:EClass" href="simplePDL.ecore#//Resource"/>
<ownedStyle xmi:type="diagram:EdgeStyle" uid="_C6m-8CkCEeymi53fmcz7Wg" targetArrow="InputClosedArrow" routingStyle="tree">
<description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
<beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_C6m-8SkCEeymi53fmcz7Wg" showIcon="false">
<labelFormat>italic</labelFormat>
</beginLabelStyle>
<centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_C6m-8ikCEeymi53fmcz7Wg" showIcon="false"/>
</ownedStyle>
<actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
</ownedDiagramElements>
<ownedDiagramElements xmi:type="diagram:DEdge" uid="_C6m-9ikCEeymi53fmcz7Wg" sourceNode="_C6Y8gCkCEeymi53fmcz7Wg" targetNode="_C6ZjkCkCEeymi53fmcz7Wg" beginLabel="[1..1] successor" endLabel="[0..*] linksToPredecessors">
<target xmi:type="ecore:EReference" href="simplePDL.ecore#//WorkDefinition/linksToPredecessors"/>
<semanticElements xmi:type="ecore:EReference" href="simplePDL.ecore#//WorkDefinition/linksToPredecessors"/>
<semanticElements xmi:type="ecore:EReference" href="simplePDL.ecore#//WorkSequence/successor"/>
<ownedStyle xmi:type="diagram:EdgeStyle" uid="_C6nmACkCEeymi53fmcz7Wg" sourceArrow="InputArrow" routingStyle="manhattan" strokeColor="0,0,0">
<description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']/@style"/>
<beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_C6nmASkCEeymi53fmcz7Wg" showIcon="false"/>
<endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_C6nmAikCEeymi53fmcz7Wg" showIcon="false"/>
</ownedStyle>
<actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
</ownedDiagramElements>
<ownedDiagramElements xmi:type="diagram:DEdge" uid="_C6nmBikCEeymi53fmcz7Wg" sourceNode="_C6Y8gCkCEeymi53fmcz7Wg" targetNode="_C6ZjkCkCEeymi53fmcz7Wg" beginLabel="[1..1] predecessor" endLabel="[0..*] linksToSuccessors">
<target xmi:type="ecore:EReference" href="simplePDL.ecore#//WorkDefinition/linksToSuccessors"/>
<semanticElements xmi:type="ecore:EReference" href="simplePDL.ecore#//WorkDefinition/linksToSuccessors"/>
<semanticElements xmi:type="ecore:EReference" href="simplePDL.ecore#//WorkSequence/predecessor"/>
<ownedStyle xmi:type="diagram:EdgeStyle" uid="_C6oNECkCEeymi53fmcz7Wg" sourceArrow="InputArrow" routingStyle="manhattan" strokeColor="0,0,0">
<description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']/@style"/>
<beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_C6oNESkCEeymi53fmcz7Wg" showIcon="false"/>
<endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_C6oNEikCEeymi53fmcz7Wg" showIcon="false"/>
</ownedStyle>
<actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
</ownedDiagramElements>
<ownedDiagramElements xmi:type="diagram:DEdge" uid="_NLhpgCxBEeyIb_aAzHoOBA" sourceNode="_C6YVcCkCEeymi53fmcz7Wg" targetNode="_C6aKoCkCEeymi53fmcz7Wg" beginLabel="[0..*] processElements" endLabel="[1..1] process">
<target xmi:type="ecore:EReference" href="simplePDL.ecore#//ProcessElement/process"/>
<semanticElements xmi:type="ecore:EReference" href="simplePDL.ecore#//ProcessElement/process"/>
<semanticElements xmi:type="ecore:EReference" href="simplePDL.ecore#//Process/processElements"/>
<ownedStyle xmi:type="diagram:EdgeStyle" uid="_NLks0CxBEeyIb_aAzHoOBA" description="_NLkFwCxBEeyIb_aAzHoOBA" sourceArrow="InputArrow" targetArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
<beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_NLks0SxBEeyIb_aAzHoOBA" showIcon="false">
<labelFormat>bold</labelFormat>
</beginLabelStyle>
<endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_NLks0ixBEeyIb_aAzHoOBA" showIcon="false">
<labelFormat>bold</labelFormat>
</endLabelStyle>
</ownedStyle>
<actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
</ownedDiagramElements>
<ownedDiagramElements xmi:type="diagram:DEdge" uid="_NLl68CxBEeyIb_aAzHoOBA" sourceNode="_C6axsikCEeymi53fmcz7Wg" targetNode="_C6bYwikCEeymi53fmcz7Wg" beginLabel="[1..1] target" endLabel="[0..*] requests">
<target xmi:type="ecore:EReference" href="simplePDL.ecore#//Resource/requests"/>
<semanticElements xmi:type="ecore:EReference" href="simplePDL.ecore#//Resource/requests"/>
<semanticElements xmi:type="ecore:EReference" href="simplePDL.ecore#//Request/target"/>
<ownedStyle xmi:type="diagram:EdgeStyle" uid="_NLmiACxBEeyIb_aAzHoOBA" sourceArrow="InputArrow" routingStyle="manhattan" strokeColor="0,0,0">
<description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']/@style"/>
<beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_NLmiASxBEeyIb_aAzHoOBA" showIcon="false"/>
<endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_NLmiAixBEeyIb_aAzHoOBA" showIcon="false"/>
</ownedStyle>
<actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
</ownedDiagramElements>
<ownedDiagramElements xmi:type="diagram:DEdge" uid="_NLnJECxBEeyIb_aAzHoOBA" sourceNode="_C6Y8gCkCEeymi53fmcz7Wg" targetNode="_C6bYwikCEeymi53fmcz7Wg" beginLabel="[1..1] requester" endLabel="[0..*] requests">
<target xmi:type="ecore:EReference" href="simplePDL.ecore#//WorkDefinition/requests"/>
<semanticElements xmi:type="ecore:EReference" href="simplePDL.ecore#//Request/requester"/>
<semanticElements xmi:type="ecore:EReference" href="simplePDL.ecore#//WorkDefinition/requests"/>
<ownedStyle xmi:type="diagram:EdgeStyle" uid="_NLoXMyxBEeyIb_aAzHoOBA" description="_NLoXMCxBEeyIb_aAzHoOBA" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
<beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_NLoXNCxBEeyIb_aAzHoOBA" showIcon="false"/>
<endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_NLoXNSxBEeyIb_aAzHoOBA" showIcon="false"/>
</ownedStyle>
<actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
</ownedDiagramElements>
<ownedDiagramElements xmi:type="diagram:DEdge" uid="_01T3ICxBEeyIb_aAzHoOBA" sourceNode="_C6YVcCkCEeymi53fmcz7Wg" targetNode="_C6aKoykCEeymi53fmcz7Wg" beginLabel="[0..*] elements" endLabel="[0..*] guidances">
<target xmi:type="ecore:EReference" href="simplePDL.ecore#//ProcessElement/guidances"/>
<semanticElements xmi:type="ecore:EReference" href="simplePDL.ecore#//Guidance/elements"/>
<semanticElements xmi:type="ecore:EReference" href="simplePDL.ecore#//ProcessElement/guidances"/>
<ownedStyle xmi:type="diagram:EdgeStyle" uid="_01VFQCxBEeyIb_aAzHoOBA" sourceArrow="InputArrow" routingStyle="manhattan" strokeColor="0,0,0">
<description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']/@style"/>
<beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_01VFQSxBEeyIb_aAzHoOBA" showIcon="false"/>
<endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_01VFQixBEeyIb_aAzHoOBA" showIcon="false"/>
</ownedStyle>
<actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
</ownedDiagramElements>
<description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
<filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_Cl56QCkCEeymi53fmcz7Wg"/>
<activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
<activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']"/>
<activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Validation']"/>
<activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Archetype']/@ownedRepresentationExtensions[name='Entities%20With%20Archetypes']/@layers[name='Archetypes']"/>
<target xmi:type="ecore:EPackage" href="simplePDL.ecore#/"/>
</diagram:DSemanticDiagram>
</xmi:XMI>

View file

@ -1 +0,0 @@
../eclipse-workspace/fr.n7.simplepdl/simplepdl.ecore

58
livrables/simplePDL.ecore Normal file
View file

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8"?>
<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="simplepdl" nsURI="http://simplepdl" nsPrefix="simplepdl">
<eClassifiers xsi:type="ecore:EEnum" name="WorkSequenceType">
<eLiterals name="startToStart"/>
<eLiterals name="finishToStart" value="1"/>
<eLiterals name="startToFinish" value="2"/>
<eLiterals name="finishToFinish" value="3"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ProcessElement" abstract="true">
<eStructuralFeatures xsi:type="ecore:EReference" name="process" lowerBound="1"
eType="#//Process" eOpposite="#//Process/processElements"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="guidances" upperBound="-1"
eType="#//Guidance" eOpposite="#//Guidance/elements"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="WorkDefinition" eSuperTypes="#//ProcessElement">
<eStructuralFeatures xsi:type="ecore:EReference" name="linksToPredecessors" upperBound="-1"
eType="#//WorkSequence" eOpposite="#//WorkSequence/successor"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="linksToSuccessors" upperBound="-1"
eType="#//WorkSequence" eOpposite="#//WorkSequence/predecessor"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="requests" upperBound="-1"
eType="#//Request" containment="true" eOpposite="#//Request/requester"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="WorkSequence" eSuperTypes="#//ProcessElement">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="linkType" lowerBound="1"
eType="#//WorkSequenceType"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="predecessor" lowerBound="1"
eType="#//WorkDefinition" eOpposite="#//WorkDefinition/linksToSuccessors"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="successor" lowerBound="1"
eType="#//WorkDefinition" eOpposite="#//WorkDefinition/linksToPredecessors"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Process">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="processElements" upperBound="-1"
eType="#//ProcessElement" containment="true" eOpposite="#//ProcessElement/process"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Guidance" eSuperTypes="#//ProcessElement">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="text" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="elements" upperBound="-1"
eType="#//ProcessElement" eOpposite="#//ProcessElement/guidances"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Resource" eSuperTypes="#//ProcessElement">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="quantity" lowerBound="1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="requests" upperBound="-1"
eType="#//Request" eOpposite="#//Request/target"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Request">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="quantity" lowerBound="1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="target" lowerBound="1"
eType="#//Resource" eOpposite="#//Resource/requests"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="requester" lowerBound="1"
eType="#//WorkDefinition" eOpposite="#//WorkDefinition/requests"/>
</eClassifiers>
</ecore:EPackage>

View file

@ -1 +0,0 @@
../eclipse-workspace/fr.n7.simplepdl/simplepdl.ocl

44
livrables/simplePDL.ocl Normal file
View file

@ -0,0 +1,44 @@
import 'simplePDL.ecore'
package simplepdl
context Process
inv validName('Invalid name: ' + self.name):
self.name.matches('[A-Za-z_][A-Za-z0-9_]*')
inv uniqNamesWD: self.processElements
->select(pe | pe.oclIsKindOf(WorkDefinition))
->collect(pe | pe.oclAsType(WorkDefinition))
->forAll(w1, w2 | w1 = w2 or w1.name <> w2.name)
inv uniqNamesRes: self.processElements
->select(pe | pe.oclIsKindOf(Resource))
->collect(pe | pe.oclAsType(Resource))
->forAll(r1, r2 | r1 = r2 or r1.name <> r2.name)
context ProcessElement
def: process(): Process =
Process.allInstances()
->select(p | p.processElements->includes(self))
->asSequence()->first()
context WorkSequence
inv successorAndPredecessorInSameProcess('Activities not in the same process : '
+ self.predecessor.name + ' in ' + self.predecessor.process().name+ ' and '
+ self.successor.name + ' in ' + self.successor.process().name):
self.process() = self.successor.process()
and self.process() = self.predecessor.process()
inv notReflexive: self.predecessor <> self.successor
context WorkDefinition
inv nameMin2Char: self.name.matches('..+')
inv weirdName: not self.name.matches('([0-9]*|[a-zA-Z]*|_*)')
context Resource
inv negativeQuantity: self.quantity > 0
inv nameMin2Char: self.name.matches('..+')
inv weirdName: not self.name.matches('([0-9]*|_*)')
context Request
inv negativeQuantity: self.quantity > 0
inv greedy: self.quantity <= self.target.quantity
endpackage

View file

@ -1 +0,0 @@
../eclipse-workspace/fr.n7.simplepdl.design/description/simplepdl.odesign

139
livrables/simplePDL.odesign Normal file
View file

@ -0,0 +1,139 @@
<?xml version="1.0" encoding="UTF-8"?>
<description:Group xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" xmlns:tool="http://www.eclipse.org/sirius/diagram/description/tool/1.1.0" xmlns:tool_1="http://www.eclipse.org/sirius/description/tool/1.1.0" name="simplepdl" version="12.0.0.2017041100">
<ownedViewpoints name="simplepdlViewpoint" modelFileExtension="simplepdl">
<ownedRepresentations xsi:type="description_1:DiagramDescription" name="ProcessDiagram" domainClass="simplepdl::Process" enablePopupBars="true">
<metamodel href="http://simplepdl#/"/>
<defaultLayer name="ProcessDiagram">
<nodeMappings name="WDNode" domainClass="simplepdl::WorkDefinition">
<style xsi:type="style:EllipseNodeDescription" borderSizeComputationExpression="3" labelSize="12" showIcon="false" labelPosition="node" resizeKind="NSEW">
<borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
<labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
<color xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='gray']"/>
</style>
</nodeMappings>
<nodeMappings name="GNode" domainClass="simplepdl::Guidance">
<style xsi:type="style:SquareDescription" borderSizeComputationExpression="3" labelSize="12" showIcon="false" labelExpression="feature:text" labelPosition="node" resizeKind="NSEW">
<borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
<labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
<color xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='yellow']"/>
</style>
</nodeMappings>
<nodeMappings name="ResNode" domainClass="simplepdl::Resource">
<style xsi:type="style:LozengeNodeDescription" labelSize="7" showIcon="false" labelExpression="[self.name + ' (' + self.quantity + ')'/]" labelPosition="node" resizeKind="NSEW">
<borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
<labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
<color xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='gray']"/>
</style>
</nodeMappings>
<edgeMappings name="WSEdge" sourceMapping="//@ownedViewpoints[name='simplepdlViewpoint']/@ownedRepresentations[name='ProcessDiagram']/@defaultLayer/@nodeMappings[name='WDNode']" targetMapping="//@ownedViewpoints[name='simplepdlViewpoint']/@ownedRepresentations[name='ProcessDiagram']/@defaultLayer/@nodeMappings[name='WDNode']" targetFinderExpression="feature:successor" sourceFinderExpression="feature:predecessor" domainClass="simplepdl::WorkSequence" useDomainElement="true">
<conditionnalStyles predicateExpression="[self.linkType=simplepdl::WorkSequenceType::startToStart/]">
<style sizeComputationExpression="2">
<strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_yellow']"/>
<centerLabelStyleDescription labelSize="12" showIcon="false" labelExpression="feature:linkType">
<labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_yellow']"/>
</centerLabelStyleDescription>
</style>
</conditionnalStyles>
<conditionnalStyles predicateExpression="[self.linkType=simplepdl::WorkSequenceType::startToFinish/]">
<style sizeComputationExpression="2">
<strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
<centerLabelStyleDescription labelSize="12" showIcon="false" labelExpression="feature:linkType">
<labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
</centerLabelStyleDescription>
</style>
</conditionnalStyles>
<conditionnalStyles predicateExpression="[self.linkType=simplepdl::WorkSequenceType::finishToStart/]">
<style sizeComputationExpression="2">
<strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_green']"/>
<centerLabelStyleDescription labelSize="12" showIcon="false" labelExpression="feature:linkType">
<labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_green']"/>
</centerLabelStyleDescription>
</style>
</conditionnalStyles>
<conditionnalStyles predicateExpression="[self.linkType=simplepdl::WorkSequenceType::finishToFinish/]">
<style sizeComputationExpression="2">
<strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
<centerLabelStyleDescription labelSize="12" showIcon="false" labelExpression="feature:linkType">
<labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
</centerLabelStyleDescription>
</style>
</conditionnalStyles>
</edgeMappings>
<edgeMappings name="GEdge" sourceMapping="//@ownedViewpoints[name='simplepdlViewpoint']/@ownedRepresentations[name='ProcessDiagram']/@defaultLayer/@nodeMappings[name='GNode']" targetMapping="//@ownedViewpoints[name='simplepdlViewpoint']/@ownedRepresentations[name='ProcessDiagram']/@defaultLayer/@nodeMappings[name='WDNode'] //@ownedViewpoints[name='simplepdlViewpoint']/@ownedRepresentations[name='ProcessDiagram']/@defaultLayer/@nodeMappings[name='ResNode'] //@ownedViewpoints[name='simplepdlViewpoint']/@ownedRepresentations[name='ProcessDiagram']/@defaultLayer/@edgeMappings[name='WSEdge'] //@ownedViewpoints[name='simplepdlViewpoint']/@ownedRepresentations[name='ProcessDiagram']/@defaultLayer/@edgeMappings[name='ReqEdge'] //@ownedViewpoints[name='simplepdlViewpoint']/@ownedRepresentations[name='ProcessDiagram']/@defaultLayer/@nodeMappings[name='GNode']" targetFinderExpression="feature:elements">
<style lineStyle="dash" sizeComputationExpression="2">
<strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
<centerLabelStyleDescription labelSize="12">
<labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
</centerLabelStyleDescription>
</style>
</edgeMappings>
<edgeMappings name="ReqEdge" sourceMapping="//@ownedViewpoints[name='simplepdlViewpoint']/@ownedRepresentations[name='ProcessDiagram']/@defaultLayer/@nodeMappings[name='WDNode']" targetMapping="//@ownedViewpoints[name='simplepdlViewpoint']/@ownedRepresentations[name='ProcessDiagram']/@defaultLayer/@nodeMappings[name='ResNode']" targetFinderExpression="feature:target" sourceFinderExpression="feature:requester" domainClass="simplepdl::Request" useDomainElement="true">
<style sizeComputationExpression="2">
<strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='gray']"/>
<centerLabelStyleDescription labelSize="12" showIcon="false" labelExpression="feature:quantity">
<labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
</centerLabelStyleDescription>
</style>
</edgeMappings>
<toolSections name="Outils">
<ownedTools xsi:type="tool:NodeCreationDescription" name="WDCreation" nodeMappings="//@ownedViewpoints[name='simplepdlViewpoint']/@ownedRepresentations[name='ProcessDiagram']/@defaultLayer/@nodeMappings[name='WDNode']">
<variable name="container"/>
<viewVariable name="containerView"/>
<initialOperation>
<firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[container/]">
<subModelOperations xsi:type="tool_1:CreateInstance" typeName="simplepdl::WorkDefinition" referenceName="processElements"/>
</firstModelOperations>
</initialOperation>
</ownedTools>
<ownedTools xsi:type="tool:EdgeCreationDescription" name="WSCreation" edgeMappings="//@ownedViewpoints[name='simplepdlViewpoint']/@ownedRepresentations[name='ProcessDiagram']/@defaultLayer/@edgeMappings[name='WSEdge']">
<sourceVariable name="source"/>
<targetVariable name="target"/>
<sourceViewVariable name="sourceView"/>
<targetViewVariable name="targetView"/>
<initialOperation>
<firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[self.eContainer()/]">
<subModelOperations xsi:type="tool_1:CreateInstance" typeName="simplepdl::WorkSequence" referenceName="processElements">
<subModelOperations xsi:type="tool_1:SetValue" featureName="predecessor" valueExpression="[source/]"/>
<subModelOperations xsi:type="tool_1:SetValue" featureName="successor" valueExpression="[target/]"/>
</subModelOperations>
</firstModelOperations>
</initialOperation>
</ownedTools>
<ownedTools xsi:type="tool:NodeCreationDescription" name="ResCreation" nodeMappings="//@ownedViewpoints[name='simplepdlViewpoint']/@ownedRepresentations[name='ProcessDiagram']/@defaultLayer/@nodeMappings[name='ResNode']">
<variable name="container"/>
<viewVariable name="containerView"/>
<initialOperation>
<firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[container/]">
<subModelOperations xsi:type="tool_1:CreateInstance" typeName="simplepdl::Resource" referenceName="processElements"/>
</firstModelOperations>
</initialOperation>
</ownedTools>
<ownedTools xsi:type="tool:EdgeCreationDescription" name="ReqCreation" edgeMappings="//@ownedViewpoints[name='simplepdlViewpoint']/@ownedRepresentations[name='ProcessDiagram']/@defaultLayer/@edgeMappings[name='ReqEdge']">
<sourceVariable name="source"/>
<targetVariable name="target"/>
<sourceViewVariable name="sourceView"/>
<targetViewVariable name="targetView"/>
<initialOperation>
<firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[self.eContainer().eContainer()/]">
<subModelOperations xsi:type="tool_1:CreateInstance" typeName="simplepdl::Request" referenceName="requests">
<subModelOperations xsi:type="tool_1:SetValue" featureName="requester" valueExpression="[source/]"/>
<subModelOperations xsi:type="tool_1:SetValue" featureName="target" valueExpression="[target/]"/>
</subModelOperations>
</firstModelOperations>
</initialOperation>
</ownedTools>
<ownedTools xsi:type="tool:NodeCreationDescription" name="GuidCreation" nodeMappings="//@ownedViewpoints[name='simplepdlViewpoint']/@ownedRepresentations[name='ProcessDiagram']/@defaultLayer/@nodeMappings[name='GNode']">
<variable name="container"/>
<viewVariable name="containerView"/>
<initialOperation>
<firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="[container/]">
<subModelOperations xsi:type="tool_1:CreateInstance" typeName="simplepdl::Guidance" referenceName="processElements"/>
</firstModelOperations>
</initialOperation>
</ownedTools>
</toolSections>
</defaultLayer>
</ownedRepresentations>
<ownedJavaExtensions qualifiedClassName="fr.n7.simplepdl.design.Services"/>
</ownedViewpoints>
</description:Group>

View file

@ -1 +0,0 @@
../eclipse-workspace/fr.n7.simplepdl/simplepdl.png

Before

Width:  |  Height:  |  Size: 50 B

After

Width:  |  Height:  |  Size: 307 KiB

BIN
livrables/simplePDL.png Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 B

After

Width:  |  Height:  |  Size: 307 KiB

View file

@ -0,0 +1,236 @@
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.Arc;
import petrinet.Network;
import petrinet.Node;
import petrinet.PetrinetFactory;
import petrinet.PetrinetPackage;
import petrinet.Place;
import petrinet.Transition;
import simplepdl.Process;
import simplepdl.SimplepdlPackage;
import simplepdl.WorkDefinition;
import simplepdl.WorkSequence;
import simplepdl.WorkSequenceType;
import simplepdl.Request;
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("models/developpement.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 Resource en Places
for (Object o : process.getProcessElements()) {
if (o instanceof simplepdl.Resource) {
simplepdl.Resource r = (simplepdl.Resource) o;
String name = r.getName();
int qty = r.getQuantity();
Place res = myFactory.createPlace();
res.setName(name + "_resource");
res.setTokens(qty);
network.getNodes().add(res);
}
}
// 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.setPlace(idle);
pause2start.setOutgoing(false);
pause2start.setWeight(1);
Arc start2running = myFactory.createArc();
start2running.setPlace(running);
start2running.setOutgoing(true);
start2running.setWeight(1);
Arc start2started = myFactory.createArc();
start2started.setPlace(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.setPlace(running);
running2finish.setOutgoing(false);
running2finish.setWeight(1);
Arc finish2finished = myFactory.createArc();
finish2finished.setPlace(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 Requests s'il y en a
for (Request req : wd.getRequests()) {
int qty = req.getQuantity();
Place target = null;
for (Node node : network.getNodes()) {
if (node instanceof Place) {
Place place = (Place) node;
if (place.getName().equals(req.getTarget().getName() + "_resource")) {
target = place;
}
}
}
Arc res2start = myFactory.createArc();
res2start.setPlace(target);
res2start.setOutgoing(false);
res2start.setWeight(qty);
Arc finish2res = myFactory.createArc();
finish2res.setPlace(target);
finish2res.setOutgoing(true);
finish2res.setWeight(qty);
start.getArcs().add(res2start);
finish.getArcs().add(finish2res);
}
}
}
// 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.setPlace(place);
arc2.setPlace(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("../fr.n7.petrinet/models/gen/developpement_java.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();
}
}
}

44
livrables/toTINA.mtl Normal file
View file

@ -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.place.name/]*[a.weight/] [/if][/for]-> [for (a : Arc | t.arcs)][if (a.outgoing)][a.place.name/]*[a.weight/] [/if][/for]
[/template]

View file

@ -1,399 +0,0 @@
\documentclass[a4paper, 12pt]{article}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{color}
\usepackage{xcolor}
\usepackage{natbib}
\usepackage[hidelinks]{hyperref}
\usepackage[nottoc, numbib]{tocbibind}
\usepackage[justification=centering]{caption}
\usepackage{mathtools}
\usepackage{lipsum}
\usepackage{lscape}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{minted}
\usepackage{multicol}
\usepackage{svg}
\newminted{text}{linenos, numbersep=6pt, frame=leftline}
\newminted{html}{linenos, numbersep=6pt, frame=leftline}
\usepackage{contour}
\usepackage{ulem}
\renewcommand{\ULdepth}{1.8pt}
\contourlength{0.8pt}
\newcommand{\myuline}[1]{%
\uline{\phantom{#1}}%
\llap{\contour{white}{#1}}%
}
\newcommand{\dst}{\displaystyle}
\usepackage[margin=2cm]{geometry}
\graphicspath{
{./assets/}
}
\begin{document}
\begin{figure}[t]
\centering
$\includesvg[height=1cm]{inp-enseeiht.svg}$
\end{figure}
\title{
\vspace{4cm}
\textbf{Rapport de Mini-Projet} \\
Génie du Logiciel et des Systèmes \\
Chaîne de vérification de modèles de processus
}
\author{
\myuline{Groupe M-02} \\
Fainsin Laurent \\
Guillotin Damien \\
}
\date{
\vspace{10cm}
Département Sciences du Numérique \\
Deuxième année \\
2021 — 2022
}
\maketitle
\newpage
\tableofcontents
\newpage
\section{Métamodèles (avec Ecore)}
\subsection{simplePDL.ecore}
Ce projet se base sur un langage simplifié de modélisation de processus de développement, appelé SimplePDL.
Nous sommes donc parti du modèle Ecore de base du modèle SimplePDL auquel nous avons ajouté progressivement des nouveaux éléments.
Dans un premier temps, il a fallu ajouter la modélisation des guidances comme indiqué dans le sujet.
\begin{figure}[H]
\centering
\includegraphics[width=15cm]{simplePDL_guidance.png}
\caption{Métamodèle simplePDL avec guidance}
\label{simplePDL_guidance}
\end{figure}
Nous avons ensuite dû choisir une manière de modéliser les ressources nécessaires au processus de développement.
Notre choix de modélisation sest porté sur : une Ressource (qui implémente ProcessElement) est demandée par le biai dune Request elle-même générée par une WorkDefinition.
On se retrouve donc avec un nouveau modèle Ecore de la forme :
\begin{figure}[H]
\centering
\includegraphics[width=15cm]{simplePDL_guidance_ressource.png}
\caption{Métamodèle simplePDL avec guidance et ressource}
\label{simplePDL_guidance_ressource}
\end{figure}
\newpage
Les relations Ressource-Request et Request-WorkDefinition sont déclarées en EOpposite pour pouvoir facilement passer dun fils à un parent et vice versa.
Le modèle SimplePDL est maintenant complet pour représenter des processus de développement.
Un exemple complet dutilisation de ce modèle serait :
\begin{figure}[H]
\centering
\includegraphics[width=15cm]{simplePDL_complet.png}
\caption{Métamodèle simplePDL complet}
\label{simplePDL_complet}
\end{figure}
\subsection{petriNet.ecore}
En se basant sur ce que lon a vu pour le modèle SimplePDL, nous avons créé un modèle Ecore permettant de modéliser les réseaux de pétri.
Nous avons modélisé un réseau comme étant composé de nœuds.
Ces nœuds peuvent être les places ou des transitions.
Ils sont donc nommés et reliés entre eux par des arcs.
Ses arcs ont un attribut entier nommé weight pour indiquer le poids de larc ainsi quun boolean outgoing pour indiquer si ce dernier est dirigé dune Place vers une Transition ou dune Transition vers une Place.
(Si outgoing est vrai, alors larc va de la transition vers la place.)
\begin{figure}[H]
\centering
\includegraphics[width=15cm]{petriNet_complet.png}
\caption{Métamodèle petriNet complet}
\label{petriNet_complet}
\end{figure}
\newpage
\section{Sémantique statique (avec OCL)}
Les contraintes OCL sont là pour vérifier des informations du modèle vis-à-vis du métamodèle.
Elles assurent certains points de cohérence et permettent d'éviter les ambiguïtés.
\subsection{simplePDL.ocl}
Pour les modèles SimplePDL, nous contraignons les noms des Process au format camelCase. De même les noms des WorkDefinitions et des Resources doivent posséder au minimum 2 caractères et ne pas être exclusivement constitués de chiffres ou d'underscores.
\begin{textcode}
context Process
inv validName('Invalid name: ' + self.name):
self.name.matches('[A-Za-z_][A-Za-z0-9_]*')
context WorkDefinition, Resource
inv nameMin2Char: self.name.matches('..+')
inv weirdName: not self.name.matches('([0-9]*|_*)')
\end{textcode}
Pour ne pas avoir d'ambiguité dans le modèle, les noms des WorkDefinitions et des Ressources doivent être uniques.
\begin{textcode}
context Process
inv uniqNamesWD: self.processElements
->select(pe | pe.oclIsKindOf(WorkDefinition))
->collect(pe | pe.oclAsType(WorkDefinition))
->forAll(w1, w2 | w1 = w2 or w1.name <> w2.name)
inv uniqNamesRes: self.processElements
->select(pe | pe.oclIsKindOf(Resource))
->collect(pe | pe.oclAsType(Resource))
->forAll(r1, r2 | r1 = r2 or r1.name <> r2.name)
\end{textcode}
Nous avons aussi contraint lutilisateur à utiliser les WorkSequence sur des WorkDefinition appartenant au même Process. Pour éviter des non-sens, les WorkSequence ne peuvent pas non plus avoir le même successeur et prédécesseur.
\begin{textcode}
context WorkSequence
inv successorAndPredecessorInSameProcess('Activities not in the same process : '
+ self.predecessor.name + ' in ' + self.predecessor.process().name+ ' and '
+ self.successor.name + ' in ' + self.successor.process().name):
self.process() = self.successor.process()
and self.process() = self.predecessor.process()
inv notReflexive: self.predecessor <> self.successor
\end{textcode}
Nous avons aussi ajouté des contraintes sur les quantités des Resource et Request.
En effet, cela na pas de sens davoir des Resources ou des Requests avec des quantités négatives. De plus, une Request ne peut pas être plus grande que le nombre initial de ressources. (Le nombre initial de ressources est le maximum puisquil ny a pas de création.)
\begin{textcode}
context Resource, Request
inv negativeQuantity: self.quantity > 0
context Request
inv greedy: self.quantity <= self.target.quantity
\end{textcode}
\newpage
\subsection{petriNet.ocl}
Les modèles PetriNet étant relativement similaires aux modèles SimplePDL, nous avons établi des contraintes OCL similaires.
Nous obligeons le Network et les Node à avoir des noms uniques mais également sensés.
\begin{textcode}
context Network
inv validName('Invalid name: ' + self.name):
self.name.matches('[A-Za-z_][A-Za-z0-9_]*')
inv uniqNamesNode: self.nodes
->forAll(n1, n2 | n1 = n2 or n1.name <> n2.name)
context Node
inv nameMin2Char: self.name.matches('..+')
inv weirdName: not self.name.matches('([0-9]*|_*)')
\end{textcode}
Le nombre de jetons des Place et le poids des Arc doivent évidemment être positifs.
\begin{textcode}
context Place
inv negativeQuantity: self.tokens >= 0
context Arc
inv negativeQuantity: self.weight >= 0
\end{textcode}
\newpage
\section{Eclipse Modeling Framework (EMF)}
Pour permettre une meilleur intégration de nos métamodèles dans notre environnement de developpement (sous Eclipse), nous pouvons créer des greffons nous permetttant de les intégrer dans d'autres projets, ainsi que des éditeurs arborescents nous permettant de mieux visualiser/éditer des modèles conformes à nos métamodèles Ecore.
Le code java de ces éditeurs arborescent est engendré par nos métamodèles Ecore, mais nous pouvons le modifier manuellement pour que ceux-ci conviennent parfaitement à nos critères.
Ces plugins seront déployés dans une Eclipse Application séparée de notre environnement de developpement principale pour ne pas mélanger métamodèles et modèles.
\subsection{plugin simplePDL}
\begin{figure}[H]
\centering
\includegraphics[width=15cm]{simplePDL_emf.png}
\caption{Éditeur arborecent d'un modèle simplePDL}
\label{simplePDL_EMF}
\end{figure}
\subsection{plugin petriNet}
\begin{figure}[H]
\centering
\includegraphics[width=15cm]{petriNet_emf.png}
\caption{Éditeur arborecent d'un modèle petriNet}
\label{petriNet_EMF}
\end{figure}
\newpage
\subsection{simplePDL $\rightarrow$ petriNet (avec Java)}
Maintenant que nous pouvons charger plus facilement nos métamodèles dans notre environnement de travail, il nous est aussi possible d'importer nos modèles dans un programme Java (grâce aux modules générés automatiquements par EMF). Ainsi en 200 lignes de code, nous pouvons convertir directement un modèles simplePDL en un modèle petriNet.
\section{Transformation de modèle à texte (avec Acceleo)}
Il nous est possible de transcrire nos modèles vers d'autres formats de fichiers pour nous permettre de les utiliser dans logiciels tierces, et ainsi de les modifier/visualiser plus aisaiment.
\subsection{simplePDL $\rightarrow$ html (toHTML.mtl)}
Nous pouvons dans un premier temps de transformer nos modèles simplePDL selon le langage de balisage HTML.
\begin{htmlcode}
<head><title>developpement</title></head>
<body>
<h1>Process "developpement"</h1>
<h2>Work definitions</h2>
<ul>
<li>Conception</li>
<li>
RedactionDoc requires Conception to be finished,
Conception to be started.
</li>
<li>Programmation requires Conception to be finished.</li>
<li>
RedactionTests requires Conception to be started,
Programmation to be finished.
</li>
</ul>
</body>
\end{htmlcode}
\subsection{simplePDL $\rightarrow$ dot (toDOT.mtl)}
Nous pouvons de même transformer nos modèles simplePDL selon le langage de description de graphe DOT.
\begin{textcode}
digraph "developpement" {
"Conception" -> "RedactionDoc" [arrowhead=vee label=finishToFinish]
"Conception" -> "RedactionDoc" [arrowhead=vee label=startToStart]
"Conception" -> "Programmation" [arrowhead=vee label=finishToStart]
"Conception" -> "RedactionTests" [arrowhead=vee label=startToStart]
"Programmation" -> "RedactionTests" [arrowhead=vee label=finishToFinish]
}
\end{textcode}
\newpage
\subsection{petriNet $\rightarrow$ tina (toTINA.mtl)}
Enfin, il nous est possible de transformer nos modèles petriNet selon le language de description de réseau de Petri TINA (format .net).
\begin{textcode}
net coolNetwork
pl debut (1)
pl fin (0)
tr debut2fin debut*1 -> fin*1
\end{textcode}
\section{Définition de syntaxes concrètes graphiques (avec Sirius)}
Tout comme lors de la création d'éditeurs arborescent spécifiques à nos métamodèles (cf EMF), il nous est possible de créer des éditeurs graphiques pour nos métamodèles. Cela nous donne accès à des outils graphiques permettant ainsi à un utilisateur non accoutumé à des outils complexes de créer et modifier des modèles (de processus ou de réseau de petri).
\subsection{simplePDL.odesign}
\begin{figure}[H]
\centering
\includegraphics[width=14cm]{simplePDL_sirius.png}
\caption{Éditeur graphique d'un modèle simplePDL}
\label{simplePDL_sirius}
\end{figure}
\subsection{petriNet.odesign}
\begin{figure}[H]
\centering
\includegraphics[width=14cm]{petriNet_sirius.png}
\caption{Éditeur graphique d'un modèle petriNet}
\label{petriNet_sirius}
\end{figure}
\newpage
\section{Définition de syntaxes concrètes textuelles (avec Xtext)}
Dans la continuité de la création d'outils pour manipuler et visualiser nos modèles, il nous est possible de définir une styntaxe textuelle associée à nos métamodèles.
\subsection{simplePDL.xtext}
Ainsi pour simplePDL, la syntaxe textuelle suivante permet de manipuler nos modèles facilement, sans passer par des outils graphiques parfois complexes.
\begin{textcode}
process Developpement {
res Crayon 10
res Papier 20
wd Conception
req Crayon 10
req Papier 5
wd RedactionTest
wd RedactionDoc
wd Programmation
ws f2s from Conception to Programmation
ws s2s from Conception to RedactionTest
ws s2s from Conception to RedactionDoc
ws f2f from Conception to RedactionDoc
ws f2f from Programmation to RedactionTest
}
\end{textcode}
\newpage
\section{Transformation de modèle à modèle (avec ATL)}
Finalement il nous est possible, tout comme lors de la transformation modèle à modèle via l'écriture d'un programme Java, de transformer un modèle selon un autre métamodèles via l'outil ATL.
\subsection{simplePDL $\rightarrow$ petriNet}
\begin{figure}[H]
\centering
\includegraphics[width=15cm]{transfo.png}
\caption{Modèle pour la transformation de modèle à modèle}
\label{transfo}
\end{figure}
Pour transformer une WorkDefinition dasn un réseau de Petri, nous créons 4 places (\_idle, \_running, \_started, \_finished) ainsi que 2 transitions (\_start, \_finish).
Pour transformer une WorkSequence, nous relions la place du predecesseur à la transition du successeur, par exemple dans le cas d'un linkType start2start nous relions un \_started à un \_start.
Pour transformer une Resource, nous créons simplement une place avec le bon nombre de tokens. Pour ce qui est des Requests d'une WorkDefinition nous relions le \_start et le \_finish de la WorkDefinition à la ressource avec les poids correspondants.
\newpage
\section{Logique Temporelle Linéaire (LTL)}
Dans l'optique d'une vérification de la terminaison et de la transformation correcte de notre modèle simplePDL en modèle petriNET, nous pouvons à partir du modèle simplePDL générer des propositions que nous demanderons par la suite à selte/tina de vérifier. \\
Pour vérifier la terminaison du processus, nous pouvons écrire:
\begin{textcode}
[] <> (WD1_finished /\ WD2_finished /\ WD3_finished);
\end{textcode}
Pour vérifier qu'une WorkDefinition ne soit que dans un seul état à la fois, nous pouvons écrire (via l'intermédiaire d'un xor):
\begin{textcode}
[] (((WD1_idle /\ -WD1_running /\ -WD1_finished)
\/ (-WD1_idle /\ WD1_running /\ -WD1_finished)
\/ (-WD1_idle /\ -WD1_running /\ WD1_finished))
/\ ((WD2_idle /\ -WD2_running /\ -WD2_finished)
\/ (-WD2_idle /\ WD2_running /\ -WD2_finished)
\/ (-WD2_idle /\ -WD2_running /\ WD2_finished))
/\ ((WD3_idle /\ -WD3_running /\ -WD3_finished)
\/ (-WD3_idle /\ WD3_running /\ -WD3_finished)
\/ (-WD3_idle /\ -WD3_running /\ WD3_finished)));
\end{textcode}
Pour vérifier qu'une WorkDefinition ne progresse que dans un seul sens, nous pouvons
\begin{textcode}
[] ((WD1_finished =>
[](-WD1_running /\ -WD1_idle /\ WD1_started))
/\ (WD2_finished => [](-WD2_running /\ -WD2_idle /\ WD2_started))
/\ (WD3_finished => [](-WD3_running /\ -WD3_idle /\ WD3_started)));
\end{textcode}
\end{document}