live_modelling_DTCBD.py 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import sys
  2. sys.path.append("wrappers")
  3. from modelverse import *
  4. init()
  5. login("admin", "admin")
  6. ### live modelling DTCBD
  7. model_add("formalisms/DTCBD/Design_MM", "formalisms/SimpleClassDiagrams", open("models/DTCBD/metamodels/DTCBD_MM.mvc", 'r').read())
  8. model_add("formalisms/DTCBD/PartialRuntime_MM", "formalisms/SimpleClassDiagrams", open("models/DTCBD/metamodels/DTCBD_MM_partial_runtime.mvc", 'r').read())
  9. model_add("formalisms/DTCBD/FullRuntime_MM", "formalisms/SimpleClassDiagrams", open("models/DTCBD/metamodels/DTCBD_MM_runtime.mvc", 'r').read())
  10. model_add("models/DTCBD_model", "formalisms/DTCBD/Design_MM", open("models/DTCBD/models/simple_equation.mvc", 'r').read())
  11. transformation_add_MANUAL({"Design": "formalisms/DTCBD/Design_MM"}, {"Design": "formalisms/DTCBD/Design_MM"}, "models/DTCBD/edit")
  12. def trace_D2P(model):
  13. instantiate(model, "Association", ("Design/Block", "PartialRuntime/Block"), ID="D2P_block")
  14. transformation_add_AL({"Design": "formalisms/DTCBD/Design_MM", "PartialRuntime": "formalisms/DTCBD/PartialRuntime_MM"}, {"PartialRuntime": "formalisms/DTCBD/PartialRuntime_MM"}, "models/DTCBD/toRuntime", open("models/DTCBD/transformations/to_runtime.alc", 'r').read(), trace_D2P)
  15. def trace_P2F(model):
  16. instantiate(model, "Association", ("PartialRuntime/Block", "FullRuntime/Block"), ID="P2F_block")
  17. transformation_add_AL({"PartialRuntime": "formalisms/DTCBD/PartialRuntime_MM", "FullRuntime": "formalisms/DTCBD/FullRuntime_MM"}, {"NewFullRuntime": "formalisms/DTCBD/FullRuntime_MM"}, "models/DTCBD/merge", open("models/DTCBD/transformations/merge.alc", 'r').read(), trace_P2F)
  18. transformation_add_AL({"FullRuntime": "formalisms/DTCBD/FullRuntime_MM"}, {"FullRuntime": "formalisms/DTCBD/FullRuntime_MM"}, "models/DTCBD/simulate", open("models/DTCBD/transformations/simulate.alc", 'r').read())
  19. transformation_add_AL({}, {}, "models/DTCBD/restartSim", open("models/generic/restart_simulation.alc", 'r').read())
  20. model_add("models/live_modelling_DTCBD", "formalisms/ProcessModel", open("models/DTCBD/PM_live_modelling.mvc", 'r').read())
  21. def modify_model(model):
  22. elements = element_list_nice(model)
  23. for e in elements:
  24. if e.get("value", None) == 2.0:
  25. while 1:
  26. time.sleep(1)
  27. elif e.get("__type", None) == "Design/AdditionBlock":
  28. adder = e["__id"]
  29. links = read_outgoing(model, adder, "Design/Link")
  30. destinations = [read_association_destination(model, link) for link in links]
  31. else:
  32. mult = instantiate(model, "Design/MultiplyBlock")
  33. two = instantiate(model, "Design/ConstantBlock")
  34. attr_assign(model, two, "value", 2.0)
  35. instantiate(model, "Design/Link", (adder, mult))
  36. instantiate(model, "Design/Link", (two, mult))
  37. for link in links:
  38. delete_element(model, link)
  39. for destination in destinations:
  40. instantiate(model, "Design/Link", (mult, destination))
  41. process_execute("models/live_modelling_DTCBD", {"design_model": "models/DTCBD_model"}, {"models/DTCBD/edit": modify_model})