123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298 |
- include "primitives.alh"
- include "modelling.alh"
- include "object_operations.alh"
- Composite schedule {
- {Contains} Success success {}
- {Contains} Failure failure {}
- {Contains} ForAll update_blocks {
- LHS {
- Pre_abstract/Block pre_update_0 {
- label = "0"
- }
- Pre_rendered/Group pre_update_1 {
- label = "1"
- }
- Pre_TracabilityLink (pre_update_0, pre_update_1){
- label = "2"
- }
- }
- RHS {
- Post_abstract/Block post_update_0 {
- label = "0"
- }
- Post_rendered/Group post_update_1 {
- label = "1"
- value___asid = $
- String function value(model : Element, name : String, mapping : Element):
- // Update the mapping!
- if (read_nr_out(string_split(mapping["0"], "/")) > 1):
- return list_read(string_split(mapping["0"], "/"), 1)!
- else:
- return mapping["0"]!
- $
- value_x = $
- Integer function value(model : Element, name : String, mapping : Element):
- return read_attribute(model, name, "x")!
- $
- value_y = $
- Integer function value(model : Element, name : String, mapping : Element):
- return read_attribute(model, name, "y")!
- $
- }
- Post_TracabilityLink (post_update_0, post_update_1){
- label = "2"
- }
- }
- }
- {Contains} ForAll render_blocks {
- LHS {
- Pre_abstract/Block pre_block_0 {
- label = "0"
- }
- constraint = $
- Boolean function constraint(model : Element, mapping : Element):
- Element trace_links
- trace_links = allOutgoingAssociationInstances(model, mapping["0"], "TracabilityLink")
- if (read_nr_out(trace_links) > 0):
- log("Block already connected; ignoring!")
- return False!
- else:
- return True!
- $
- }
- RHS {
- Post_abstract/Block post_block_0 {
- label = "0"
- }
- Post_rendered/Group post_block_1 {
- label = "1"
- value___asid = $
- String function value(model : Element, name : String, mapping : Element):
- if (list_len(string_split(mapping["0"], "/")) > 1):
- return list_read(string_split(mapping["0"], "/"), 1)!
- else:
- return mapping["0"]!
- $
- value_x = $
- Integer function value(model : Element, name : String, mapping : Element):
- return 0!
- $
- value_y = $
- Integer function value(model : Element, name : String, mapping : Element):
- return 0!
- $
- }
- Post_rendered/Rectangle post_block_2 {
- label = "2"
- value_x = $
- Integer function value(model : Element, name : String, mapping : Element):
- return 0!
- $
- value_y = $
- Integer function value(model : Element, name : String, mapping : Element):
- return 0!
- $
- value_width = $
- Integer function value(model : Element, name : String, mapping : Element):
- return 30!
- $
- value_height = $
- Integer function value(model : Element, name : String, mapping : Element):
- return 30!
- $
- value_lineWidth = $
- Integer function value(model : Element, name : String, mapping : Element):
- return 2!
- $
- value_lineColour = $
- String function value(model : Element, name : String, mapping : Element):
- return "black"!
- $
- value_fillColour = $
- String function value(model : Element, name : String, mapping : Element):
- return "white"!
- $
- }
- Post_rendered/Text post_block_3 {
- label = "3"
- value_x = $
- Integer function value(model : Element, name : String, mapping : Element):
- return 10!
- $
- value_y = $
- Integer function value(model : Element, name : String, mapping : Element):
- return 10!
- $
- value_lineWidth = $
- Integer function value(model : Element, name : String, mapping : Element):
- return 1!
- $
- value_lineColour = $
- String function value(model : Element, name : String, mapping : Element):
- return "black"!
- $
- value_text = $
- String function value(model : Element, name : String, mapping : Element):
- String type
- type = read_type(model, mapping["0"])
- if (type == "abstract/AdditionBlock"):
- return "+"!
- elif (type == "abstract/NegatorBlock"):
- return "-"!
- elif (type == "abstract/ConstantBlock"):
- return "c"!
- elif (type == "abstract/MultiplyBlock"):
- return "*"!
- elif (type == "abstract/InverseBlock"):
- return "/"!
- elif (type == "abstract/DerivatorBlock"):
- return "d/dx"!
- elif (type == "abstract/IntegratorBlock"):
- return "1/s"!
- elif (type == "abstract/DelayBlock"):
- return "DELAY"!
- elif (type == "abstract/ProbeBlock"):
- return "PROBE"!
- else:
- return ("Unknown type: " + type)!
- $
- }
- Post_rendered/contains (post_block_1, post_block_2) {
- label = "4"
- }
- Post_rendered/contains (post_block_1, post_block_3) {
- label = "5"
- }
- Post_TracabilityLink (post_block_0, post_block_1) {
- label = "6"
- }
- }
- }
- {Contains} ForAll remove_connections {
- LHS {
- Pre_rendered/Line {
- label = "0"
- }
- }
- RHS {
- }
- }
- {Contains} ForAll render_connections {
- LHS {
- Pre_abstract/Block pre_conn_0 {
- label = "0"
- }
- Pre_abstract/Block pre_conn_1 {
- label = "1"
- }
- Pre_abstract/Link (pre_conn_0, pre_conn_1){
- label = "2"
- }
- Pre_rendered/Group pre_conn_3 {
- label = "3"
- }
- Pre_rendered/Group pre_conn_4 {
- label = "4"
- }
- Pre_TracabilityLink (pre_conn_0, pre_conn_3) {
- label = "5"
- }
- Pre_TracabilityLink (pre_conn_1, pre_conn_4) {
- label = "6"
- }
- }
- RHS {
- Post_abstract/Block post_conn_0 {
- label = "0"
- }
- Post_abstract/Block post_conn_1 {
- label = "1"
- }
- Post_abstract/Link (post_conn_0, post_conn_1){
- label = "2"
- }
- Post_rendered/Group post_conn_3 {
- label = "3"
- }
- Post_rendered/Group post_conn_4 {
- label = "4"
- }
- Post_TracabilityLink (post_conn_0, post_conn_3) {
- label = "5"
- }
- Post_TracabilityLink (post_conn_1, post_conn_4) {
- label = "6"
- }
- Post_rendered/Line {
- label = "7"
- value___asid = $
- String function value(model : Element, name : String, mapping : Element):
- if (list_len(string_split(mapping["2"], "/")) > 1):
- return list_read(string_split(mapping["2"], "/"), 1)!
- else:
- return mapping["2"]!
- $
- value_x = $
- Integer function value(model : Element, name : String, mapping : Element):
- return read_attribute(model, mapping["3"], "x")!
- $
- value_y = $
- Integer function value(model : Element, name : String, mapping : Element):
- return read_attribute(model, mapping["3"], "y")!
- $
- value_lineWidth = $
- Integer function value(model : Element, name : String, mapping : Element):
- return 1!
- $
- value_lineColour = $
- String function value(model : Element, name : String, mapping : Element):
- if (read_type(model, name) == "ICLink"):
- return "red"!
- else:
- return "black"!
- $
- value_targetX = $
- Integer function value(model : Element, name : String, mapping : Element):
- return read_attribute(model, mapping["4"], "x")!
- $
- value_targetY = $
- Integer function value(model : Element, name : String, mapping : Element):
- return read_attribute(model, mapping["4"], "y")!
- $
- }
- }
- }
- }
- Initial (schedule, update_blocks) {}
- OnSuccess (update_blocks, render_blocks) {}
- OnFailure (update_blocks, render_blocks) {}
- OnSuccess (render_blocks, remove_connections) {}
- OnFailure (render_blocks, remove_connections) {}
- OnSuccess (remove_connections, render_connections) {}
- OnFailure (remove_connections, render_connections) {}
- OnSuccess (render_connections, success) {}
- OnFailure (render_connections, success) {}
|