sccd.xml 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <?xml version="1.1" ?>
  2. <diagram author="Sam Pieters" name="AssociateInstance">
  3. <description>
  4. Associate a target instance to another instance that is not its creator
  5. </description>
  6. <outport name="Outport"/>
  7. <class name="MainApp" default="true">
  8. <relationships>
  9. <association name="linkA" class="A" />
  10. <association name="linkB" class="B" />
  11. </relationships>
  12. <constructor>
  13. <body>
  14. self.assoc_name = None
  15. </body>
  16. </constructor>
  17. <scxml initial="state1">
  18. <state id="state1">
  19. <onentry>
  20. <raise scope="cd" event="create_instance">
  21. <parameter expr='"linkA"' />
  22. <parameter expr='"A"' />
  23. </raise>
  24. </onentry>
  25. <transition event='instance_created' target='../state2'>
  26. <parameter name="association_name" type="string"/>
  27. <script>
  28. self.assoc_name = association_name
  29. </script>
  30. <raise port="Outport" event="instance_created_succesfully">
  31. <parameter expr="association_name" />
  32. </raise>
  33. <raise scope="cd" event="start_instance">
  34. <parameter expr='association_name' />
  35. </raise>
  36. </transition>
  37. </state>
  38. <state id="state2">
  39. <transition event='instance_started' target='../state3'>
  40. <parameter name="association_name" type="string"/>
  41. <raise port="Outport" event="instance_started_succesfully">
  42. <parameter expr="association_name" />
  43. </raise>
  44. <raise scope="cd" event="create_instance">
  45. <parameter expr='"linkB"' />
  46. <parameter expr='"B"' />
  47. </raise>
  48. </transition>
  49. </state>
  50. <state id="state3">
  51. <transition event='instance_created' target='../state4'>
  52. <parameter name="association_name" type="string"/>
  53. <raise port="Outport" event="instance_created_succesfully">
  54. <parameter expr="association_name" />
  55. </raise>
  56. <raise scope="cd" event="start_instance">
  57. <parameter expr='association_name' />
  58. </raise>
  59. </transition>
  60. </state>
  61. <state id="state4">
  62. <transition event='instance_started' target='../state5'>
  63. <parameter name="association_name" type="string"/>
  64. <raise port="Outport" event="instance_started_succesfully">
  65. <parameter expr="association_name" />
  66. </raise>
  67. </transition>
  68. </state>
  69. <state id="state5">
  70. <onentry>
  71. <raise event="associate_instance" scope="cd">
  72. <parameter expr="'linkB[0]'"/>
  73. <parameter expr="'linkA/linkB'"/>
  74. </raise>
  75. </onentry>
  76. <transition event="instance_associated" target="../state6">
  77. <parameter name="created_links"/>
  78. <raise event="test_link" scope="narrow" target="'linkA[0]'" />
  79. </transition>
  80. </state>
  81. <state id="state6" />
  82. </scxml>
  83. </class>
  84. <class name="A">
  85. <relationships>
  86. <association name="linkB" class="B" />
  87. </relationships>
  88. <scxml initial="state1">
  89. <state id="state1">
  90. <onentry>
  91. <raise port="Outport" event="statechart_started_succesfully" />
  92. </onentry>
  93. <transition event="test_link" target="../state2">
  94. <raise event="test_new_link" scope="narrow" target="'linkB[0]'" />
  95. </transition>
  96. </state>
  97. <state id="state2" />
  98. </scxml>
  99. </class>
  100. <class name="B">
  101. <scxml initial="state1">
  102. <state id="state1">
  103. <onentry>
  104. <raise port="Outport" event="statechart_started_succesfully" />
  105. </onentry>
  106. <transition event="test_new_link" target="../state2">
  107. <raise port="Outport" event="associated_succesfully" />
  108. </transition>
  109. </state>
  110. <state id="state2" />
  111. </scxml>
  112. </class>
  113. </diagram>