Explorar o código

Nicer CBD mapper (with kind of a tracability check)

Yentl Van Tendeloo %!s(int64=8) %!d(string=hai) anos
pai
achega
b58e65f467
Modificáronse 1 ficheiros con 25 adicións e 2 borrados
  1. 25 2
      models/CBD_mapper.mvc

+ 25 - 2
models/CBD_mapper.mvc

@@ -11,6 +11,18 @@ A B {
                 Pre_CausalBlockDiagrams/Block pre_block_0 {
                     label = "0"
                 }
+
+                constraint = $
+                    Boolean function constraint(model : Element, mapping : Element):
+                        Element trace_links
+                        trace_links = allOutgoingAssociationInstances(model, mapping["0"], "TracabilityLink")
+                        log("Found tracability links: " + cast_v2s(read_nr_out(trace_links)))
+                        if (read_nr_out(trace_links) > 0):
+                            log("Block already connected; ignoring!")
+                            return False!
+                        else:
+                            return True!
+                    $
             }
             RHS {
                 Post_CausalBlockDiagrams/Block post_block_0 {
@@ -43,11 +55,11 @@ A B {
                         $
                     value_width = $
                         Integer function value(model : Element, name : String, mapping : Element):
-                            return 10!
+                            return 30!
                         $
                     value_height = $
                         Integer function value(model : Element, name : String, mapping : Element):
-                            return 10!
+                            return 30!
                         $
                     value_lineWidth = $
                         Integer function value(model : Element, name : String, mapping : Element):
@@ -147,6 +159,17 @@ A B {
                 Pre_TracabilityLink (pre_conn_1, pre_conn_4) {
                     label = "6"
                 }
+
+                constraint = $
+                    Boolean function constraint(model : Element, mapping : Element):
+                        Element trace_links
+                        trace_links = allOutgoingAssociationInstances(model, mapping["2"], "TracabilityLink")
+                        if (read_nr_out(trace_links) > 0):
+                            log("Block already connected; ignoring!")
+                            return False!
+                        else:
+                            return True!
+                    $
             }
             RHS {
                 Post_CausalBlockDiagrams/Block post_conn_0 {