pm.mvc 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import models/SimpleClassDiagrams as SimpleClassDiagrams
  2. include "primitives.alh"
  3. include "object_operations.alh"
  4. SimpleClassDiagrams ProcessModel {
  5. SimpleAttribute String {}
  6. SimpleAttribute MvCName {
  7. constraint = $
  8. String function constraint(model : Element, name : String):
  9. if (bool_not(is_physical_string(model["model"][name]))):
  10. return "MvCName has no string value"!
  11. else:
  12. return "OK"!
  13. $
  14. }
  15. Class Activity {}
  16. Class Start : Activity {
  17. lower_cardinality = 1
  18. upper_cardinality = 1
  19. }
  20. Class Finish : Activity {
  21. lower_cardinality = 1
  22. }
  23. Class Fork : Activity {}
  24. Class Join : Activity {}
  25. Class Decision : Activity {
  26. constraint = $
  27. String function constraint(model : Element, name : String):
  28. if (read_nr_out(allOutgoingAssociationInstances(model, name, "Next")) == 0):
  29. return "OK"!
  30. else:
  31. return "Decision node cannot have a normal 'Next' link"!
  32. $
  33. }
  34. Class Exec : Activity {
  35. name : MvCName
  36. }
  37. Class Data {
  38. name : MvCName
  39. type : MvCName
  40. }
  41. Association Produces (Exec, Data) {}
  42. Association Consumes (Exec, Data) {}
  43. Association Then (Decision, Activity) {}
  44. Association Else (Decision, Activity) {}
  45. Association Next (Activity, Activity) {}
  46. }
  47. export ProcessModel to models/ProcessModel