test_operations_in_SCCD.mvc 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. include "primitives.alh"
  2. include "core_algorithm.alh"
  3. include "transform.alh"
  4. include "modelling.alh"
  5. Diagram dynamic_trafficlight {
  6. name = "Dynamic Traffic Light"
  7. author = "Yentl Van Tendeloo"
  8. }
  9. Class manager {
  10. name = "Manager"
  11. default = True
  12. constructor_body = $
  13. Void function constructor(attributes : Element, parameters : Element):
  14. return !
  15. $
  16. {behaviour} CompositeState manager_main {
  17. name = "main"
  18. isInitial = True
  19. {composite_children} BasicState manager_main_init {
  20. name = "init"
  21. isInitial = True
  22. }
  23. {composite_children} BasicState manager_main_did_transform {
  24. name = "MT OK"
  25. isInitial = False
  26. }
  27. {composite_children} BasicState manager_main_did_actionlanguage {
  28. name = "AL OK"
  29. isInitial = False
  30. }
  31. }
  32. }
  33. transition (manager_main_init, manager_main_did_transform) {
  34. name = "model transformation"
  35. script = $
  36. Void function script(attributes : Element, parameters : Element):
  37. Element m
  38. Element models
  39. // Merge models
  40. models = dict_create()
  41. dict_add(models, "A", "ModelA")
  42. dict_add(models, "B", "ModelB")
  43. m = merge_models(models, "TransformY")
  44. // Do transformation
  45. transform(m, get_model("TransformY", get_ramified_metamodel("TransformY")))
  46. // Split up the result
  47. Element metamodels
  48. Element split
  49. metamodels = dict_create()
  50. dict_add(metamodels, "C", "MetamodelC")
  51. dict_add(metamodels, "B", "MetamodelB")
  52. split = split_model(m, metamodels)
  53. // Store the results
  54. store_model("ModelC", "MetamodelC", split["C"])
  55. store_model("ModelB", "MetamodelB", split["B"])
  56. return!
  57. $
  58. }
  59. transition (manager_main_did_transform, manager_main_did_actionlanguage) {
  60. name = "action language"
  61. script = $
  62. Void function script(attributes : Element, parameters : Element):
  63. Element m
  64. Element models
  65. // Merge models
  66. models = dict_create()
  67. dict_add(models, "C", "ModelC")
  68. dict_add(models, "B", "ModelB")
  69. m = merge_models(models, "OperationZ")
  70. // Do transformation
  71. Element func
  72. func = get_func_AL_model(get_model("OperationZ", "ActionLanguage"))
  73. func(m)
  74. // Split up the result
  75. Element metamodels
  76. Element split
  77. metamodels = dict_create()
  78. dict_add(metamodels, "A", "MetamodelA")
  79. dict_add(metamodels, "B", "MetamodelB")
  80. split = split_model(m, metamodels)
  81. // Store the results
  82. store_model("ModelA", "MetamodelA", split["A"])
  83. store_model("ModelB", "MetamodelB", split["B"])
  84. return!
  85. $
  86. }