pm.mvc 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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. name : String
  43. }
  44. Association Consumes (Exec, Data) {
  45. name : String
  46. }
  47. Association Then (Decision, Activity) {}
  48. Association Else (Decision, Activity) {}
  49. Association Next (Activity, Activity) {}
  50. }
  51. export ProcessModel to models/ProcessModel