pm.mvc 1.9 KB

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