Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenrik Rentz-Reichert2013-09-17 07:44:21 +0000
committerHenrik Rentz-Reichert2013-09-17 08:35:53 +0000
commit2e8f485fd4ce200456b8445ae55fbab61ebfe09b (patch)
treea0e705ecd3a85cd1b353c146ac5d8e7c53789ded /examples
parent16e5714577bb356c2055da5f6d2f7c37777d723b (diff)
downloadorg.eclipse.etrice-2e8f485fd4ce200456b8445ae55fbab61ebfe09b.tar.gz
org.eclipse.etrice-2e8f485fd4ce200456b8445ae55fbab61ebfe09b.tar.xz
org.eclipse.etrice-2e8f485fd4ce200456b8445ae55fbab61ebfe09b.zip
[core.genmodel, generator.java] bug 417395: [generator.java] make SAPs available in optional actors
https://bugs.eclipse.org/417395 added also example and short documentation
Diffstat (limited to 'examples')
-rw-r--r--examples/org.eclipse.etrice.examples.dynamicactors9/.classpath8
-rw-r--r--examples/org.eclipse.etrice.examples.dynamicactors9/.gitignore3
-rw-r--r--examples/org.eclipse.etrice.examples.dynamicactors9/.project24
-rw-r--r--examples/org.eclipse.etrice.examples.dynamicactors9/build.properties2
-rw-r--r--examples/org.eclipse.etrice.examples.dynamicactors9/gen_DynAct9.launch19
-rw-r--r--examples/org.eclipse.etrice.examples.dynamicactors9/model/DynAct9.etmap9
-rw-r--r--examples/org.eclipse.etrice.examples.dynamicactors9/model/DynAct9.etphys25
-rw-r--r--examples/org.eclipse.etrice.examples.dynamicactors9/model/DynAct9.room121
-rw-r--r--examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.Container.structure142
-rw-r--r--examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.LogSys1.structure142
-rw-r--r--examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.PingPong.structure297
-rw-r--r--examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.PingPongTop.structure142
-rw-r--r--examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.Receiver.structure36
-rw-r--r--examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.Sender.behavior135
-rw-r--r--examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.Sender.structure36
-rw-r--r--examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.SubSysClass1.structure290
-rw-r--r--examples/org.eclipse.etrice.examples.dynamicactors9/run_DynAct9.launch11
-rw-r--r--examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/Container.java204
-rw-r--r--examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/Node_nodeRef1_subSysRef1.java95
-rw-r--r--examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/Node_nodeRef1_subSysRef1Runner.java26
-rw-r--r--examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/PingPong.java79
-rw-r--r--examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/PingPongFactory.java26
-rw-r--r--examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/PingPongInterface.java28
-rw-r--r--examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/PingPongProtocol.java185
-rw-r--r--examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/PingPongReplicatedInterface.java28
-rw-r--r--examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/PingPongTop.java77
-rw-r--r--examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/Receiver.java275
-rw-r--r--examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/Sender.java238
-rw-r--r--examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/readme.txt4
-rw-r--r--examples/org.eclipse.etrice.examples.dynamicactors9/tmp/log/subSysRef1_Async.seq31
-rw-r--r--examples/org.eclipse.etrice.examples.dynamicactors9/tmp/log/subSysRef1_Sync.seq1
31 files changed, 2739 insertions, 0 deletions
diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/.classpath b/examples/org.eclipse.etrice.examples.dynamicactors9/.classpath
new file mode 100644
index 000000000..80d796d3b
--- /dev/null
+++ b/examples/org.eclipse.etrice.examples.dynamicactors9/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src-gen"/>
+ <classpathentry kind="src" path="/org.eclipse.etrice.runtime.java"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/org.eclipse.etrice.modellib.java"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/.gitignore b/examples/org.eclipse.etrice.examples.dynamicactors9/.gitignore
new file mode 100644
index 000000000..9aaf2fa20
--- /dev/null
+++ b/examples/org.eclipse.etrice.examples.dynamicactors9/.gitignore
@@ -0,0 +1,3 @@
+bin
+src-gen-info
+*.obj
diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/.project b/examples/org.eclipse.etrice.examples.dynamicactors9/.project
new file mode 100644
index 000000000..c0c255813
--- /dev/null
+++ b/examples/org.eclipse.etrice.examples.dynamicactors9/.project
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.etrice.examples.dynamicactors9</name>
+ <comment></comment>
+ <projects>
+ <project>org.eclipse.etrice.runtime.java</project>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ </natures>
+</projectDescription>
diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/build.properties b/examples/org.eclipse.etrice.examples.dynamicactors9/build.properties
new file mode 100644
index 000000000..83655578d
--- /dev/null
+++ b/examples/org.eclipse.etrice.examples.dynamicactors9/build.properties
@@ -0,0 +1,2 @@
+source.. = src/,\
+src-gen/
diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/gen_DynAct9.launch b/examples/org.eclipse.etrice.examples.dynamicactors9/gen_DynAct9.launch
new file mode 100644
index 000000000..f358fe28e
--- /dev/null
+++ b/examples/org.eclipse.etrice.examples.dynamicactors9/gen_DynAct9.launch
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.etrice.generator.launch.java.launchConfigurationType">
+<booleanAttribute key="Debug" value="false"/>
+<booleanAttribute key="GenDocumentation" value="false"/>
+<booleanAttribute key="GenInstanceDiagram" value="false"/>
+<stringAttribute key="GenModelPath" value="${workspace_loc:/PingPong}"/>
+<booleanAttribute key="Lib" value="false"/>
+<booleanAttribute key="MSC" value="true"/>
+<listAttribute key="ModelFiles">
+<listEntry value="${workspace_loc:/org.eclipse.etrice.examples.dynamicactors9/model/DynAct9.etmap}"/>
+</listAttribute>
+<booleanAttribute key="Persist" value="false"/>
+<booleanAttribute key="SaveGenModel" value="false"/>
+<booleanAttribute key="Verbose" value="false"/>
+<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${workspace}"/>
+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
+</listAttribute>
+</launchConfiguration>
diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/model/DynAct9.etmap b/examples/org.eclipse.etrice.examples.dynamicactors9/model/DynAct9.etmap
new file mode 100644
index 000000000..eb58cb56a
--- /dev/null
+++ b/examples/org.eclipse.etrice.examples.dynamicactors9/model/DynAct9.etmap
@@ -0,0 +1,9 @@
+MappingModel org.eclipse.etrice.examples.dynamicactors9 {
+ import org.eclipse.etrice.examples.dynamicactors9.* from "DynAct9.room"
+ import org.eclipse.etrice.examples.dynamicactors9.* from "DynAct9.etphys"
+ Mapping LogSys1 -> PhysSys1 {
+ SubSystemMapping subSysRef1 -> nodeRef1 {
+ ThreadMapping defaultThread -> PhysicalThread1
+ }
+ }
+}
diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/model/DynAct9.etphys b/examples/org.eclipse.etrice.examples.dynamicactors9/model/DynAct9.etphys
new file mode 100644
index 000000000..a5dcb7749
--- /dev/null
+++ b/examples/org.eclipse.etrice.examples.dynamicactors9/model/DynAct9.etphys
@@ -0,0 +1,25 @@
+PhysicalModel org.eclipse.etrice.examples.dynamicactors9 {
+
+ PhysicalSystem PhysSys1 {
+ NodeRef nodeRef1 : NodeClass1
+ }
+
+ NodeClass NodeClass1 {
+ runtime = RuntimeClass1
+ priomin = -10
+ priomax = 10
+
+ DefaultThread PhysicalThread1 {
+ execmode = mixed
+ interval = 100ms
+ prio = 0
+ stacksize = 1024
+ msgblocksize = 32
+ msgpoolsize = 10
+ }
+ }
+
+ RuntimeClass RuntimeClass1 {
+ model = multiThreaded
+ }
+}
diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/model/DynAct9.room b/examples/org.eclipse.etrice.examples.dynamicactors9/model/DynAct9.room
new file mode 100644
index 000000000..ef67cf8e9
--- /dev/null
+++ b/examples/org.eclipse.etrice.examples.dynamicactors9/model/DynAct9.room
@@ -0,0 +1,121 @@
+RoomModel org.eclipse.etrice.examples.dynamicactors9 {
+
+ import room.basic.service.timing.* from "../../org.eclipse.etrice.modellib.java/model/TimingService.room"
+
+ LogicalSystem LogSys1 {
+ SubSystemRef subSysRef1: SubSysClass1
+ }
+
+ SubSystemClass SubSysClass1 {
+ ActorRef actorRef1: PingPongTop
+ ActorRef timingService: ATimingService
+ LayerConnection ref actorRef1 satisfied_by timingService.timer
+ LogicalThread defaultThread
+ }
+
+ ActorClass PingPongTop {
+ Structure {
+ ActorRef container: Container
+ }
+ Behavior { }
+ }
+
+ ActorClass Container {
+ Structure {
+ optional ActorRef pp: PingPong
+ }
+ Behavior {
+ StateMachine {
+ Transition init: initial -> Running { }
+ State Running {
+ entry {
+ "pp.createOptionalActor(\"PingPong\", getThread());"
+ }
+ }
+ }
+ }
+ }
+
+ ActorClass PingPong {
+ Structure {
+ ActorRef receiver: Receiver
+ ActorRef sender: Sender
+ Binding receiver.sender and sender.receiver
+ }
+ Behavior { }
+ }
+ ActorClass Sender {
+ Interface {
+ conjugated Port receiver: PingPongProtocol
+ }
+ Structure {
+ external Port receiver
+ }
+ Behavior {
+ StateMachine {
+ Transition init: initial -> SendingPing { }
+ Transition tr0: SendingPing -> ReceivedPong {
+ triggers {
+ <pong: receiver>
+ }
+ }
+ State SendingPing {
+ entry {
+ "receiver.ping();"
+ }
+ }
+ State ReceivedPong {
+ entry {
+ "System.out.println(\"Done, enter \'quit\' to exit\");"
+ }
+ }
+ }
+ }
+ }
+
+ ActorClass Receiver {
+ Interface {
+ Port sender: PingPongProtocol
+ }
+ Structure {
+ external Port sender
+ SAP timing: PTimer
+ }
+ Behavior {
+ StateMachine {
+ Transition init: initial -> WaitingForPing { }
+ Transition tr0: WaitingForPing -> WaitingForAWhile {
+ triggers {
+ <ping: sender>
+ }
+ }
+ Transition tr1: WaitingForAWhile -> SentPong {
+ triggers {
+ <timeout: timing>
+ }
+ }
+ State WaitingForPing
+ State WaitingForAWhile {
+ entry {
+ "timing.startTimeout(1000);"
+ }
+ }
+ State SentPong {
+ entry {
+ "sender.pong();"
+ }
+ }
+ }
+ }
+ }
+
+ ProtocolClass PingPongProtocol {
+ incoming {
+ Message ping()
+ }
+ outgoing {
+ Message pong()
+ }
+ }
+
+} \ No newline at end of file
diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.Container.structure b/examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.Container.structure
new file mode 100644
index 000000000..143c09c31
--- /dev/null
+++ b/examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.Container.structure
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="ASCII"?>
+<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.structure" name="Structure of Container" pictogramLinks="//@link //@children.0/@link //@children.0/@children.0/@link" verticalGridUnit="10" version="0.10.0">
+ <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
+ <link>
+ <businessObjects href="../DynAct9.room#ActorClass:Container"/>
+ </link>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="cls"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="880" height="580" x="40" y="40">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="4" transparency="0.5" width="800" height="500" x="40" y="40"/>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="4" filled="false" transparency="0.0" width="800" height="500" x="40" y="40"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../DynAct9.room#ActorClass:Container"/>
+ </link>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="ref"/>
+ <properties key="actorref_version" value="2"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="240" height="140" x="320" y="160">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="180" height="80" x="33" y="27">
+ <properties key="actorref_graphic_element" value="replborder"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="180" height="80" x="30" y="30">
+ <properties key="actorref_graphic_element" value="mainborder"/>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="true" transparency="0.0" width="20" height="10" x="150" y="50">
+ <properties key="actorref_graphic_element" value="substructure"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="true" transparency="0.0" width="20" height="10" x="145" y="65">
+ <properties key="actorref_graphic_element" value="substructure"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="true" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points y="15"/>
+ <points x="15"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="true" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points y="30"/>
+ <points x="30"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="true" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points y="45"/>
+ <points x="45"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="true" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points y="60"/>
+ <points x="60"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="true" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points y="75"/>
+ <points x="75"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="true" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="10" y="80"/>
+ <points x="90"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="true" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="25" y="80"/>
+ <points x="105"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="true" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="40" y="80"/>
+ <points x="120"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="true" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="55" y="80"/>
+ <points x="135"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="true" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="70" y="80"/>
+ <points x="150"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="true" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="85" y="80"/>
+ <points x="165"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="true" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="100" y="80"/>
+ <points x="180"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="true" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="115" y="80"/>
+ <points x="180" y="15"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="true" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="130" y="80"/>
+ <points x="180" y="30"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="true" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="145" y="80"/>
+ <points x="180" y="45"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="true" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="160" y="80"/>
+ <points x="180" y="60"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="true" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="175" y="80"/>
+ <points x="180" y="75"/>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="25" height="25" x="185" y="30">
+ <properties key="actorref_graphic_element" value="sizeframe"/>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../DynAct9.room#ActorRef:Container$pp"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.0/@graphicsAlgorithm/@graphicsAlgorithmChildren.1">
+ <properties key="actorref_graphic_element" value="layerconn_anchor"/>
+ </anchors>
+ <children visible="true">
+ <properties key="actorref_graphic_element" value="name_shape"/>
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="180" height="80" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="pp&#xA;(PingPong)"/>
+ </children>
+ <children>
+ <properties key="actorref_graphic_element" value="size_shape"/>
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="25" height="25" x="185" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="*"/>
+ </children>
+ </children>
+ </children>
+ <colors red="227" green="238" blue="249"/>
+ <colors red="255" green="255" blue="255"/>
+ <colors/>
+ <colors red="200" green="200" blue="200"/>
+ <fonts name="Arial" size="8"/>
+</pi:Diagram>
diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.LogSys1.structure b/examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.LogSys1.structure
new file mode 100644
index 000000000..2d3f498c9
--- /dev/null
+++ b/examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.LogSys1.structure
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="ASCII"?>
+<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.structure" name="Structure of LogSys1" pictogramLinks="//@link //@children.0/@link //@children.0/@children.0/@link" verticalGridUnit="10" version="0.10.0">
+ <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
+ <link>
+ <businessObjects href="../DynAct9.room#LogicalSystem:LogSys1"/>
+ </link>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="cls"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="880" height="580" x="40" y="40">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="4" transparency="0.5" width="800" height="500" x="40" y="40"/>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="4" filled="false" transparency="0.0" width="800" height="500" x="40" y="40"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../DynAct9.room#LogicalSystem:LogSys1"/>
+ </link>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="ref"/>
+ <properties key="actorref_version" value="2"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="240" height="140" x="320" y="160">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="180" height="80" x="33" y="27">
+ <properties key="actorref_graphic_element" value="replborder"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="180" height="80" x="30" y="30">
+ <properties key="actorref_graphic_element" value="mainborder"/>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="true" transparency="0.0" width="20" height="10" x="150" y="50">
+ <properties key="actorref_graphic_element" value="substructure"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="true" transparency="0.0" width="20" height="10" x="145" y="65">
+ <properties key="actorref_graphic_element" value="substructure"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points y="15"/>
+ <points x="15"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points y="30"/>
+ <points x="30"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points y="45"/>
+ <points x="45"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points y="60"/>
+ <points x="60"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points y="75"/>
+ <points x="75"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="10" y="80"/>
+ <points x="90"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="25" y="80"/>
+ <points x="105"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="40" y="80"/>
+ <points x="120"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="55" y="80"/>
+ <points x="135"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="70" y="80"/>
+ <points x="150"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="85" y="80"/>
+ <points x="165"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="100" y="80"/>
+ <points x="180"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="115" y="80"/>
+ <points x="180" y="15"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="130" y="80"/>
+ <points x="180" y="30"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="145" y="80"/>
+ <points x="180" y="45"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="160" y="80"/>
+ <points x="180" y="60"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="175" y="80"/>
+ <points x="180" y="75"/>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="25" height="25" x="185" y="30">
+ <properties key="actorref_graphic_element" value="sizeframe"/>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../DynAct9.room#SubSystemRef:LogSys1$subSysRef1"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.0/@graphicsAlgorithm/@graphicsAlgorithmChildren.1">
+ <properties key="actorref_graphic_element" value="layerconn_anchor"/>
+ </anchors>
+ <children visible="true">
+ <properties key="actorref_graphic_element" value="name_shape"/>
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="180" height="80" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="subSysRef1&#xA;(SubSysClass1)"/>
+ </children>
+ <children>
+ <properties key="actorref_graphic_element" value="size_shape"/>
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="25" height="25" x="185" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value=""/>
+ </children>
+ </children>
+ </children>
+ <colors red="227" green="238" blue="249"/>
+ <colors red="255" green="255" blue="255"/>
+ <colors/>
+ <colors red="200" green="200" blue="200"/>
+ <fonts name="Arial" size="8"/>
+</pi:Diagram>
diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.PingPong.structure b/examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.PingPong.structure
new file mode 100644
index 000000000..f5f796280
--- /dev/null
+++ b/examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.PingPong.structure
@@ -0,0 +1,297 @@
+<?xml version="1.0" encoding="ASCII"?>
+<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.structure" name="Structure of PingPong" pictogramLinks="//@link //@children.0/@link //@children.0/@children.0/@link //@children.0/@children.1/@link //@children.0/@children.1/@children.2/@link //@children.0/@children.0/@children.2/@link //@connections.0/@link" verticalGridUnit="10" version="0.10.0">
+ <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
+ <link>
+ <businessObjects href="../DynAct9.room#ActorClass:PingPong"/>
+ </link>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="cls"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="880" height="580" x="40" y="40">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="4" transparency="0.5" width="800" height="500" x="40" y="40"/>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="4" filled="false" transparency="0.0" width="800" height="500" x="40" y="40"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../DynAct9.room#ActorClass:PingPong"/>
+ </link>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="ref"/>
+ <properties key="actorref_version" value="2"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="240" height="140" x="482" y="215">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="180" height="80" x="33" y="27">
+ <properties key="actorref_graphic_element" value="replborder"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="180" height="80" x="30" y="30">
+ <properties key="actorref_graphic_element" value="mainborder"/>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="20" height="10" x="150" y="50">
+ <properties key="actorref_graphic_element" value="substructure"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="20" height="10" x="145" y="65">
+ <properties key="actorref_graphic_element" value="substructure"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points y="15"/>
+ <points x="15"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points y="30"/>
+ <points x="30"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points y="45"/>
+ <points x="45"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points y="60"/>
+ <points x="60"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points y="75"/>
+ <points x="75"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="10" y="80"/>
+ <points x="90"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="25" y="80"/>
+ <points x="105"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="40" y="80"/>
+ <points x="120"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="55" y="80"/>
+ <points x="135"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="70" y="80"/>
+ <points x="150"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="85" y="80"/>
+ <points x="165"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="100" y="80"/>
+ <points x="180"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="115" y="80"/>
+ <points x="180" y="15"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="130" y="80"/>
+ <points x="180" y="30"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="145" y="80"/>
+ <points x="180" y="45"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="160" y="80"/>
+ <points x="180" y="60"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="175" y="80"/>
+ <points x="180" y="75"/>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="25" height="25" x="185" y="30">
+ <properties key="actorref_graphic_element" value="sizeframe"/>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../DynAct9.room#ActorRef:PingPong$receiver"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.0/@graphicsAlgorithm/@graphicsAlgorithmChildren.1">
+ <properties key="actorref_graphic_element" value="layerconn_anchor"/>
+ </anchors>
+ <children visible="true">
+ <properties key="actorref_graphic_element" value="name_shape"/>
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="180" height="80" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="receiver&#xA;(Receiver)"/>
+ </children>
+ <children>
+ <properties key="actorref_graphic_element" value="size_shape"/>
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="25" height="25" x="185" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="1"/>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="port"/>
+ <properties key="item-kind" value=""/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" y="37">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../DynAct9.room#Port:Receiver$sender"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.0" referencedGraphicsAlgorithm="//@children.0/@children.0/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="6" font="//@fonts.0" value="sender"/>
+ </children>
+ </children>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="ref"/>
+ <properties key="actorref_version" value="2"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="240" height="140" x="135" y="215">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="180" height="80" x="33" y="27">
+ <properties key="actorref_graphic_element" value="replborder"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="180" height="80" x="30" y="30">
+ <properties key="actorref_graphic_element" value="mainborder"/>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="20" height="10" x="150" y="50">
+ <properties key="actorref_graphic_element" value="substructure"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="20" height="10" x="145" y="65">
+ <properties key="actorref_graphic_element" value="substructure"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points y="15"/>
+ <points x="15"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points y="30"/>
+ <points x="30"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points y="45"/>
+ <points x="45"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points y="60"/>
+ <points x="60"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points y="75"/>
+ <points x="75"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="10" y="80"/>
+ <points x="90"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="25" y="80"/>
+ <points x="105"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="40" y="80"/>
+ <points x="120"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="55" y="80"/>
+ <points x="135"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="70" y="80"/>
+ <points x="150"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="85" y="80"/>
+ <points x="165"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="100" y="80"/>
+ <points x="180"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="115" y="80"/>
+ <points x="180" y="15"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="130" y="80"/>
+ <points x="180" y="30"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="145" y="80"/>
+ <points x="180" y="45"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="160" y="80"/>
+ <points x="180" y="60"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="175" y="80"/>
+ <points x="180" y="75"/>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="25" height="25" x="185" y="30">
+ <properties key="actorref_graphic_element" value="sizeframe"/>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../DynAct9.room#ActorRef:PingPong$sender"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.1">
+ <properties key="actorref_graphic_element" value="layerconn_anchor"/>
+ </anchors>
+ <children visible="true">
+ <properties key="actorref_graphic_element" value="name_shape"/>
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="180" height="80" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="sender&#xA;(Sender)"/>
+ </children>
+ <children>
+ <properties key="actorref_graphic_element" value="size_shape"/>
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="25" height="25" x="185" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="1"/>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="port"/>
+ <properties key="item-kind" value="C"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="180" y="38">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../DynAct9.room#Port:Sender$receiver"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.0" referencedGraphicsAlgorithm="//@children.0/@children.1/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="6" font="//@fonts.0" value="receiver"/>
+ </children>
+ </children>
+ </children>
+ </children>
+ <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.0/@children.2/@anchors.0" end="//@children.0/@children.1/@children.2/@anchors.0">
+ <properties key="obj-type" value="bind"/>
+ <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
+ <link>
+ <businessObjects href="../DynAct9.room#Binding:PingPong$sender!receiver-receiver!sender"/>
+ </link>
+ </connections>
+ <colors red="227" green="238" blue="249"/>
+ <colors red="255" green="255" blue="255"/>
+ <colors/>
+ <colors red="200" green="200" blue="200"/>
+ <fonts name="Arial" size="8"/>
+</pi:Diagram>
diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.PingPongTop.structure b/examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.PingPongTop.structure
new file mode 100644
index 000000000..41a6ffd9f
--- /dev/null
+++ b/examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.PingPongTop.structure
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="ASCII"?>
+<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.structure" name="Structure of PingPongTop" pictogramLinks="//@link //@children.0/@link //@children.0/@children.0/@link" verticalGridUnit="10" version="0.10.0">
+ <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
+ <link>
+ <businessObjects href="../DynAct9.room#ActorClass:PingPongTop"/>
+ </link>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="cls"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="880" height="580" x="40" y="40">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="4" transparency="0.5" width="800" height="500" x="40" y="40"/>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="4" filled="false" transparency="0.0" width="800" height="500" x="40" y="40"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../DynAct9.room#ActorClass:PingPongTop"/>
+ </link>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="ref"/>
+ <properties key="actorref_version" value="2"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="240" height="140" x="320" y="160">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="180" height="80" x="33" y="27">
+ <properties key="actorref_graphic_element" value="replborder"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="180" height="80" x="30" y="30">
+ <properties key="actorref_graphic_element" value="mainborder"/>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="true" transparency="0.0" width="20" height="10" x="150" y="50">
+ <properties key="actorref_graphic_element" value="substructure"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="true" transparency="0.0" width="20" height="10" x="145" y="65">
+ <properties key="actorref_graphic_element" value="substructure"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points y="15"/>
+ <points x="15"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points y="30"/>
+ <points x="30"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points y="45"/>
+ <points x="45"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points y="60"/>
+ <points x="60"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points y="75"/>
+ <points x="75"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="10" y="80"/>
+ <points x="90"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="25" y="80"/>
+ <points x="105"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="40" y="80"/>
+ <points x="120"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="55" y="80"/>
+ <points x="135"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="70" y="80"/>
+ <points x="150"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="85" y="80"/>
+ <points x="165"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="100" y="80"/>
+ <points x="180"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="115" y="80"/>
+ <points x="180" y="15"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="130" y="80"/>
+ <points x="180" y="30"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="145" y="80"/>
+ <points x="180" y="45"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="160" y="80"/>
+ <points x="180" y="60"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="175" y="80"/>
+ <points x="180" y="75"/>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="25" height="25" x="185" y="30">
+ <properties key="actorref_graphic_element" value="sizeframe"/>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../DynAct9.room#ActorRef:PingPongTop$container"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.0/@graphicsAlgorithm/@graphicsAlgorithmChildren.1">
+ <properties key="actorref_graphic_element" value="layerconn_anchor"/>
+ </anchors>
+ <children visible="true">
+ <properties key="actorref_graphic_element" value="name_shape"/>
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="180" height="80" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="container&#xA;(Container)"/>
+ </children>
+ <children>
+ <properties key="actorref_graphic_element" value="size_shape"/>
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="25" height="25" x="185" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="1"/>
+ </children>
+ </children>
+ </children>
+ <colors red="227" green="238" blue="249"/>
+ <colors red="255" green="255" blue="255"/>
+ <colors/>
+ <colors red="200" green="200" blue="200"/>
+ <fonts name="Arial" size="8"/>
+</pi:Diagram>
diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.Receiver.structure b/examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.Receiver.structure
new file mode 100644
index 000000000..279dbd7b8
--- /dev/null
+++ b/examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.Receiver.structure
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="ASCII"?>
+<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.structure" name="Structure of Receiver" pictogramLinks="//@link //@children.0/@link //@children.0/@children.0/@link" verticalGridUnit="10" version="0.10.0">
+ <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
+ <link>
+ <businessObjects href="../DynAct9.room#ActorClass:Receiver"/>
+ </link>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="cls"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="880" height="580" x="40" y="40">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="4" transparency="0.5" width="800" height="500" x="40" y="40"/>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="4" filled="false" transparency="0.0" width="800" height="500" x="40" y="40"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../DynAct9.room#ActorClass:Receiver"/>
+ </link>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="port"/>
+ <properties key="item-kind" value=""/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="80" height="80" y="234">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.2" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="40" height="40" x="20" y="20"/>
+ <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.1" lineWidth="2" transparency="0.0" width="20" height="20" x="30" y="30"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../DynAct9.room#Port:Receiver$sender"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.0/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="80" height="20" y="60" font="//@fonts.0" value="sender"/>
+ </children>
+ </children>
+ </children>
+ <colors red="227" green="238" blue="249"/>
+ <colors red="255" green="255" blue="255"/>
+ <colors/>
+ <fonts name="Arial" size="8"/>
+</pi:Diagram>
diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.Sender.behavior b/examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.Sender.behavior
new file mode 100644
index 000000000..95f468f89
--- /dev/null
+++ b/examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.Sender.behavior
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="ASCII"?>
+<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.behavior" name="Behavior of Sender" pictogramLinks="//@link //@children.0/@link //@children.0/@children.1/@link //@children.0/@children.2/@link //@children.0/@children.3/@link //@connections.0/@link //@connections.1/@link" verticalGridUnit="10" version="0.10.0">
+ <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
+ <link>
+ <businessObjects href="../DynAct9.room#ActorClass:Sender"/>
+ </link>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="sg"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="880" height="580" x="40" y="40">
+ <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="4" transparency="0.5" width="800" height="500" x="40" y="40" cornerHeight="20" cornerWidth="20"/>
+ <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="4" filled="false" transparency="0.0" width="800" height="500" x="40" y="40" cornerHeight="20" cornerWidth="20"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../DynAct9.room#StateGraph:Sender$sg"/>
+ </link>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="800" height="80" y="40" font="//@fonts.1" horizontalAlignment="ALIGNMENT_RIGHT" verticalAlignment="ALIGNMENT_TOP" value="/"/>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="trp"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="40" height="40" x="100" y="100">
+ <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="20" height="20" x="10" y="10"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../DynAct9.room#StateGraph:Sender$sg"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.0" referencedGraphicsAlgorithm="//@children.0/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="40" height="20" y="10" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="I"/>
+ </children>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="state"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="129" height="90" x="202" y="120">
+ <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="69" height="30" x="30" y="30" cornerHeight="20" cornerWidth="20">
+ <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="15" height="8" x="44" y="3" cornerHeight="5" cornerWidth="5"/>
+ <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="true" transparency="0.0" x="34" y="24">
+ <points x="-3" y="-3"/>
+ <points x="-3" y="3"/>
+ <points x="-11" y="3"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="34" y="24">
+ <points x="3" y="-3"/>
+ <points x="3" y="3"/>
+ <points x="11" y="3"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="34" y="24">
+ <points x="-2" y="-3"/>
+ <points x="-2" y="3"/>
+ <points x="2" y="3"/>
+ <points x="2" y="-3"/>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../DynAct9.room#SimpleState:Sender$SendingPing"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.1" incomingConnections="//@connections.0" referencedGraphicsAlgorithm="//@children.0/@children.2/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="69" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="SendingPing"/>
+ </children>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="state"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="139" height="90" x="463" y="120">
+ <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="79" height="30" x="30" y="30" cornerHeight="20" cornerWidth="20">
+ <graphicsAlgorithmChildren xsi:type="al:RoundedRectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="15" height="8" x="54" y="3" cornerHeight="5" cornerWidth="5"/>
+ <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="39" y="24">
+ <points x="-3" y="-3"/>
+ <points x="-3" y="3"/>
+ <points x="-11" y="3"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="39" y="24">
+ <points x="3" y="-3"/>
+ <points x="3" y="3"/>
+ <points x="11" y="3"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polygon" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" x="39" y="24">
+ <points x="-2" y="-3"/>
+ <points x="-2" y="3"/>
+ <points x="2" y="3"/>
+ <points x="2" y="-3"/>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../DynAct9.room#SimpleState:Sender$ReceivedPong"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.1" referencedGraphicsAlgorithm="//@children.0/@children.3/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.2" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="79" height="30" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="ReceivedPong"/>
+ </children>
+ </children>
+ </children>
+ <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.1/@anchors.0" end="//@children.0/@children.2/@anchors.0">
+ <properties key="obj-type" value="trans"/>
+ <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
+ <link>
+ <businessObjects href="../DynAct9.room#InitialTransition:Sender$initial"/>
+ </link>
+ <connectionDecorators visible="true" locationRelative="true" location="1.0">
+ <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.1" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
+ <points x="-15" y="5"/>
+ <points/>
+ <points x="-15" y="-5"/>
+ </graphicsAlgorithm>
+ </connectionDecorators>
+ <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="init"/>
+ </connectionDecorators>
+ </connections>
+ <connections xsi:type="pi:FreeFormConnection" visible="true" active="true" start="//@children.0/@children.2/@anchors.0" end="//@children.0/@children.3/@anchors.0">
+ <properties key="obj-type" value="trans"/>
+ <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0"/>
+ <link>
+ <businessObjects href="../DynAct9.room#TriggeredTransition:Sender$tr0"/>
+ </link>
+ <connectionDecorators visible="true" locationRelative="true" location="1.0">
+ <graphicsAlgorithm xsi:type="al:Polygon" background="//@colors.1" foreground="//@colors.2" lineWidth="1" filled="true" transparency="0.0">
+ <points x="-15" y="5"/>
+ <points/>
+ <points x="-15" y="-5"/>
+ </graphicsAlgorithm>
+ </connectionDecorators>
+ <connectionDecorators visible="true" active="true" locationRelative="true" location="0.5">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" x="10" font="//@fonts.0" value="tr0: &lt;pong:receiver>"/>
+ </connectionDecorators>
+ </connections>
+ <colors red="227" green="238" blue="249"/>
+ <colors red="255" green="255" blue="255"/>
+ <colors/>
+ <colors red="200" green="200" blue="200"/>
+ <fonts name="Arial" size="8"/>
+ <fonts name="Arial" size="9" bold="true"/>
+</pi:Diagram>
diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.Sender.structure b/examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.Sender.structure
new file mode 100644
index 000000000..4a0555040
--- /dev/null
+++ b/examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.Sender.structure
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="ASCII"?>
+<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.structure" name="Structure of Sender" pictogramLinks="//@link //@children.0/@link //@children.0/@children.0/@link" verticalGridUnit="10" version="0.10.0">
+ <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
+ <link>
+ <businessObjects href="../DynAct9.room#ActorClass:Sender"/>
+ </link>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="cls"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="880" height="580" x="40" y="40">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="4" transparency="0.5" width="800" height="500" x="40" y="40"/>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="4" filled="false" transparency="0.0" width="800" height="500" x="40" y="40"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../DynAct9.room#ActorClass:Sender"/>
+ </link>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="port"/>
+ <properties key="item-kind" value="C"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="80" height="80" x="800" y="243">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="40" height="40" x="20" y="20"/>
+ <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.2" foreground="//@colors.2" lineWidth="2" transparency="0.0" width="20" height="20" x="30" y="30"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../DynAct9.room#Port:Sender$receiver"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.0/@graphicsAlgorithm/@graphicsAlgorithmChildren.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="80" height="20" y="60" font="//@fonts.0" horizontalAlignment="ALIGNMENT_RIGHT" value="receiver"/>
+ </children>
+ </children>
+ </children>
+ <colors red="227" green="238" blue="249"/>
+ <colors red="255" green="255" blue="255"/>
+ <colors/>
+ <fonts name="Arial" size="8"/>
+</pi:Diagram>
diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.SubSysClass1.structure b/examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.SubSysClass1.structure
new file mode 100644
index 000000000..b23c2f5ac
--- /dev/null
+++ b/examples/org.eclipse.etrice.examples.dynamicactors9/model/diagrams/org.eclipse.etrice.examples.dynamicactors9.SubSysClass1.structure
@@ -0,0 +1,290 @@
+<?xml version="1.0" encoding="ASCII"?>
+<pi:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:al="http://eclipse.org/graphiti/mm/algorithms" xmlns:pi="http://eclipse.org/graphiti/mm/pictograms" visible="true" gridUnit="10" diagramTypeId="room.structure" name="Structure of SubSysClass1" pictogramLinks="//@link //@children.0/@link //@children.0/@children.0/@link //@children.0/@children.1/@link //@children.0/@children.1/@children.2/@link //@connections.0/@link" verticalGridUnit="10" version="0.10.0">
+ <graphicsAlgorithm xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.0" lineWidth="1" transparency="0.0" width="1000" height="1000"/>
+ <link>
+ <businessObjects href="../DynAct9.room#SubSystemClass:SubSysClass1"/>
+ </link>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="cls"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="880" height="580" x="40" y="40">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.1" foreground="//@colors.2" lineWidth="4" transparency="0.5" width="800" height="500" x="40" y="40"/>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="4" filled="false" transparency="0.0" width="800" height="500" x="40" y="40"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../DynAct9.room#SubSystemClass:SubSysClass1"/>
+ </link>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="ref"/>
+ <properties key="actorref_version" value="2"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="240" height="140" x="216" y="133">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="180" height="80" x="33" y="27">
+ <properties key="actorref_graphic_element" value="replborder"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="180" height="80" x="30" y="30">
+ <properties key="actorref_graphic_element" value="mainborder"/>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="true" transparency="0.0" width="20" height="10" x="150" y="50">
+ <properties key="actorref_graphic_element" value="substructure"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="true" transparency="0.0" width="20" height="10" x="145" y="65">
+ <properties key="actorref_graphic_element" value="substructure"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points y="15"/>
+ <points x="15"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points y="30"/>
+ <points x="30"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points y="45"/>
+ <points x="45"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points y="60"/>
+ <points x="60"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points y="75"/>
+ <points x="75"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="10" y="80"/>
+ <points x="90"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="25" y="80"/>
+ <points x="105"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="40" y="80"/>
+ <points x="120"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="55" y="80"/>
+ <points x="135"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="70" y="80"/>
+ <points x="150"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="85" y="80"/>
+ <points x="165"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="100" y="80"/>
+ <points x="180"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="115" y="80"/>
+ <points x="180" y="15"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="130" y="80"/>
+ <points x="180" y="30"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="145" y="80"/>
+ <points x="180" y="45"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="160" y="80"/>
+ <points x="180" y="60"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="175" y="80"/>
+ <points x="180" y="75"/>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="25" height="25" x="185" y="30">
+ <properties key="actorref_graphic_element" value="sizeframe"/>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../DynAct9.room#ActorRef:SubSysClass1$actorRef1"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" outgoingConnections="//@connections.0" referencedGraphicsAlgorithm="//@children.0/@children.0/@graphicsAlgorithm/@graphicsAlgorithmChildren.1">
+ <properties key="actorref_graphic_element" value="layerconn_anchor"/>
+ </anchors>
+ <children visible="true">
+ <properties key="actorref_graphic_element" value="name_shape"/>
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="180" height="80" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="actorRef1&#xA;(PingPongTop)"/>
+ </children>
+ <children>
+ <properties key="actorref_graphic_element" value="size_shape"/>
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="25" height="25" x="185" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="1"/>
+ </children>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="ref"/>
+ <properties key="actorref_version" value="2"/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="240" height="140" x="216" y="334">
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="180" height="80" x="33" y="27">
+ <properties key="actorref_graphic_element" value="replborder"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="180" height="80" x="30" y="30">
+ <properties key="actorref_graphic_element" value="mainborder"/>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="20" height="10" x="150" y="50">
+ <properties key="actorref_graphic_element" value="substructure"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="20" height="10" x="145" y="65">
+ <properties key="actorref_graphic_element" value="substructure"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points y="15"/>
+ <points x="15"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points y="30"/>
+ <points x="30"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points y="45"/>
+ <points x="45"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points y="60"/>
+ <points x="60"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points y="75"/>
+ <points x="75"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="10" y="80"/>
+ <points x="90"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="25" y="80"/>
+ <points x="105"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="40" y="80"/>
+ <points x="120"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="55" y="80"/>
+ <points x="135"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="70" y="80"/>
+ <points x="150"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="85" y="80"/>
+ <points x="165"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="100" y="80"/>
+ <points x="180"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="115" y="80"/>
+ <points x="180" y="15"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="130" y="80"/>
+ <points x="180" y="30"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="145" y="80"/>
+ <points x="180" y="45"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="160" y="80"/>
+ <points x="180" y="60"/>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Polyline" foreground="//@colors.2" lineStyle="UNSPECIFIED" lineVisible="false" transparency="0.4">
+ <properties key="actorref_graphic_element" value="hatched_line"/>
+ <points x="175" y="80"/>
+ <points x="180" y="75"/>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithmChildren>
+ <graphicsAlgorithmChildren xsi:type="al:Rectangle" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="25" height="25" x="185" y="30">
+ <properties key="actorref_graphic_element" value="sizeframe"/>
+ </graphicsAlgorithmChildren>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="../DynAct9.room#ActorRef:SubSysClass1$timingService"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" referencedGraphicsAlgorithm="//@children.0/@children.1/@graphicsAlgorithm/@graphicsAlgorithmChildren.1">
+ <properties key="actorref_graphic_element" value="layerconn_anchor"/>
+ </anchors>
+ <children visible="true">
+ <properties key="actorref_graphic_element" value="name_shape"/>
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="180" height="80" x="30" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="timingService&#xA;(ATimingService)"/>
+ </children>
+ <children>
+ <properties key="actorref_graphic_element" value="size_shape"/>
+ <graphicsAlgorithm xsi:type="al:Text" background="//@colors.3" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="25" height="25" x="185" y="30" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="1"/>
+ </children>
+ <children xsi:type="pi:ContainerShape" visible="true" active="true">
+ <properties key="obj-type" value="port"/>
+ <properties key="item-kind" value=""/>
+ <graphicsAlgorithm xsi:type="al:Rectangle" lineWidth="1" filled="false" lineVisible="false" transparency="0.0" width="60" height="60" x="84">
+ <graphicsAlgorithmChildren xsi:type="al:Ellipse" background="//@colors.2" foreground="//@colors.2" lineWidth="1" transparency="0.0" width="18" height="18" x="21" y="21"/>
+ </graphicsAlgorithm>
+ <link>
+ <businessObjects href="platform:/resource/org.eclipse.etrice.examples.dynamicactors9/model/../../org.eclipse.etrice.modellib.java/model/TimingService.room#SPP:ATimingService$timer"/>
+ </link>
+ <anchors xsi:type="pi:ChopboxAnchor" incomingConnections="//@connections.0"/>
+ <children visible="true">
+ <graphicsAlgorithm xsi:type="al:Text" foreground="//@colors.2" lineWidth="1" filled="false" transparency="0.0" width="60" height="15" y="6" font="//@fonts.0" horizontalAlignment="ALIGNMENT_CENTER" value="timer"/>
+ </children>
+ </children>
+ </children>
+ </children>
+ <connections xsi:type="pi:ManhattanConnection" visible="true" active="true" start="//@children.0/@children.0/@anchors.0" end="//@children.0/@children.1/@children.2/@anchors.0">
+ <properties key="obj-type" value="conn"/>
+ <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="2" filled="false" transparency="0.0"/>
+ <link>
+ <businessObjects href="../DynAct9.room#LayerConnection:SubSysClass1$actorRef1-timingService!timer"/>
+ </link>
+ <connectionDecorators visible="true" locationRelative="true" location="1.0">
+ <graphicsAlgorithm xsi:type="al:Polyline" foreground="//@colors.2" lineWidth="2" filled="false" transparency="0.0">
+ <points x="-15" y="10"/>
+ <points/>
+ <points x="-15" y="-10"/>
+ </graphicsAlgorithm>
+ </connectionDecorators>
+ </connections>
+ <colors red="227" green="238" blue="249"/>
+ <colors red="255" green="255" blue="255"/>
+ <colors/>
+ <colors red="200" green="200" blue="200"/>
+ <fonts name="Arial" size="8"/>
+</pi:Diagram>
diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/run_DynAct9.launch b/examples/org.eclipse.etrice.examples.dynamicactors9/run_DynAct9.launch
new file mode 100644
index 000000000..f68a8a092
--- /dev/null
+++ b/examples/org.eclipse.etrice.examples.dynamicactors9/run_DynAct9.launch
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/Node_nodeRef1_subSysRef1Runner.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.etrice.examples.dynamicactors9.Node_nodeRef1_subSysRef1Runner"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.etrice.examples.dynamicactors9"/>
+</launchConfiguration>
diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/Container.java b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/Container.java
new file mode 100644
index 000000000..db38760c2
--- /dev/null
+++ b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/Container.java
@@ -0,0 +1,204 @@
+package org.eclipse.etrice.examples.dynamicactors9;
+
+import org.eclipse.etrice.runtime.java.messaging.Address;
+import org.eclipse.etrice.runtime.java.messaging.IRTObject;
+import org.eclipse.etrice.runtime.java.messaging.IMessageReceiver;
+import org.eclipse.etrice.runtime.java.modelbase.ActorClassBase;
+import org.eclipse.etrice.runtime.java.modelbase.SubSystemClassBase;
+import org.eclipse.etrice.runtime.java.modelbase.InterfaceItemBase;
+import org.eclipse.etrice.runtime.java.debugging.DebuggingService;
+import static org.eclipse.etrice.runtime.java.etunit.EtUnit.*;
+
+import room.basic.service.timing.*;
+
+import room.basic.service.timing.PTimer.*;
+import org.eclipse.etrice.examples.dynamicactors9.PingPongProtocol.*;
+
+import org.eclipse.etrice.examples.dynamicactors9.PingPongInterface;
+
+
+
+public class Container extends ActorClassBase {
+
+
+ //--------------------- ports
+
+ //--------------------- saps
+
+ //--------------------- services
+
+ //--------------------- optional actors
+ protected PingPongInterface pp = null;
+
+ //--------------------- interface item IDs
+
+ /*--------------------- attributes ---------------------*/
+ /*--------------------- operations ---------------------*/
+
+ //--------------------- construction
+ public Container(IRTObject parent, String name) {
+ super(parent, name);
+ setClassName("Container");
+
+ // initialize attributes
+
+ // own ports
+
+ // own saps
+
+ // own service implementations
+
+ // sub actors
+ pp = new PingPongInterface(this, "pp");
+
+ }
+
+ /* --------------------- attribute setters and getters */
+
+
+ //--------------------- port getters
+
+ //--------------------- lifecycle functions
+ public void stop(){
+ stopUser();
+ super.stop();
+ }
+
+ public void destroy() {
+ DebuggingService.getInstance().addMessageActorDestroy(this);
+ super.destroy();
+ }
+
+ /* state IDs */
+ public static final int STATE_Running = 2;
+ public static final int STATE_MAX = 3;
+
+ /* transition chains */
+ public static final int CHAIN_TRANS_INITIAL_TO__Running = 1;
+
+ /* triggers */
+ public static final int POLLING = 0;
+
+ // state names
+ protected static final String stateStrings[] = {
+ "<no state>",
+ "<top>",
+ "Running"
+ };
+
+ // history
+ protected int history[] = {NO_STATE, NO_STATE, NO_STATE};
+
+ private void setState(int new_state) {
+ DebuggingService.getInstance().addActorState(this,stateStrings[new_state]);
+ this.state = new_state;
+ }
+
+ /* Entry and Exit Codes */
+ protected void entry_Running() {
+ pp.createOptionalActor("PingPong", getThread());
+ }
+
+ /* Action Codes */
+
+ /**
+ * calls exit codes while exiting from the current state to one of its
+ * parent states while remembering the history
+ * @param current - the current state
+ * @param to - the final parent state
+ */
+ private void exitTo(int current, int to) {
+ while (current!=to) {
+ switch (current) {
+ case STATE_Running:
+ this.history[STATE_TOP] = STATE_Running;
+ current = STATE_TOP;
+ break;
+ default:
+ /* should not occur */
+ break;
+ }
+ }
+ }
+
+ /**
+ * calls action, entry and exit codes along a transition chain. The generic data are cast to typed data
+ * matching the trigger of this chain. The ID of the final state is returned
+ * @param chain - the chain ID
+ * @param generic_data - the generic data pointer
+ * @return the +/- ID of the final state either with a positive sign, that indicates to execute the state's entry code, or a negative sign vice versa
+ */
+ private int executeTransitionChain(int chain, InterfaceItemBase ifitem, Object generic_data) {
+ switch (chain) {
+ case CHAIN_TRANS_INITIAL_TO__Running:
+ {
+ return STATE_Running;
+ }
+ default:
+ /* should not occur */
+ break;
+ }
+ return NO_STATE;
+ }
+
+ /**
+ * calls entry codes while entering a state's history. The ID of the final leaf state is returned
+ * @param state - the state which is entered
+ * @return - the ID of the final leaf state
+ */
+ private int enterHistory(int state) {
+ boolean skip_entry = false;
+ if (state >= STATE_MAX) {
+ state = (state - STATE_MAX);
+ skip_entry = true;
+ }
+ while (true) {
+ switch (state) {
+ case STATE_Running:
+ if (!(skip_entry)) entry_Running();
+ /* in leaf state: return state id */
+ return STATE_Running;
+ case STATE_TOP:
+ state = this.history[STATE_TOP];
+ break;
+ default:
+ /* should not occur */
+ break;
+ }
+ skip_entry = false;
+ }
+ /* return NO_STATE; // required by CDT but detected as unreachable by JDT because of while (true) */
+ }
+
+ public void executeInitTransition() {
+ int chain = CHAIN_TRANS_INITIAL_TO__Running;
+ int next = executeTransitionChain(chain, null, null);
+ next = enterHistory(next);
+ setState(next);
+ }
+
+ /* receiveEvent contains the main implementation of the FSM */
+ public void receiveEvent(InterfaceItemBase ifitem, int evt, Object generic_data) {
+ int trigger = ifitem.getLocalId() + EVT_SHIFT*evt;
+ int chain = NOT_CAUGHT;
+ int catching_state = NO_STATE;
+
+ if (!handleSystemEvent(ifitem, evt, generic_data)) {
+ switch (getState()) {
+ case STATE_Running:
+ break;
+ default:
+ /* should not occur */
+ break;
+ }
+ }
+ if (chain != NOT_CAUGHT) {
+ exitTo(getState(), catching_state);
+ {
+ int next = executeTransitionChain(chain, ifitem, generic_data);
+ next = enterHistory(next);
+ setState(next);
+ }
+ }
+ }
+};
diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/Node_nodeRef1_subSysRef1.java b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/Node_nodeRef1_subSysRef1.java
new file mode 100644
index 000000000..168f9faa7
--- /dev/null
+++ b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/Node_nodeRef1_subSysRef1.java
@@ -0,0 +1,95 @@
+package org.eclipse.etrice.examples.dynamicactors9;
+
+import org.eclipse.etrice.runtime.java.config.IVariableService;
+import org.eclipse.etrice.runtime.java.debugging.DebuggingService;
+import org.eclipse.etrice.runtime.java.messaging.IRTObject;
+import org.eclipse.etrice.runtime.java.messaging.IMessageService;
+import org.eclipse.etrice.runtime.java.messaging.MessageService;
+import org.eclipse.etrice.runtime.java.messaging.MessageServiceController;
+import org.eclipse.etrice.runtime.java.messaging.RTServices;
+import org.eclipse.etrice.runtime.java.modelbase.ActorClassBase;
+import org.eclipse.etrice.runtime.java.modelbase.OptionalActorInterfaceBase;
+import org.eclipse.etrice.runtime.java.modelbase.IOptionalActorFactory;
+import org.eclipse.etrice.runtime.java.modelbase.SubSystemClassBase;
+import org.eclipse.etrice.runtime.java.modelbase.InterfaceItemBase;
+import org.eclipse.etrice.runtime.java.modelbase.InterfaceItemBroker;
+
+import room.basic.service.timing.*;
+
+
+public class Node_nodeRef1_subSysRef1 extends SubSystemClassBase {
+
+ public static final int THREAD_PHYSICALTHREAD1 = 0;
+
+
+ public Node_nodeRef1_subSysRef1(IRTObject parent, String name) {
+ super(parent, name);
+ }
+
+ @Override
+ public void receiveEvent(InterfaceItemBase ifitem, int evt, Object data){
+ }
+
+ @Override
+ public void instantiateMessageServices() {
+
+ IMessageService msgService;
+ msgService = new MessageService(this, MessageService.ExecMode.MIXED, 100000000, 0, THREAD_PHYSICALTHREAD1, "MessageService_PhysicalThread1" /*, thread_prio */);
+ RTServices.getInstance().getMsgSvcCtrl().addMsgSvc(msgService);
+ }
+
+ @Override
+ public void instantiateActors() {
+
+ // thread mappings
+ addPathToThread("/LogSys1/subSysRef1/actorRef1", THREAD_PHYSICALTHREAD1);
+ addPathToThread("/LogSys1/subSysRef1/actorRef1/container", THREAD_PHYSICALTHREAD1);
+ addPathToThread("/LogSys1/subSysRef1/timingService", THREAD_PHYSICALTHREAD1);
+
+ // port to peer port mappings
+ addPathToPeers("/LogSys1/subSysRef1/actorRef1/container/pp/room_basic_service_timing_PTimer", "/LogSys1/subSysRef1/timingService/timer");
+
+ // sub actors
+ DebuggingService.getInstance().addMessageActorCreate(this, "actorRef1");
+ new PingPongTop(this, "actorRef1");
+ DebuggingService.getInstance().addMessageActorCreate(this, "timingService");
+ new ATimingService(this, "timingService");
+
+ // wire optional actor interfaces with services
+ {
+ OptionalActorInterfaceBase oai = (OptionalActorInterfaceBase) getObject("/LogSys1/subSysRef1/actorRef1/container/pp");
+ new InterfaceItemBroker(oai, "room_basic_service_timing_PTimer", 0);
+ }
+
+ // apply instance attribute configurations
+ }
+
+ @Override
+ public void init(){
+ DebuggingService.getInstance().addVisibleComment("begin sub system initialization");
+ super.init();
+ DebuggingService.getInstance().addVisibleComment("done sub system initialization");
+ }
+
+ @Override
+ public void stop(){
+ super.stop();
+ }
+
+ @Override
+ public void destroy() {
+ DebuggingService.getInstance().addVisibleComment("begin sub system destruction");
+ super.destroy();
+ DebuggingService.getInstance().addVisibleComment("done sub system destruction");
+ }
+
+ public IOptionalActorFactory getFactory(String optionalActorClass, String actorClass) {
+ if (optionalActorClass.equals("PingPong")) {
+ if ("PingPong".equals(actorClass)) {
+ return new PingPongFactory();
+ }
+ }
+
+ return null;
+ }
+};
diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/Node_nodeRef1_subSysRef1Runner.java b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/Node_nodeRef1_subSysRef1Runner.java
new file mode 100644
index 000000000..0e69efc03
--- /dev/null
+++ b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/Node_nodeRef1_subSysRef1Runner.java
@@ -0,0 +1,26 @@
+/**
+ * @author generated by eTrice
+ *
+ * this class contains the main function running component subSysRef1
+ * it instantiates subSysRef1 and starts and ends the lifecycle
+ */
+
+package org.eclipse.etrice.examples.dynamicactors9;
+
+import org.eclipse.etrice.runtime.java.modelbase.RTSystem;
+import org.eclipse.etrice.runtime.java.modelbase.SubSystemRunnerBase;
+
+class Node_nodeRef1_subSysRef1Runner extends SubSystemRunnerBase {
+
+ /**
+ * main function
+ * creates the main component and starts and stops the lifecycle
+ */
+ public static void main(String[] args) {
+ // instantiate the main component
+ RTSystem sys = new RTSystem("LogSys1");
+ Node_nodeRef1_subSysRef1 main_component = new Node_nodeRef1_subSysRef1(sys, "subSysRef1");
+
+ run(main_component, args);
+ }
+};
diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/PingPong.java b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/PingPong.java
new file mode 100644
index 000000000..247e2d505
--- /dev/null
+++ b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/PingPong.java
@@ -0,0 +1,79 @@
+package org.eclipse.etrice.examples.dynamicactors9;
+
+import org.eclipse.etrice.runtime.java.messaging.Address;
+import org.eclipse.etrice.runtime.java.messaging.IRTObject;
+import org.eclipse.etrice.runtime.java.messaging.IMessageReceiver;
+import org.eclipse.etrice.runtime.java.modelbase.ActorClassBase;
+import org.eclipse.etrice.runtime.java.modelbase.SubSystemClassBase;
+import org.eclipse.etrice.runtime.java.modelbase.InterfaceItemBase;
+import org.eclipse.etrice.runtime.java.debugging.DebuggingService;
+import static org.eclipse.etrice.runtime.java.etunit.EtUnit.*;
+
+import room.basic.service.timing.*;
+
+import room.basic.service.timing.PTimer.*;
+import org.eclipse.etrice.examples.dynamicactors9.PingPongProtocol.*;
+
+
+
+
+public class PingPong extends ActorClassBase {
+
+
+ //--------------------- ports
+
+ //--------------------- saps
+
+ //--------------------- services
+
+ //--------------------- optional actors
+
+ //--------------------- interface item IDs
+
+ /*--------------------- attributes ---------------------*/
+ /*--------------------- operations ---------------------*/
+
+ //--------------------- construction
+ public PingPong(IRTObject parent, String name) {
+ super(parent, name);
+ setClassName("PingPong");
+
+ // initialize attributes
+
+ // own ports
+
+ // own saps
+
+ // own service implementations
+
+ // sub actors
+ DebuggingService.getInstance().addMessageActorCreate(this, "receiver");
+ new Receiver(this, "receiver");
+ DebuggingService.getInstance().addMessageActorCreate(this, "sender");
+ new Sender(this, "sender");
+
+ }
+
+ /* --------------------- attribute setters and getters */
+
+
+ //--------------------- port getters
+
+ //--------------------- lifecycle functions
+ public void stop(){
+ stopUser();
+ super.stop();
+ }
+
+ public void destroy() {
+ DebuggingService.getInstance().addMessageActorDestroy(this);
+ super.destroy();
+ }
+
+ //--------------------- no state machine
+ public void receiveEvent(InterfaceItemBase ifitem, int evt, Object data) {
+ handleSystemEvent(ifitem, evt, data);
+ }
+
+ public void executeInitTransition() {}
+};
diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/PingPongFactory.java b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/PingPongFactory.java
new file mode 100644
index 000000000..d44c783e2
--- /dev/null
+++ b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/PingPongFactory.java
@@ -0,0 +1,26 @@
+package org.eclipse.etrice.examples.dynamicactors9;
+
+import org.eclipse.etrice.examples.dynamicactors9.PingPong;
+import org.eclipse.etrice.runtime.java.modelbase.OptionalActorInterfaceBase;
+import org.eclipse.etrice.runtime.java.modelbase.IOptionalActorFactory;
+import org.eclipse.etrice.runtime.java.modelbase.PathToPeers;
+
+public class PingPongFactory implements IOptionalActorFactory {
+
+ private PathToPeers path2peers = new PathToPeers();
+
+ public PingPong create(OptionalActorInterfaceBase ai, String name) {
+ // set port mappings of this sub tree
+ path2peers.put("/receiver/sender", "/sender/receiver");
+ path2peers.put("/receiver/timing", "/room_basic_service_timing_PTimer");
+ path2peers.put("/sender/receiver", "/receiver/sender");
+ ai.setPath2peers(path2peers);
+
+ // instantiate sub tree
+ PingPong actor = new PingPong(ai, name);
+
+ ai.setPath2peers(null);
+
+ return actor;
+ }
+}
diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/PingPongInterface.java b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/PingPongInterface.java
new file mode 100644
index 000000000..ef72f94af
--- /dev/null
+++ b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/PingPongInterface.java
@@ -0,0 +1,28 @@
+package org.eclipse.etrice.examples.dynamicactors9;
+
+import org.eclipse.etrice.runtime.java.debugging.DebuggingService;
+import org.eclipse.etrice.runtime.java.modelbase.IEventReceiver;
+import org.eclipse.etrice.runtime.java.modelbase.InterfaceItemBroker;
+import org.eclipse.etrice.runtime.java.modelbase.ScalarOptionalActorInterfaceBase;
+
+class PingPongInterface extends ScalarOptionalActorInterfaceBase {
+ //--------------------- brokers for ports on the interface
+
+ //--------------------- interface item IDs
+
+ //--------------------- construction
+ public PingPongInterface (IEventReceiver parent, String name) {
+ super(parent, name, "PingPong");
+
+ }
+
+ @Override
+ protected void logCreation(String actorClass, String name) {
+ DebuggingService.getInstance().addMessageActorCreate(this, actorClass, name);
+ }
+
+ @Override
+ protected void logDeletion(String name) {
+ DebuggingService.getInstance().addMessageActorDestroy(this, name);
+ }
+}
diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/PingPongProtocol.java b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/PingPongProtocol.java
new file mode 100644
index 000000000..3a7a78e88
--- /dev/null
+++ b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/PingPongProtocol.java
@@ -0,0 +1,185 @@
+package org.eclipse.etrice.examples.dynamicactors9;
+
+import org.eclipse.etrice.runtime.java.messaging.Message;
+import org.eclipse.etrice.runtime.java.modelbase.EventMessage;
+import org.eclipse.etrice.runtime.java.modelbase.EventWithDataMessage;
+import org.eclipse.etrice.runtime.java.modelbase.IInterfaceItemOwner;
+import org.eclipse.etrice.runtime.java.modelbase.InterfaceItemBase;
+import org.eclipse.etrice.runtime.java.modelbase.PortBase;
+import org.eclipse.etrice.runtime.java.modelbase.ReplicatedPortBase;
+import org.eclipse.etrice.runtime.java.debugging.DebuggingService;
+import static org.eclipse.etrice.runtime.java.etunit.EtUnit.*;
+
+
+
+public class PingPongProtocol {
+ // message IDs
+ public static final int MSG_MIN = 0;
+ public static final int OUT_pong = 1;
+ public static final int IN_ping = 2;
+ public static final int MSG_MAX = 3;
+
+
+ private static String messageStrings[] = {"MIN", "pong", "ping","MAX"};
+
+ public String getMessageString(int msg_id) {
+ if (msg_id<MSG_MIN || msg_id>MSG_MAX+1){
+ // id out of range
+ return "Message ID out of range";
+ }
+ else{
+ return messageStrings[msg_id];
+ }
+ }
+
+
+ // port class
+ static public class PingPongProtocolPort extends PortBase {
+ // constructors
+ public PingPongProtocolPort(IInterfaceItemOwner actor, String name, int localId) {
+ this(actor, name, localId, 0);
+ }
+ public PingPongProtocolPort(IInterfaceItemOwner actor, String name, int localId, int idx) {
+ super(actor, name, localId, idx);
+ DebuggingService.getInstance().addPortInstance(this);
+ }
+
+ public void destroy() {
+ DebuggingService.getInstance().removePortInstance(this);
+ super.destroy();
+ }
+
+ @Override
+ public void receive(Message m) {
+ if (!(m instanceof EventMessage))
+ return;
+ EventMessage msg = (EventMessage) m;
+ if (0 < msg.getEvtId() && msg.getEvtId() < MSG_MAX) {
+ if (messageStrings[msg.getEvtId()] != "timerTick"){
+ DebuggingService.getInstance().addMessageAsyncIn(getPeerAddress(), getAddress(), messageStrings[msg.getEvtId()]);
+ }
+ if (msg instanceof EventWithDataMessage)
+ getActor().receiveEvent(this, msg.getEvtId(), ((EventWithDataMessage)msg).getData());
+ else
+ getActor().receiveEvent(this, msg.getEvtId(), null);
+ }
+ }
+
+
+ // sent messages
+ public void pong() {
+ if (messageStrings[ OUT_pong] != "timerTick") {
+ DebuggingService.getInstance().addMessageAsyncOut(getAddress(), getPeerAddress(), messageStrings[OUT_pong]);
+ }
+ if (getPeerAddress()!=null)
+ getPeerMsgReceiver().receive(new EventMessage(getPeerAddress(), OUT_pong));
+ }
+ }
+
+ // replicated port class
+ static public class PingPongProtocolReplPort extends ReplicatedPortBase {
+
+ public PingPongProtocolReplPort(IInterfaceItemOwner actor, String name, int localId) {
+ super(actor, name, localId);
+ }
+
+ public int getReplication() {
+ return getNInterfaceItems();
+ }
+
+ public int getIndexOf(InterfaceItemBase ifitem){
+ return ifitem.getIdx();
+ }
+
+ public PingPongProtocolPort get(int idx) {
+ return (PingPongProtocolPort) getInterfaceItem(idx);
+ }
+
+ protected InterfaceItemBase createInterfaceItem(IInterfaceItemOwner rcv, String name, int lid, int idx) {
+ return new PingPongProtocolPort(rcv, name, lid, idx);
+ }
+
+ // outgoing messages
+ public void pong(){
+ for (InterfaceItemBase item : getItems()) {
+ ((PingPongProtocolPort)item).pong();
+ }
+ }
+ }
+
+
+ // port class
+ static public class PingPongProtocolConjPort extends PortBase {
+ // constructors
+ public PingPongProtocolConjPort(IInterfaceItemOwner actor, String name, int localId) {
+ this(actor, name, localId, 0);
+ }
+ public PingPongProtocolConjPort(IInterfaceItemOwner actor, String name, int localId, int idx) {
+ super(actor, name, localId, idx);
+ DebuggingService.getInstance().addPortInstance(this);
+ }
+
+ public void destroy() {
+ DebuggingService.getInstance().removePortInstance(this);
+ super.destroy();
+ }
+
+ @Override
+ public void receive(Message m) {
+ if (!(m instanceof EventMessage))
+ return;
+ EventMessage msg = (EventMessage) m;
+ if (0 < msg.getEvtId() && msg.getEvtId() < MSG_MAX) {
+ if (messageStrings[msg.getEvtId()] != "timerTick"){
+ DebuggingService.getInstance().addMessageAsyncIn(getPeerAddress(), getAddress(), messageStrings[msg.getEvtId()]);
+ }
+ if (msg instanceof EventWithDataMessage)
+ getActor().receiveEvent(this, msg.getEvtId(), ((EventWithDataMessage)msg).getData());
+ else
+ getActor().receiveEvent(this, msg.getEvtId(), null);
+ }
+ }
+
+
+ // sent messages
+ public void ping() {
+ if (messageStrings[ IN_ping] != "timerTick") {
+ DebuggingService.getInstance().addMessageAsyncOut(getAddress(), getPeerAddress(), messageStrings[IN_ping]);
+ }
+ if (getPeerAddress()!=null)
+ getPeerMsgReceiver().receive(new EventMessage(getPeerAddress(), IN_ping));
+ }
+ }
+
+ // replicated port class
+ static public class PingPongProtocolConjReplPort extends ReplicatedPortBase {
+
+ public PingPongProtocolConjReplPort(IInterfaceItemOwner actor, String name, int localId) {
+ super(actor, name, localId);
+ }
+
+ public int getReplication() {
+ return getNInterfaceItems();
+ }
+
+ public int getIndexOf(InterfaceItemBase ifitem){
+ return ifitem.getIdx();
+ }
+
+ public PingPongProtocolConjPort get(int idx) {
+ return (PingPongProtocolConjPort) getInterfaceItem(idx);
+ }
+
+ protected InterfaceItemBase createInterfaceItem(IInterfaceItemOwner rcv, String name, int lid, int idx) {
+ return new PingPongProtocolConjPort(rcv, name, lid, idx);
+ }
+
+ // incoming messages
+ public void ping(){
+ for (InterfaceItemBase item : getItems()) {
+ ((PingPongProtocolConjPort)item).ping();
+ }
+ }
+ }
+
+}
diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/PingPongReplicatedInterface.java b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/PingPongReplicatedInterface.java
new file mode 100644
index 000000000..5c687bff4
--- /dev/null
+++ b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/PingPongReplicatedInterface.java
@@ -0,0 +1,28 @@
+package org.eclipse.etrice.examples.dynamicactors9;
+
+import org.eclipse.etrice.runtime.java.debugging.DebuggingService;
+import org.eclipse.etrice.runtime.java.modelbase.IEventReceiver;
+import org.eclipse.etrice.runtime.java.modelbase.InterfaceItemBroker;
+import org.eclipse.etrice.runtime.java.modelbase.ReplicatedOptionalActorInterfaceBase;
+
+class PingPongReplicatedInterface extends ReplicatedOptionalActorInterfaceBase {
+ //--------------------- brokers for ports on the interface
+
+ //--------------------- interface item IDs
+
+ //--------------------- construction
+ public PingPongReplicatedInterface (IEventReceiver parent, String name) {
+ super(parent, name, "PingPong");
+
+ }
+
+ @Override
+ protected void logCreation(String actorClass, String name) {
+ DebuggingService.getInstance().addMessageActorCreate(this, actorClass, name);
+ }
+
+ @Override
+ protected void logDeletion(String name) {
+ DebuggingService.getInstance().addMessageActorDestroy(this, name);
+ }
+}
diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/PingPongTop.java b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/PingPongTop.java
new file mode 100644
index 000000000..2cd41a340
--- /dev/null
+++ b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/PingPongTop.java
@@ -0,0 +1,77 @@
+package org.eclipse.etrice.examples.dynamicactors9;
+
+import org.eclipse.etrice.runtime.java.messaging.Address;
+import org.eclipse.etrice.runtime.java.messaging.IRTObject;
+import org.eclipse.etrice.runtime.java.messaging.IMessageReceiver;
+import org.eclipse.etrice.runtime.java.modelbase.ActorClassBase;
+import org.eclipse.etrice.runtime.java.modelbase.SubSystemClassBase;
+import org.eclipse.etrice.runtime.java.modelbase.InterfaceItemBase;
+import org.eclipse.etrice.runtime.java.debugging.DebuggingService;
+import static org.eclipse.etrice.runtime.java.etunit.EtUnit.*;
+
+import room.basic.service.timing.*;
+
+import room.basic.service.timing.PTimer.*;
+import org.eclipse.etrice.examples.dynamicactors9.PingPongProtocol.*;
+
+
+
+
+public class PingPongTop extends ActorClassBase {
+
+
+ //--------------------- ports
+
+ //--------------------- saps
+
+ //--------------------- services
+
+ //--------------------- optional actors
+
+ //--------------------- interface item IDs
+
+ /*--------------------- attributes ---------------------*/
+ /*--------------------- operations ---------------------*/
+
+ //--------------------- construction
+ public PingPongTop(IRTObject parent, String name) {
+ super(parent, name);
+ setClassName("PingPongTop");
+
+ // initialize attributes
+
+ // own ports
+
+ // own saps
+
+ // own service implementations
+
+ // sub actors
+ DebuggingService.getInstance().addMessageActorCreate(this, "container");
+ new Container(this, "container");
+
+ }
+
+ /* --------------------- attribute setters and getters */
+
+
+ //--------------------- port getters
+
+ //--------------------- lifecycle functions
+ public void stop(){
+ stopUser();
+ super.stop();
+ }
+
+ public void destroy() {
+ DebuggingService.getInstance().addMessageActorDestroy(this);
+ super.destroy();
+ }
+
+ //--------------------- no state machine
+ public void receiveEvent(InterfaceItemBase ifitem, int evt, Object data) {
+ handleSystemEvent(ifitem, evt, data);
+ }
+
+ public void executeInitTransition() {}
+};
diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/Receiver.java b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/Receiver.java
new file mode 100644
index 000000000..b22d421ec
--- /dev/null
+++ b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/Receiver.java
@@ -0,0 +1,275 @@
+package org.eclipse.etrice.examples.dynamicactors9;
+
+import org.eclipse.etrice.runtime.java.messaging.Address;
+import org.eclipse.etrice.runtime.java.messaging.IRTObject;
+import org.eclipse.etrice.runtime.java.messaging.IMessageReceiver;
+import org.eclipse.etrice.runtime.java.modelbase.ActorClassBase;
+import org.eclipse.etrice.runtime.java.modelbase.SubSystemClassBase;
+import org.eclipse.etrice.runtime.java.modelbase.InterfaceItemBase;
+import org.eclipse.etrice.runtime.java.debugging.DebuggingService;
+import static org.eclipse.etrice.runtime.java.etunit.EtUnit.*;
+
+import room.basic.service.timing.*;
+
+import room.basic.service.timing.PTimer.*;
+import org.eclipse.etrice.examples.dynamicactors9.PingPongProtocol.*;
+
+
+
+
+public class Receiver extends ActorClassBase {
+
+
+ //--------------------- ports
+ protected PingPongProtocolPort sender = null;
+
+ //--------------------- saps
+ protected PTimerConjPort timing = null;
+
+ //--------------------- services
+
+ //--------------------- optional actors
+
+ //--------------------- interface item IDs
+ public static final int IFITEM_sender = 1;
+ public static final int IFITEM_timing = 2;
+
+ /*--------------------- attributes ---------------------*/
+ /*--------------------- operations ---------------------*/
+
+ //--------------------- construction
+ public Receiver(IRTObject parent, String name) {
+ super(parent, name);
+ setClassName("Receiver");
+
+ // initialize attributes
+
+ // own ports
+ sender = new PingPongProtocolPort(this, "sender", IFITEM_sender);
+
+ // own saps
+ timing = new PTimerConjPort(this, "timing", IFITEM_timing, 0);
+
+ // own service implementations
+
+ // sub actors
+
+ }
+
+ /* --------------------- attribute setters and getters */
+
+
+ //--------------------- port getters
+ public PingPongProtocolPort getSender (){
+ return this.sender;
+ }
+ public PTimerConjPort getTiming (){
+ return this.timing;
+ }
+
+ //--------------------- lifecycle functions
+ public void stop(){
+ stopUser();
+ super.stop();
+ }
+
+ public void destroy() {
+ DebuggingService.getInstance().addMessageActorDestroy(this);
+ super.destroy();
+ }
+
+ /* state IDs */
+ public static final int STATE_WaitingForPing = 2;
+ public static final int STATE_WaitingForAWhile = 3;
+ public static final int STATE_SentPong = 4;
+ public static final int STATE_MAX = 5;
+
+ /* transition chains */
+ public static final int CHAIN_TRANS_INITIAL_TO__WaitingForPing = 1;
+ public static final int CHAIN_TRANS_tr0_FROM_WaitingForPing_TO_WaitingForAWhile_BY_pingsender = 2;
+ public static final int CHAIN_TRANS_tr1_FROM_WaitingForAWhile_TO_SentPong_BY_timeouttiming = 3;
+
+ /* triggers */
+ public static final int POLLING = 0;
+ public static final int TRIG_sender__ping = IFITEM_sender + EVT_SHIFT*PingPongProtocol.IN_ping;
+ public static final int TRIG_timing__timeout = IFITEM_timing + EVT_SHIFT*PTimer.OUT_timeout;
+ public static final int TRIG_timing__internalTimer = IFITEM_timing + EVT_SHIFT*PTimer.OUT_internalTimer;
+ public static final int TRIG_timing__internalTimeout = IFITEM_timing + EVT_SHIFT*PTimer.OUT_internalTimeout;
+
+ // state names
+ protected static final String stateStrings[] = {
+ "<no state>",
+ "<top>",
+ "WaitingForPing",
+ "WaitingForAWhile",
+ "SentPong"
+ };
+
+ // history
+ protected int history[] = {NO_STATE, NO_STATE, NO_STATE, NO_STATE, NO_STATE};
+
+ private void setState(int new_state) {
+ DebuggingService.getInstance().addActorState(this,stateStrings[new_state]);
+ this.state = new_state;
+ }
+
+ /* Entry and Exit Codes */
+ protected void entry_WaitingForAWhile() {
+ timing.startTimeout(1000);
+ }
+ protected void entry_SentPong() {
+ sender.pong();
+ }
+
+ /* Action Codes */
+
+ /**
+ * calls exit codes while exiting from the current state to one of its
+ * parent states while remembering the history
+ * @param current - the current state
+ * @param to - the final parent state
+ */
+ private void exitTo(int current, int to) {
+ while (current!=to) {
+ switch (current) {
+ case STATE_WaitingForPing:
+ this.history[STATE_TOP] = STATE_WaitingForPing;
+ current = STATE_TOP;
+ break;
+ case STATE_WaitingForAWhile:
+ this.history[STATE_TOP] = STATE_WaitingForAWhile;
+ current = STATE_TOP;
+ break;
+ case STATE_SentPong:
+ this.history[STATE_TOP] = STATE_SentPong;
+ current = STATE_TOP;
+ break;
+ default:
+ /* should not occur */
+ break;
+ }
+ }
+ }
+
+ /**
+ * calls action, entry and exit codes along a transition chain. The generic data are cast to typed data
+ * matching the trigger of this chain. The ID of the final state is returned
+ * @param chain - the chain ID
+ * @param generic_data - the generic data pointer
+ * @return the +/- ID of the final state either with a positive sign, that indicates to execute the state's entry code, or a negative sign vice versa
+ */
+ private int executeTransitionChain(int chain, InterfaceItemBase ifitem, Object generic_data) {
+ switch (chain) {
+ case CHAIN_TRANS_INITIAL_TO__WaitingForPing:
+ {
+ return STATE_WaitingForPing;
+ }
+ case CHAIN_TRANS_tr0_FROM_WaitingForPing_TO_WaitingForAWhile_BY_pingsender:
+ {
+ return STATE_WaitingForAWhile;
+ }
+ case CHAIN_TRANS_tr1_FROM_WaitingForAWhile_TO_SentPong_BY_timeouttiming:
+ {
+ return STATE_SentPong;
+ }
+ default:
+ /* should not occur */
+ break;
+ }
+ return NO_STATE;
+ }
+
+ /**
+ * calls entry codes while entering a state's history. The ID of the final leaf state is returned
+ * @param state - the state which is entered
+ * @return - the ID of the final leaf state
+ */
+ private int enterHistory(int state) {
+ boolean skip_entry = false;
+ if (state >= STATE_MAX) {
+ state = (state - STATE_MAX);
+ skip_entry = true;
+ }
+ while (true) {
+ switch (state) {
+ case STATE_WaitingForPing:
+ /* in leaf state: return state id */
+ return STATE_WaitingForPing;
+ case STATE_WaitingForAWhile:
+ if (!(skip_entry)) entry_WaitingForAWhile();
+ /* in leaf state: return state id */
+ return STATE_WaitingForAWhile;
+ case STATE_SentPong:
+ if (!(skip_entry)) entry_SentPong();
+ /* in leaf state: return state id */
+ return STATE_SentPong;
+ case STATE_TOP:
+ state = this.history[STATE_TOP];
+ break;
+ default:
+ /* should not occur */
+ break;
+ }
+ skip_entry = false;
+ }
+ /* return NO_STATE; // required by CDT but detected as unreachable by JDT because of while (true) */
+ }
+
+ public void executeInitTransition() {
+ int chain = CHAIN_TRANS_INITIAL_TO__WaitingForPing;
+ int next = executeTransitionChain(chain, null, null);
+ next = enterHistory(next);
+ setState(next);
+ }
+
+ /* receiveEvent contains the main implementation of the FSM */
+ public void receiveEvent(InterfaceItemBase ifitem, int evt, Object generic_data) {
+ int trigger = ifitem.getLocalId() + EVT_SHIFT*evt;
+ int chain = NOT_CAUGHT;
+ int catching_state = NO_STATE;
+
+ if (!handleSystemEvent(ifitem, evt, generic_data)) {
+ switch (getState()) {
+ case STATE_WaitingForPing:
+ switch(trigger) {
+ case TRIG_sender__ping:
+ {
+ chain = CHAIN_TRANS_tr0_FROM_WaitingForPing_TO_WaitingForAWhile_BY_pingsender;
+ catching_state = STATE_TOP;
+ }
+ break;
+ default:
+ /* should not occur */
+ break;
+ }
+ break;
+ case STATE_WaitingForAWhile:
+ switch(trigger) {
+ case TRIG_timing__timeout:
+ {
+ chain = CHAIN_TRANS_tr1_FROM_WaitingForAWhile_TO_SentPong_BY_timeouttiming;
+ catching_state = STATE_TOP;
+ }
+ break;
+ default:
+ /* should not occur */
+ break;
+ }
+ break;
+ case STATE_SentPong:
+ break;
+ default:
+ /* should not occur */
+ break;
+ }
+ }
+ if (chain != NOT_CAUGHT) {
+ exitTo(getState(), catching_state);
+ {
+ int next = executeTransitionChain(chain, ifitem, generic_data);
+ next = enterHistory(next);
+ setState(next);
+ }
+ }
+ }
+};
diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/Sender.java b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/Sender.java
new file mode 100644
index 000000000..9fbd710a6
--- /dev/null
+++ b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/org/eclipse/etrice/examples/dynamicactors9/Sender.java
@@ -0,0 +1,238 @@
+package org.eclipse.etrice.examples.dynamicactors9;
+
+import org.eclipse.etrice.runtime.java.messaging.Address;
+import org.eclipse.etrice.runtime.java.messaging.IRTObject;
+import org.eclipse.etrice.runtime.java.messaging.IMessageReceiver;
+import org.eclipse.etrice.runtime.java.modelbase.ActorClassBase;
+import org.eclipse.etrice.runtime.java.modelbase.SubSystemClassBase;
+import org.eclipse.etrice.runtime.java.modelbase.InterfaceItemBase;
+import org.eclipse.etrice.runtime.java.debugging.DebuggingService;
+import static org.eclipse.etrice.runtime.java.etunit.EtUnit.*;
+
+
+import org.eclipse.etrice.examples.dynamicactors9.PingPongProtocol.*;
+
+
+
+
+public class Sender extends ActorClassBase {
+
+
+ //--------------------- ports
+ protected PingPongProtocolConjPort receiver = null;
+
+ //--------------------- saps
+
+ //--------------------- services
+
+ //--------------------- optional actors
+
+ //--------------------- interface item IDs
+ public static final int IFITEM_receiver = 1;
+
+ /*--------------------- attributes ---------------------*/
+ /*--------------------- operations ---------------------*/
+
+ //--------------------- construction
+ public Sender(IRTObject parent, String name) {
+ super(parent, name);
+ setClassName("Sender");
+
+ // initialize attributes
+
+ // own ports
+ receiver = new PingPongProtocolConjPort(this, "receiver", IFITEM_receiver);
+
+ // own saps
+
+ // own service implementations
+
+ // sub actors
+
+ }
+
+ /* --------------------- attribute setters and getters */
+
+
+ //--------------------- port getters
+ public PingPongProtocolConjPort getReceiver (){
+ return this.receiver;
+ }
+
+ //--------------------- lifecycle functions
+ public void stop(){
+ stopUser();
+ super.stop();
+ }
+
+ public void destroy() {
+ DebuggingService.getInstance().addMessageActorDestroy(this);
+ super.destroy();
+ }
+
+ /* state IDs */
+ public static final int STATE_SendingPing = 2;
+ public static final int STATE_ReceivedPong = 3;
+ public static final int STATE_MAX = 4;
+
+ /* transition chains */
+ public static final int CHAIN_TRANS_INITIAL_TO__SendingPing = 1;
+ public static final int CHAIN_TRANS_tr0_FROM_SendingPing_TO_ReceivedPong_BY_pongreceiver = 2;
+
+ /* triggers */
+ public static final int POLLING = 0;
+ public static final int TRIG_receiver__pong = IFITEM_receiver + EVT_SHIFT*PingPongProtocol.OUT_pong;
+
+ // state names
+ protected static final String stateStrings[] = {
+ "<no state>",
+ "<top>",
+ "SendingPing",
+ "ReceivedPong"
+ };
+
+ // history
+ protected int history[] = {NO_STATE, NO_STATE, NO_STATE, NO_STATE};
+
+ private void setState(int new_state) {
+ DebuggingService.getInstance().addActorState(this,stateStrings[new_state]);
+ this.state = new_state;
+ }
+
+ /* Entry and Exit Codes */
+ protected void entry_SendingPing() {
+ receiver.ping();
+ }
+ protected void entry_ReceivedPong() {
+ System.out.println(((org.eclipse.etrice.runtime.java.messaging.RTObject)getRoot()).toStringRecursive());
+ System.out.println("Done, enter 'quit' to exit");
+ }
+
+ /* Action Codes */
+
+ /**
+ * calls exit codes while exiting from the current state to one of its
+ * parent states while remembering the history
+ * @param current - the current state
+ * @param to - the final parent state
+ */
+ private void exitTo(int current, int to) {
+ while (current!=to) {
+ switch (current) {
+ case STATE_SendingPing:
+ this.history[STATE_TOP] = STATE_SendingPing;
+ current = STATE_TOP;
+ break;
+ case STATE_ReceivedPong:
+ this.history[STATE_TOP] = STATE_ReceivedPong;
+ current = STATE_TOP;
+ break;
+ default:
+ /* should not occur */
+ break;
+ }
+ }
+ }
+
+ /**
+ * calls action, entry and exit codes along a transition chain. The generic data are cast to typed data
+ * matching the trigger of this chain. The ID of the final state is returned
+ * @param chain - the chain ID
+ * @param generic_data - the generic data pointer
+ * @return the +/- ID of the final state either with a positive sign, that indicates to execute the state's entry code, or a negative sign vice versa
+ */
+ private int executeTransitionChain(int chain, InterfaceItemBase ifitem, Object generic_data) {
+ switch (chain) {
+ case CHAIN_TRANS_INITIAL_TO__SendingPing:
+ {
+ return STATE_SendingPing;
+ }
+ case CHAIN_TRANS_tr0_FROM_SendingPing_TO_ReceivedPong_BY_pongreceiver:
+ {
+ return STATE_ReceivedPong;
+ }
+ default:
+ /* should not occur */
+ break;
+ }
+ return NO_STATE;
+ }
+
+ /**
+ * calls entry codes while entering a state's history. The ID of the final leaf state is returned
+ * @param state - the state which is entered
+ * @return - the ID of the final leaf state
+ */
+ private int enterHistory(int state) {
+ boolean skip_entry = false;
+ if (state >= STATE_MAX) {
+ state = (state - STATE_MAX);
+ skip_entry = true;
+ }
+ while (true) {
+ switch (state) {
+ case STATE_SendingPing:
+ if (!(skip_entry)) entry_SendingPing();
+ /* in leaf state: return state id */
+ return STATE_SendingPing;
+ case STATE_ReceivedPong:
+ if (!(skip_entry)) entry_ReceivedPong();
+ /* in leaf state: return state id */
+ return STATE_ReceivedPong;
+ case STATE_TOP:
+ state = this.history[STATE_TOP];
+ break;
+ default:
+ /* should not occur */
+ break;
+ }
+ skip_entry = false;
+ }
+ /* return NO_STATE; // required by CDT but detected as unreachable by JDT because of while (true) */
+ }
+
+ public void executeInitTransition() {
+ int chain = CHAIN_TRANS_INITIAL_TO__SendingPing;
+ int next = executeTransitionChain(chain, null, null);
+ next = enterHistory(next);
+ setState(next);
+ }
+
+ /* receiveEvent contains the main implementation of the FSM */
+ public void receiveEvent(InterfaceItemBase ifitem, int evt, Object generic_data) {
+ int trigger = ifitem.getLocalId() + EVT_SHIFT*evt;
+ int chain = NOT_CAUGHT;
+ int catching_state = NO_STATE;
+
+ if (!handleSystemEvent(ifitem, evt, generic_data)) {
+ switch (getState()) {
+ case STATE_SendingPing:
+ switch(trigger) {
+ case TRIG_receiver__pong:
+ {
+ chain = CHAIN_TRANS_tr0_FROM_SendingPing_TO_ReceivedPong_BY_pongreceiver;
+ catching_state = STATE_TOP;
+ }
+ break;
+ default:
+ /* should not occur */
+ break;
+ }
+ break;
+ case STATE_ReceivedPong:
+ break;
+ default:
+ /* should not occur */
+ break;
+ }
+ }
+ if (chain != NOT_CAUGHT) {
+ exitTo(getState(), catching_state);
+ {
+ int next = executeTransitionChain(chain, ifitem, generic_data);
+ next = enterHistory(next);
+ setState(next);
+ }
+ }
+ }
+};
diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/readme.txt b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/readme.txt
new file mode 100644
index 000000000..1dc2b35ab
--- /dev/null
+++ b/examples/org.eclipse.etrice.examples.dynamicactors9/src-gen/readme.txt
@@ -0,0 +1,4 @@
+This directory is an eTrice code generation target.
+It will be erased every time the generator is executed.
+
+DO NOT PLACE OTHER FILES HERE!
diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/tmp/log/subSysRef1_Async.seq b/examples/org.eclipse.etrice.examples.dynamicactors9/tmp/log/subSysRef1_Async.seq
new file mode 100644
index 000000000..fb2005568
--- /dev/null
+++ b/examples/org.eclipse.etrice.examples.dynamicactors9/tmp/log/subSysRef1_Async.seq
@@ -0,0 +1,31 @@
+; generated MSC for Trace2UML
+# begin sub system initialization
+ /LogSys1/subSysRef1 (!) /LogSys1/subSysRef1/actorRef1
+ /LogSys1/subSysRef1/actorRef1 (!) /LogSys1/subSysRef1/actorRef1/container
+ /LogSys1/subSysRef1 (!) /LogSys1/subSysRef1/timingService
+# done sub system initialization
+ /LogSys1/subSysRef1/actorRef1/container note: dynamically creating actor class PingPong
+ /LogSys1/subSysRef1/actorRef1/container (!) /LogSys1/subSysRef1/actorRef1/container/pp
+ /LogSys1/subSysRef1/actorRef1/container/pp (!) /LogSys1/subSysRef1/actorRef1/container/pp/receiver
+ /LogSys1/subSysRef1/actorRef1/container/pp (!) /LogSys1/subSysRef1/actorRef1/container/pp/sender
+ /LogSys1/subSysRef1/actorRef1/container >>> Running
+ /LogSys1/subSysRef1/timingService >>> Operational
+ /LogSys1/subSysRef1/actorRef1/container/pp/receiver >>> WaitingForPing
+ /LogSys1/subSysRef1/actorRef1/container/pp/sender >-- /LogSys1/subSysRef1/actorRef1/container/pp/receiver ping
+ /LogSys1/subSysRef1/actorRef1/container/pp/sender >>> SendingPing
+ /LogSys1/subSysRef1/actorRef1/container/pp/sender --> /LogSys1/subSysRef1/actorRef1/container/pp/receiver ping
+ /LogSys1/subSysRef1/actorRef1/container/pp/receiver >>> WaitingForAWhile
+ /LogSys1/subSysRef1/actorRef1/container/pp/receiver --> /LogSys1/subSysRef1/timingService internalStartTimeout
+ /LogSys1/subSysRef1/timingService >>> Operational
+ /LogSys1/subSysRef1/timingService >-- /LogSys1/subSysRef1/actorRef1/container/pp/receiver internalTimeout
+ /LogSys1/subSysRef1/timingService --> /LogSys1/subSysRef1/actorRef1/container/pp/receiver internalTimeout
+ /LogSys1/subSysRef1/actorRef1/container/pp/receiver >-- /LogSys1/subSysRef1/actorRef1/container/pp/sender pong
+ /LogSys1/subSysRef1/actorRef1/container/pp/receiver >>> SentPong
+ /LogSys1/subSysRef1/actorRef1/container/pp/receiver --> /LogSys1/subSysRef1/actorRef1/container/pp/sender pong
+ /LogSys1/subSysRef1/actorRef1/container/pp/sender >>> ReceivedPong
+# begin sub system destruction
+ /LogSys1/subSysRef1 (X) /LogSys1/subSysRef1/actorRef1
+ /LogSys1/subSysRef1/actorRef1 (X) /LogSys1/subSysRef1/actorRef1/container
+ /LogSys1/subSysRef1/actorRef1/container/pp (X) /LogSys1/subSysRef1/actorRef1/container/pp/receiver
+ /LogSys1/subSysRef1/actorRef1/container/pp (X) /LogSys1/subSysRef1/actorRef1/container/pp/sender
+ /LogSys1/subSysRef1 (X) /LogSys1/subSysRef1/timingService
diff --git a/examples/org.eclipse.etrice.examples.dynamicactors9/tmp/log/subSysRef1_Sync.seq b/examples/org.eclipse.etrice.examples.dynamicactors9/tmp/log/subSysRef1_Sync.seq
new file mode 100644
index 000000000..6b954ac91
--- /dev/null
+++ b/examples/org.eclipse.etrice.examples.dynamicactors9/tmp/log/subSysRef1_Sync.seq
@@ -0,0 +1 @@
+; generated MSC for Trace2UML

Back to the top