test_operations_in_SCCD.mvc 3.0 KB

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