import models/SimpleClassDiagrams as SimpleClassDiagrams include "primitives.alh" include "object_operations.alh" SimpleClassDiagrams ProcessModel { SimpleAttribute String {} SimpleAttribute MvCName { constraint = $ String function constraint(model : Element, name : String): if (bool_not(is_physical_string(model["model"][name]))): return "MvCName has no string value"! else: return "OK"! $ } Class Activity {} Class Start : Activity { lower_cardinality = 1 upper_cardinality = 1 } Class Finish : Activity { lower_cardinality = 1 } Class Fork : Activity {} Class Join : Activity {} Class Decision : Activity { constraint = $ String function constraint(model : Element, name : String): if (read_nr_out(allOutgoingAssociationInstances(model, name, "Next")) == 0): return "OK"! else: return "Decision node cannot have a normal 'Next' link"! $ } Class Exec : Activity { name : MvCName } Class Data { name : MvCName type : MvCName } Association Produces (Exec, Data) { name : String } Association Consumes (Exec, Data) { name : String } Association Then (Decision, Activity) {} Association Else (Decision, Activity) {} Association Next (Activity, Activity) {} } export ProcessModel to models/ProcessModel