sccd.xml 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <?xml version="1.1" ?>
  2. <diagram author="Sam Pieters" name="MultipleClassInstancesInitialisation">
  3. <description>
  4. Create and start multiple instances of the same class
  5. </description>
  6. <outport name="Outport"/>
  7. <class name="MainApp" default="true">
  8. <relationships>
  9. <association name="linkA" class="A" />
  10. </relationships>
  11. <constructor>
  12. <body>
  13. self.instances = 10
  14. </body>
  15. </constructor>
  16. <scxml initial="state1">
  17. <state id="state1">
  18. <onentry>
  19. <raise scope="cd" event="create_instance">
  20. <parameter expr='"linkA"' />
  21. <parameter expr='"A"' />
  22. <parameter expr='self.instances' type="int" />
  23. </raise>
  24. </onentry>
  25. <transition event='instance_created' target='../state2'>
  26. <parameter name="association_name" type="string"/>
  27. <raise port="Outport" event="instance_created_succesfully">
  28. <parameter expr="association_name" />
  29. </raise>
  30. <raise scope="cd" event="start_instance">
  31. <parameter expr="association_name" />
  32. </raise>
  33. <script>
  34. self.instances -= 1
  35. </script>
  36. </transition>
  37. </state>
  38. <state id="state2">
  39. <transition event='instance_started' target='.'>
  40. <parameter name="association_name" type="string"/>
  41. <raise port="Outport" event="instance_started_succesfully">
  42. <parameter expr="association_name" />
  43. </raise>
  44. </transition>
  45. <transition target="../state1" cond="self.instances != 0" />
  46. <transition target="../state3" cond="self.instances == 0" />
  47. </state>
  48. <state id="state3" />
  49. </scxml>
  50. </class>
  51. <class name="A">
  52. <constructor>
  53. <parameter name='instance_number' type="int" />
  54. <body>
  55. self.number = instance_number
  56. </body>
  57. </constructor>
  58. <scxml initial="state1">
  59. <state id="state1">
  60. <onentry>
  61. <raise port="Outport" event="statechart_started_succesfully">
  62. <parameter expr="self.number" />
  63. </raise>
  64. <raise port="Outport" event="constructor_initialized_succesfully">
  65. <parameter expr="self.number" />
  66. </raise>
  67. </onentry>
  68. </state>
  69. </scxml>
  70. </class>
  71. </diagram>