123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- include "primitives.alh"
- include "core_algorithm.alh"
- include "transform.alh"
- include "modelling.alh"
- Diagram dynamic_trafficlight {
- name = "Dynamic Traffic Light"
- author = "Yentl Van Tendeloo"
- }
- Class manager {
- name = "Manager"
- default = True
- constructor_body = $
- Void function constructor(attributes : Element, parameters : Element):
- return !
- $
- {behaviour} CompositeState manager_main {
- name = "main"
- isInitial = True
- {composite_children} BasicState manager_main_init {
- name = "init"
- isInitial = True
- }
- {composite_children} BasicState manager_main_did_transform {
- name = "MT OK"
- isInitial = False
- }
- {composite_children} BasicState manager_main_did_actionlanguage {
- name = "AL OK"
- isInitial = False
- }
- }
- }
- transition (manager_main_init, manager_main_did_transform) {
- name = "model transformation"
- script = $
- Void function script(attributes : Element, parameters : Element):
- Element m
- Element models
- // Merge models
- models = dict_create()
- dict_add(models, "A", "ModelA")
- dict_add(models, "B", "ModelB")
- m = merge_models(models, "TransformY")
- // Do transformation
- transform(m, get_model("TransformY", get_ramified_metamodel("TransformY")))
- // Split up the result
- Element metamodels
- Element split
- metamodels = dict_create()
- dict_add(metamodels, "C", "MetamodelC")
- dict_add(metamodels, "B", "MetamodelB")
- split = split_model(m, metamodels)
- // Store the results
- store_model("ModelC", "MetamodelC", split["C"])
- store_model("ModelB", "MetamodelB", split["B"])
- return!
- $
- }
- transition (manager_main_did_transform, manager_main_did_actionlanguage) {
- name = "action language"
- script = $
- Void function script(attributes : Element, parameters : Element):
- Element m
- Element models
- // Merge models
- models = dict_create()
- dict_add(models, "C", "ModelC")
- dict_add(models, "B", "ModelB")
- m = merge_models(models, "OperationZ")
- // Do transformation
- Element func
- func = get_func_AL_model(get_model("OperationZ", "ActionLanguage"))
- func(m)
- // Split up the result
- Element metamodels
- Element split
- metamodels = dict_create()
- dict_add(metamodels, "A", "MetamodelA")
- dict_add(metamodels, "B", "MetamodelB")
- split = split_model(m, metamodels)
- // Store the results
- store_model("ModelA", "MetamodelA", split["A"])
- store_model("ModelB", "MetamodelB", split["B"])
- return!
- $
- }
|