Browse Source

Merge branch 'master' into testing

Yentl Van Tendeloo 7 years ago
parent
commit
c5eff4e8f8

+ 21 - 3
bootstrap/core_algorithm.alc

@@ -1235,7 +1235,7 @@ String function cmd_model_render(model_name : String, mapper_name : String, rend
 	//	if (value_eq(read_attribute(core, trace_link_id, "type"), "operatesOn")):
 	//	if (value_eq(read_attribute(core, trace_link_id, "type"), "operatesOn")):
 	//		merged_metamodel_id = readAssociationDestination(core, trace_link_id)
 	//		merged_metamodel_id = readAssociationDestination(core, trace_link_id)
 
 
-String function cmd_transformation_execute(transformation_name : String, source_models : Element, target_models : Element):
+String function cmd_transformation_execute(transformation_name : String, source_models : Element, target_models : Element, tracability_name : String):
 	// Execute a transformation, whatever type it is
 	// Execute a transformation, whatever type it is
 	// First we detect the type, so we know how to prepare for invocation
 	// First we detect the type, so we know how to prepare for invocation
 	String transformation_id
 	String transformation_id
@@ -1317,7 +1317,25 @@ String function cmd_transformation_execute(transformation_name : String, source_
 				else:
 				else:
 					output("Success: ready for MT execution")
 					output("Success: ready for MT execution")
 
 
-				result = execute_operation(transformation_id, inputs, read_root())
+				// Do tracability
+				Element tracability_model
+				if (tracability_name != ""):
+					// Check if exists
+					if (get_entry_id(tracability_name) == ""):
+						// No, so create
+						tracability_model = instantiate_model(get_full_model(get_entry_id("formalisms/Tracability"), get_entry_id("formalisms/SimpleClassDiagrams")))
+						model_create(tracability_model, tracability_name, get_entry_id("formalisms/Tracability"), "Model")
+					else:
+						// Yes, so read out
+						tracability_model = get_full_model(get_entry_id(tracability_name), get_entry_id("formalisms/Tracability"))
+				else:
+					tracability_model = read_root()
+
+				result = execute_operation(transformation_id, inputs, tracability_model)
+
+				// Flush tracability again, just to be sure
+				if (tracability_name != ""):
+					model_overwrite(tracability_model, get_entry_id(tracability_name), get_entry_id("formalisms/Tracability"))
 
 
 				// Now write out the models again
 				// Now write out the models again
 				if (element_eq(result, read_root())):
 				if (element_eq(result, read_root())):
@@ -2179,7 +2197,7 @@ Void function user_function_skip_init(user_id : String):
 		elif (cmd == "model_rendered"):
 		elif (cmd == "model_rendered"):
 			output(cmd_model_rendered(single_input("Model name?"), single_input("Mapper name?")))
 			output(cmd_model_rendered(single_input("Model name?"), single_input("Mapper name?")))
 		elif (cmd == "transformation_execute"):
 		elif (cmd == "transformation_execute"):
-			output(cmd_transformation_execute(single_input("Transformation name?"), dict_input("Source models?"), dict_input("Target models?")))
+			output(cmd_transformation_execute(single_input("Transformation name?"), dict_input("Source models?"), dict_input("Target models?"), single_input("Tracability model?")))
 		elif (cmd == "verify"):
 		elif (cmd == "verify"):
 			result = cmd_verify(single_input("Model name?"), single_input("Metamodel name?"))
 			result = cmd_verify(single_input("Model name?"), single_input("Metamodel name?"))
 			if (result != ""):
 			if (result != ""):

+ 1 - 0
bootstrap/initial_code_task.alc

@@ -24,5 +24,6 @@ Void mutable function __main():
 	exec(root["bootstrap/conformance_finding.alc"]["initializers"])
 	exec(root["bootstrap/conformance_finding.alc"]["initializers"])
 	exec(root["bootstrap/typing.alc"]["initializers"])
 	exec(root["bootstrap/typing.alc"]["initializers"])
 	exec(root["bootstrap/compiler.alc"]["initializers"])
 	exec(root["bootstrap/compiler.alc"]["initializers"])
+	exec(root["bootstrap/json.alc"]["initializers"])
 	new_task()
 	new_task()
 	return!
 	return!

+ 117 - 0
bootstrap/json.alc

@@ -0,0 +1,117 @@
+include "primitives.alh"
+include "services.alh"
+include "constructors.alh"
+include "modelling.alh"
+
+String function json_connect():
+	String port
+	port = ""
+	while (port == ""):
+		port = comm_connect("JSON")
+	return port!
+
+Void function json_send_data(port : String, data : Element):
+	// Send the current value to the service
+	// First determine what it is!
+
+	if (has_value(data)):
+		// Primitive value, so send as-is
+		comm_set(port, "P")
+		comm_set(port, data)
+
+	else:
+		// Is a dict or list
+		// Problem is that we don't know which it is, as everything is a dictionary in the Modelverse...
+		// We will do a simple check: if it is a dictionary with keys the contiguous range of integers from 0 to length - 1, it is a list!
+		Element keys
+		Element expected
+		Element copy
+		Element entry
+		Element key
+
+		keys = dict_keys(data)
+		expected = list_to_set(range(dict_len(data)))
+		if (set_equality(keys, expected)):
+			// Equal, so we are (most likely...) dealing with a list
+			comm_set(port, "L")
+			comm_set(port, list_len(data))
+			
+			copy = list_copy(data)
+			while (list_len(copy) > 0):
+				entry = list_pop(copy, 0)
+				json_send_data(port, entry)
+		else:
+			// Not equal, so we are surely dealing with a dict
+			comm_set(port, "D")
+			comm_set(port, dict_len(data))
+
+			while (set_len(keys) > 0):
+				key = set_pop(keys)
+				comm_set(port, key)
+				json_send_data(port, data[key])
+	return!
+
+Element function process_JSON_data(port : String):
+	String type
+	Element result
+	type = comm_get(port)
+
+	if (type == "P"):
+		// Primitive data type, so just return as-is
+		result = comm_get(port)
+	elif (type == "L"):
+		// List, so fetch elements in turn
+		Integer length
+
+		length = comm_get(port)
+		result = list_create()
+		while (length > 0):
+			list_append(result, process_JSON_data(port))
+			length = length - 1
+	elif (type == "D"):
+		// Dict, so fetch elements in turn
+		Integer length
+
+		length = comm_get(port)
+		result = dict_create()
+		while (length > 0):
+			dict_add(result, comm_get(port), process_JSON_data(port))
+			length = length - 1
+	return result!
+
+String function json_serialize(data : Element):
+	String port
+	String response
+	port = json_connect()
+	comm_set(port, "encode")
+	response = comm_get(port)
+
+	if (response == "OK"):
+		// Send data to the service...
+		json_send_data(port, data)
+		response = comm_get(port)
+		comm_close(port)
+		return response!
+	else:
+		log("Error: " + response)
+		comm_close(port)
+		return ""!
+
+Element function json_deserialize(str : String):
+	String port
+	String response
+	Element rval
+	port = json_connect()
+	comm_set(port, "decode")
+
+	response = comm_get(port)
+
+	if (response == "OK"):
+		comm_set(port, str)
+		rval = process_JSON_data(port)
+		comm_close(port)
+		return rval!
+	else:
+		log("Error: " + response)
+		comm_close(port)
+		return read_root()!

+ 37 - 0
bootstrap/semi_primitives.alc

@@ -314,6 +314,19 @@ Element function dict_copy(d : Element):
 
 
 	return result!
 	return result!
 
 
+Element function list_copy(lst : Element):
+	Integer counter
+	Element result
+
+	result = list_create()
+	counter = 0
+
+	while (counter < list_len(lst)):
+		list_append(result, lst[counter])
+		counter = counter + 1
+
+	return result!
+
 Element function set_to_list(s : Element):
 Element function set_to_list(s : Element):
 	Element result
 	Element result
 	Element tmp
 	Element tmp
@@ -325,6 +338,18 @@ Element function set_to_list(s : Element):
 
 
 	return result!
 	return result!
 
 
+Element function list_to_set(s : Element):
+	Element result
+	Integer i
+
+	i = 0
+	result = set_create()
+	while (i < list_len(s)):
+		set_add(result, s[i])
+		i = i + 1
+
+	return result!
+
 Void function dict_overwrite(d : Element, key : Element, value : Element):
 Void function dict_overwrite(d : Element, key : Element, value : Element):
 	if (dict_in(d, key)):
 	if (dict_in(d, key)):
 		dict_delete(d, key)
 		dict_delete(d, key)
@@ -449,3 +474,15 @@ Void function set_subtract(set1 : Element, set2 : Element):
 		if (set_in(set1, elem)):
 		if (set_in(set1, elem)):
 			set_remove(set1, elem)
 			set_remove(set1, elem)
 	return!
 	return!
+
+Element function range(max : Integer):
+	Element result
+	Integer counter
+	result = list_create()
+	counter = 0
+
+	while (counter < max):
+		list_append(result, counter)
+		counter = counter + 1
+
+	return result!

+ 2 - 0
interface/HUTN/includes/json.alh

@@ -0,0 +1,2 @@
+String function json_serialize(data : Element)
+Element function json_deserialize(str : String)

+ 3 - 0
interface/HUTN/includes/primitives.alh

@@ -114,6 +114,8 @@ Void function set_subtract(sa : Element, sb : Element)
 Element function dict_eq(da : Element, db : Element)
 Element function dict_eq(da : Element, db : Element)
 Element function dict_copy(dict : Element)
 Element function dict_copy(dict : Element)
 Element function set_to_list(s : Element)
 Element function set_to_list(s : Element)
+Element function list_to_set(s : Element)
+Element function list_copy(list : Element)
 Element function create_tuple(a : Element, b : Element)
 Element function create_tuple(a : Element, b : Element)
 Void function dict_overwrite(a : Element, b : Element, c : Element)
 Void function dict_overwrite(a : Element, b : Element, c : Element)
 Void function set_merge(sa : Element, sb : Element)
 Void function set_merge(sa : Element, sb : Element)
@@ -125,3 +127,4 @@ String function reverseKeyLookup(a: Element, b: Element)
 Element function reverseKeyLookupMulti(a: Element, b: Element)
 Element function reverseKeyLookupMulti(a: Element, b: Element)
 Element function dict_values(dict : Element)
 Element function dict_values(dict : Element)
 Boolean function is_error(a : Element)
 Boolean function is_error(a : Element)
+Element function range(max : Integer)

+ 5 - 0
scripts/run_local_modelverse.py

@@ -11,6 +11,7 @@ else:
 # Start up the HUTN compilation service already
 # Start up the HUTN compilation service already
 try:
 try:
     hutn = subprocess.Popen([sys.executable, "scripts/HUTN_service.py", "127.0.0.1:%s" % port])
     hutn = subprocess.Popen([sys.executable, "scripts/HUTN_service.py", "127.0.0.1:%s" % port])
+    json = subprocess.Popen([sys.executable, "scripts/JSON_service.py", "127.0.0.1:%s" % port])
 
 
     os.chdir("hybrid_server")
     os.chdir("hybrid_server")
     subprocess.check_call([sys.executable, "-m", "sccd.compiler.sccdc", "-p", "threads", "server.xml"])
     subprocess.check_call([sys.executable, "-m", "sccd.compiler.sccdc", "-p", "threads", "server.xml"])
@@ -33,3 +34,7 @@ finally:
         hutn.terminate()
         hutn.terminate()
     except:
     except:
         pass
         pass
+    try:
+        json.terminate()
+    except:
+        pass

+ 3 - 3
wrappers/classes/modelverse.xml

@@ -640,7 +640,7 @@
                             <state id="send_operation">
                             <state id="send_operation">
                                 <onentry>
                                 <onentry>
                                     <raise event="request">
                                     <raise event="request">
-                                        <parameter expr="['transformation_execute', self.parameters[0]] + self.dict_to_list(self.parameters[1]) + self.dict_to_list(self.parameters[2])"/>
+                                        <parameter expr="['transformation_execute', self.parameters[0]] + self.dict_to_list(self.parameters[1]) + self.dict_to_list(self.parameters[2]) + [self.parameters[3]]"/>
                                     </raise>
                                     </raise>
                                 </onentry>
                                 </onentry>
 
 
@@ -681,7 +681,7 @@
                             <state id="send_operation">
                             <state id="send_operation">
                                 <onentry>
                                 <onentry>
                                     <raise event="request">
                                     <raise event="request">
-                                        <parameter expr="['transformation_execute', self.parameters[0]] + self.dict_to_list(self.parameters[1]) + self.dict_to_list(self.parameters[2])"/>
+                                        <parameter expr="['transformation_execute', self.parameters[0]] + self.dict_to_list(self.parameters[1]) + self.dict_to_list(self.parameters[2]) + [self.parameters[3]]"/>
                                     </raise>
                                     </raise>
                                 </onentry>
                                 </onentry>
 
 
@@ -722,7 +722,7 @@
                             <state id="send_metadata">
                             <state id="send_metadata">
                                 <onentry>
                                 <onentry>
                                     <raise event="request">
                                     <raise event="request">
-                                        <parameter expr="['transformation_execute', self.parameters[0]] + self.dict_to_list(self.parameters[1]) + self.dict_to_list(self.parameters[2])"/>
+                                        <parameter expr="['transformation_execute', self.parameters[0]] + self.dict_to_list(self.parameters[1]) + self.dict_to_list(self.parameters[2]) + ['']"/>
                                     </raise>
                                     </raise>
 
 
                                     <script>
                                     <script>

+ 7 - 5
wrappers/modelverse.py

@@ -158,11 +158,11 @@ def transformation_add_MANUAL(source_metamodels, target_metamodels, operation_na
     INPUT("exit", context, [])
     INPUT("exit", context, [])
     return OUTPUT()
     return OUTPUT()
 
 
-def transformation_execute_MT(operation_name, input_models_dict, output_models_dict, statechart=None):
+def transformation_execute_MT(operation_name, input_models_dict, output_models_dict, statechart=None, tracability_model=""):
     if statechart is not None:
     if statechart is not None:
         port_sc = statechart[0].addOutputListener(statechart[2])
         port_sc = statechart[0].addOutputListener(statechart[2])
 
 
-    INPUT("transformation_execute_MT", None, [operation_name, input_models_dict, output_models_dict])
+    INPUT("transformation_execute_MT", None, [operation_name, input_models_dict, output_models_dict, tracability_model])
     context = OUTPUT()
     context = OUTPUT()
     if statechart is not None:
     if statechart is not None:
         while 1:
         while 1:
@@ -192,11 +192,10 @@ def transformation_execute_MT(operation_name, input_models_dict, output_models_d
     else:
     else:
         return OUTPUT()
         return OUTPUT()
 
 
-def transformation_execute_AL(operation_name, input_models_dict, output_models_dict, statechart=None):
+def transformation_execute_AL(operation_name, input_models_dict, output_models_dict, statechart=None, tracability_model=""):
     if statechart is not None:
     if statechart is not None:
         port_sc = statechart[0].addOutputListener(statechart[2])
         port_sc = statechart[0].addOutputListener(statechart[2])
-
-    INPUT("transformation_execute_AL", None, [operation_name, input_models_dict, output_models_dict])
+    INPUT("transformation_execute_AL", None, [operation_name, input_models_dict, output_models_dict, tracability_model])
 
 
     context = OUTPUT()
     context = OUTPUT()
     if statechart is not None:
     if statechart is not None:
@@ -434,3 +433,6 @@ def process_execute(process_name, prefix, callbacks=None):
             if operation == "Finished":
             if operation == "Finished":
                 # Finished execution of the process, so exit
                 # Finished execution of the process, so exit
                 return None
                 return None
+
+def get_taskname():
+    raise NotImplementedError("TODO")

+ 249 - 80
wrappers/modelverse_SCCD.py

@@ -1,7 +1,7 @@
 """
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
 
-Date:   Wed Oct  4 16:24:29 2017
+Date:   Fri Oct 20 11:37:16 2017
 
 
 Model author: Yentl Van Tendeloo
 Model author: Yentl Van Tendeloo
 Model name:   MvK Server
 Model name:   MvK Server
@@ -44,7 +44,6 @@ class Modelverse(RuntimeClassBase):
         self.context = None
         self.context = None
         self.registered_metamodel = {}
         self.registered_metamodel = {}
         self.inputs = {}
         self.inputs = {}
-        self.catch_all = True
     
     
     def user_defined_destructor(self):
     def user_defined_destructor(self):
         pass
         pass
@@ -332,7 +331,6 @@ class Modelverse(RuntimeClassBase):
         
         
         # state /initialized/behaviour/operations/store_on_scripted/process_execute/enacting
         # state /initialized/behaviour/operations/store_on_scripted/process_execute/enacting
         self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting"] = State(62, "/initialized/behaviour/operations/store_on_scripted/process_execute/enacting", self)
         self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting"] = State(62, "/initialized/behaviour/operations/store_on_scripted/process_execute/enacting", self)
-        self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting"].setEnter(self._initialized_behaviour_operations_store_on_scripted_process_execute_enacting_enter)
         
         
         # state /initialized/behaviour/operations/store_on_scripted/process_execute/enacting/sc
         # state /initialized/behaviour/operations/store_on_scripted/process_execute/enacting/sc
         self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/sc"] = State(63, "/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/sc", self)
         self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/sc"] = State(63, "/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/sc", self)
@@ -443,110 +441,130 @@ class Modelverse(RuntimeClassBase):
         self.states["/initialized/behaviour/operations/read_attrs"] = State(91, "/initialized/behaviour/operations/read_attrs", self)
         self.states["/initialized/behaviour/operations/read_attrs"] = State(91, "/initialized/behaviour/operations/read_attrs", self)
         self.states["/initialized/behaviour/operations/read_attrs"].setEnter(self._initialized_behaviour_operations_read_attrs_enter)
         self.states["/initialized/behaviour/operations/read_attrs"].setEnter(self._initialized_behaviour_operations_read_attrs_enter)
         
         
+        # state /initialized/behaviour/operations/read_defined_attrs
+        self.states["/initialized/behaviour/operations/read_defined_attrs"] = State(92, "/initialized/behaviour/operations/read_defined_attrs", self)
+        self.states["/initialized/behaviour/operations/read_defined_attrs"].setEnter(self._initialized_behaviour_operations_read_defined_attrs_enter)
+        
         # state /initialized/behaviour/operations/instantiate
         # state /initialized/behaviour/operations/instantiate
-        self.states["/initialized/behaviour/operations/instantiate"] = State(92, "/initialized/behaviour/operations/instantiate", self)
+        self.states["/initialized/behaviour/operations/instantiate"] = State(93, "/initialized/behaviour/operations/instantiate", self)
         
         
         # state /initialized/behaviour/operations/instantiate/decide_node_or_edge
         # state /initialized/behaviour/operations/instantiate/decide_node_or_edge
-        self.states["/initialized/behaviour/operations/instantiate/decide_node_or_edge"] = State(93, "/initialized/behaviour/operations/instantiate/decide_node_or_edge", self)
+        self.states["/initialized/behaviour/operations/instantiate/decide_node_or_edge"] = State(94, "/initialized/behaviour/operations/instantiate/decide_node_or_edge", self)
         
         
         # state /initialized/behaviour/operations/instantiate/created
         # state /initialized/behaviour/operations/instantiate/created
-        self.states["/initialized/behaviour/operations/instantiate/created"] = State(94, "/initialized/behaviour/operations/instantiate/created", self)
+        self.states["/initialized/behaviour/operations/instantiate/created"] = State(95, "/initialized/behaviour/operations/instantiate/created", self)
         
         
         # state /initialized/behaviour/operations/delete_element
         # state /initialized/behaviour/operations/delete_element
-        self.states["/initialized/behaviour/operations/delete_element"] = State(95, "/initialized/behaviour/operations/delete_element", self)
+        self.states["/initialized/behaviour/operations/delete_element"] = State(96, "/initialized/behaviour/operations/delete_element", self)
         self.states["/initialized/behaviour/operations/delete_element"].setEnter(self._initialized_behaviour_operations_delete_element_enter)
         self.states["/initialized/behaviour/operations/delete_element"].setEnter(self._initialized_behaviour_operations_delete_element_enter)
         
         
         # state /initialized/behaviour/operations/attr_assign
         # state /initialized/behaviour/operations/attr_assign
-        self.states["/initialized/behaviour/operations/attr_assign"] = State(96, "/initialized/behaviour/operations/attr_assign", self)
+        self.states["/initialized/behaviour/operations/attr_assign"] = State(97, "/initialized/behaviour/operations/attr_assign", self)
         self.states["/initialized/behaviour/operations/attr_assign"].setEnter(self._initialized_behaviour_operations_attr_assign_enter)
         self.states["/initialized/behaviour/operations/attr_assign"].setEnter(self._initialized_behaviour_operations_attr_assign_enter)
         
         
         # state /initialized/behaviour/operations/attr_assign_code
         # state /initialized/behaviour/operations/attr_assign_code
-        self.states["/initialized/behaviour/operations/attr_assign_code"] = State(97, "/initialized/behaviour/operations/attr_assign_code", self)
+        self.states["/initialized/behaviour/operations/attr_assign_code"] = State(98, "/initialized/behaviour/operations/attr_assign_code", self)
         self.states["/initialized/behaviour/operations/attr_assign_code"].setEnter(self._initialized_behaviour_operations_attr_assign_code_enter)
         self.states["/initialized/behaviour/operations/attr_assign_code"].setEnter(self._initialized_behaviour_operations_attr_assign_code_enter)
         
         
         # state /initialized/behaviour/operations/attr_delete
         # state /initialized/behaviour/operations/attr_delete
-        self.states["/initialized/behaviour/operations/attr_delete"] = State(98, "/initialized/behaviour/operations/attr_delete", self)
+        self.states["/initialized/behaviour/operations/attr_delete"] = State(99, "/initialized/behaviour/operations/attr_delete", self)
         self.states["/initialized/behaviour/operations/attr_delete"].setEnter(self._initialized_behaviour_operations_attr_delete_enter)
         self.states["/initialized/behaviour/operations/attr_delete"].setEnter(self._initialized_behaviour_operations_attr_delete_enter)
         
         
+        # state /initialized/behaviour/operations/attr_type
+        self.states["/initialized/behaviour/operations/attr_type"] = State(100, "/initialized/behaviour/operations/attr_type", self)
+        self.states["/initialized/behaviour/operations/attr_type"].setEnter(self._initialized_behaviour_operations_attr_type_enter)
+        
+        # state /initialized/behaviour/operations/attr_name
+        self.states["/initialized/behaviour/operations/attr_name"] = State(101, "/initialized/behaviour/operations/attr_name", self)
+        self.states["/initialized/behaviour/operations/attr_name"].setEnter(self._initialized_behaviour_operations_attr_name_enter)
+        
+        # state /initialized/behaviour/operations/attr_optional
+        self.states["/initialized/behaviour/operations/attr_optional"] = State(102, "/initialized/behaviour/operations/attr_optional", self)
+        self.states["/initialized/behaviour/operations/attr_optional"].setEnter(self._initialized_behaviour_operations_attr_optional_enter)
+        
         # state /initialized/behaviour/operations/read_outgoing
         # state /initialized/behaviour/operations/read_outgoing
-        self.states["/initialized/behaviour/operations/read_outgoing"] = State(99, "/initialized/behaviour/operations/read_outgoing", self)
+        self.states["/initialized/behaviour/operations/read_outgoing"] = State(103, "/initialized/behaviour/operations/read_outgoing", self)
         self.states["/initialized/behaviour/operations/read_outgoing"].setEnter(self._initialized_behaviour_operations_read_outgoing_enter)
         self.states["/initialized/behaviour/operations/read_outgoing"].setEnter(self._initialized_behaviour_operations_read_outgoing_enter)
         
         
         # state /initialized/behaviour/operations/read_incoming
         # state /initialized/behaviour/operations/read_incoming
-        self.states["/initialized/behaviour/operations/read_incoming"] = State(100, "/initialized/behaviour/operations/read_incoming", self)
+        self.states["/initialized/behaviour/operations/read_incoming"] = State(104, "/initialized/behaviour/operations/read_incoming", self)
         self.states["/initialized/behaviour/operations/read_incoming"].setEnter(self._initialized_behaviour_operations_read_incoming_enter)
         self.states["/initialized/behaviour/operations/read_incoming"].setEnter(self._initialized_behaviour_operations_read_incoming_enter)
         
         
         # state /initialized/behaviour/operations/read_association_source
         # state /initialized/behaviour/operations/read_association_source
-        self.states["/initialized/behaviour/operations/read_association_source"] = State(101, "/initialized/behaviour/operations/read_association_source", self)
+        self.states["/initialized/behaviour/operations/read_association_source"] = State(105, "/initialized/behaviour/operations/read_association_source", self)
         self.states["/initialized/behaviour/operations/read_association_source"].setEnter(self._initialized_behaviour_operations_read_association_source_enter)
         self.states["/initialized/behaviour/operations/read_association_source"].setEnter(self._initialized_behaviour_operations_read_association_source_enter)
         
         
         # state /initialized/behaviour/operations/read_association_destination
         # state /initialized/behaviour/operations/read_association_destination
-        self.states["/initialized/behaviour/operations/read_association_destination"] = State(102, "/initialized/behaviour/operations/read_association_destination", self)
+        self.states["/initialized/behaviour/operations/read_association_destination"] = State(106, "/initialized/behaviour/operations/read_association_destination", self)
         self.states["/initialized/behaviour/operations/read_association_destination"].setEnter(self._initialized_behaviour_operations_read_association_destination_enter)
         self.states["/initialized/behaviour/operations/read_association_destination"].setEnter(self._initialized_behaviour_operations_read_association_destination_enter)
         
         
         # state /initialized/behaviour/operations/connections_between
         # state /initialized/behaviour/operations/connections_between
-        self.states["/initialized/behaviour/operations/connections_between"] = State(103, "/initialized/behaviour/operations/connections_between", self)
+        self.states["/initialized/behaviour/operations/connections_between"] = State(107, "/initialized/behaviour/operations/connections_between", self)
         self.states["/initialized/behaviour/operations/connections_between"].setEnter(self._initialized_behaviour_operations_connections_between_enter)
         self.states["/initialized/behaviour/operations/connections_between"].setEnter(self._initialized_behaviour_operations_connections_between_enter)
         
         
         # state /initialized/behaviour/operations/define_attribute
         # state /initialized/behaviour/operations/define_attribute
-        self.states["/initialized/behaviour/operations/define_attribute"] = State(104, "/initialized/behaviour/operations/define_attribute", self)
+        self.states["/initialized/behaviour/operations/define_attribute"] = State(108, "/initialized/behaviour/operations/define_attribute", self)
         self.states["/initialized/behaviour/operations/define_attribute"].setEnter(self._initialized_behaviour_operations_define_attribute_enter)
         self.states["/initialized/behaviour/operations/define_attribute"].setEnter(self._initialized_behaviour_operations_define_attribute_enter)
         
         
+        # state /initialized/behaviour/operations/undefine_attribute
+        self.states["/initialized/behaviour/operations/undefine_attribute"] = State(109, "/initialized/behaviour/operations/undefine_attribute", self)
+        self.states["/initialized/behaviour/operations/undefine_attribute"].setEnter(self._initialized_behaviour_operations_undefine_attribute_enter)
+        
         # state /initialized/behaviour/operations/all_instances
         # state /initialized/behaviour/operations/all_instances
-        self.states["/initialized/behaviour/operations/all_instances"] = State(105, "/initialized/behaviour/operations/all_instances", self)
+        self.states["/initialized/behaviour/operations/all_instances"] = State(110, "/initialized/behaviour/operations/all_instances", self)
         self.states["/initialized/behaviour/operations/all_instances"].setEnter(self._initialized_behaviour_operations_all_instances_enter)
         self.states["/initialized/behaviour/operations/all_instances"].setEnter(self._initialized_behaviour_operations_all_instances_enter)
         
         
         # state /initialized/behaviour/operations/save
         # state /initialized/behaviour/operations/save
-        self.states["/initialized/behaviour/operations/save"] = State(106, "/initialized/behaviour/operations/save", self)
+        self.states["/initialized/behaviour/operations/save"] = State(111, "/initialized/behaviour/operations/save", self)
         self.states["/initialized/behaviour/operations/save"].setEnter(self._initialized_behaviour_operations_save_enter)
         self.states["/initialized/behaviour/operations/save"].setEnter(self._initialized_behaviour_operations_save_enter)
         
         
         # state /initialized/behaviour/wait_for_action
         # state /initialized/behaviour/wait_for_action
-        self.states["/initialized/behaviour/wait_for_action"] = State(107, "/initialized/behaviour/wait_for_action", self)
+        self.states["/initialized/behaviour/wait_for_action"] = State(112, "/initialized/behaviour/wait_for_action", self)
         
         
         # state /initialized/behaviour/wait_for_action/disconnected
         # state /initialized/behaviour/wait_for_action/disconnected
-        self.states["/initialized/behaviour/wait_for_action/disconnected"] = State(108, "/initialized/behaviour/wait_for_action/disconnected", self)
+        self.states["/initialized/behaviour/wait_for_action/disconnected"] = State(113, "/initialized/behaviour/wait_for_action/disconnected", self)
         
         
         # state /initialized/behaviour/wait_for_action/connected
         # state /initialized/behaviour/wait_for_action/connected
-        self.states["/initialized/behaviour/wait_for_action/connected"] = State(109, "/initialized/behaviour/wait_for_action/connected", self)
+        self.states["/initialized/behaviour/wait_for_action/connected"] = State(114, "/initialized/behaviour/wait_for_action/connected", self)
         
         
         # state /initialized/behaviour/wait_for_action/megamodelling
         # state /initialized/behaviour/wait_for_action/megamodelling
-        self.states["/initialized/behaviour/wait_for_action/megamodelling"] = State(110, "/initialized/behaviour/wait_for_action/megamodelling", self)
+        self.states["/initialized/behaviour/wait_for_action/megamodelling"] = State(115, "/initialized/behaviour/wait_for_action/megamodelling", self)
         
         
         # state /initialized/behaviour/wait_for_action/modelling
         # state /initialized/behaviour/wait_for_action/modelling
-        self.states["/initialized/behaviour/wait_for_action/modelling"] = State(111, "/initialized/behaviour/wait_for_action/modelling", self)
+        self.states["/initialized/behaviour/wait_for_action/modelling"] = State(116, "/initialized/behaviour/wait_for_action/modelling", self)
         
         
         # state /initialized/behaviour/wait_for_action/modelling/recognized
         # state /initialized/behaviour/wait_for_action/modelling/recognized
-        self.states["/initialized/behaviour/wait_for_action/modelling/recognized"] = State(112, "/initialized/behaviour/wait_for_action/modelling/recognized", self)
+        self.states["/initialized/behaviour/wait_for_action/modelling/recognized"] = State(117, "/initialized/behaviour/wait_for_action/modelling/recognized", self)
         
         
         # state /initialized/behaviour/wait_for_action/modelling/recognized/manual
         # state /initialized/behaviour/wait_for_action/modelling/recognized/manual
-        self.states["/initialized/behaviour/wait_for_action/modelling/recognized/manual"] = State(113, "/initialized/behaviour/wait_for_action/modelling/recognized/manual", self)
+        self.states["/initialized/behaviour/wait_for_action/modelling/recognized/manual"] = State(118, "/initialized/behaviour/wait_for_action/modelling/recognized/manual", self)
         
         
         # state /initialized/behaviour/wait_for_action/modelling/recognized/scripted
         # state /initialized/behaviour/wait_for_action/modelling/recognized/scripted
-        self.states["/initialized/behaviour/wait_for_action/modelling/recognized/scripted"] = State(114, "/initialized/behaviour/wait_for_action/modelling/recognized/scripted", self)
+        self.states["/initialized/behaviour/wait_for_action/modelling/recognized/scripted"] = State(119, "/initialized/behaviour/wait_for_action/modelling/recognized/scripted", self)
         
         
         # state /initialized/behaviour/wait_for_action/finished
         # state /initialized/behaviour/wait_for_action/finished
-        self.states["/initialized/behaviour/wait_for_action/finished"] = State(115, "/initialized/behaviour/wait_for_action/finished", self)
+        self.states["/initialized/behaviour/wait_for_action/finished"] = State(120, "/initialized/behaviour/wait_for_action/finished", self)
         
         
         # state /initialized/behaviour/wait_for_action/history
         # state /initialized/behaviour/wait_for_action/history
-        self.states["/initialized/behaviour/wait_for_action/history"] = DeepHistoryState(116, "/initialized/behaviour/wait_for_action/history", self)
+        self.states["/initialized/behaviour/wait_for_action/history"] = DeepHistoryState(121, "/initialized/behaviour/wait_for_action/history", self)
         
         
         # state /initialized/behaviour/going_manual
         # state /initialized/behaviour/going_manual
-        self.states["/initialized/behaviour/going_manual"] = State(117, "/initialized/behaviour/going_manual", self)
+        self.states["/initialized/behaviour/going_manual"] = State(122, "/initialized/behaviour/going_manual", self)
         self.states["/initialized/behaviour/going_manual"].setEnter(self._initialized_behaviour_going_manual_enter)
         self.states["/initialized/behaviour/going_manual"].setEnter(self._initialized_behaviour_going_manual_enter)
         
         
         # state /initialized/behaviour/going_scripted
         # state /initialized/behaviour/going_scripted
-        self.states["/initialized/behaviour/going_scripted"] = State(118, "/initialized/behaviour/going_scripted", self)
+        self.states["/initialized/behaviour/going_scripted"] = State(123, "/initialized/behaviour/going_scripted", self)
         self.states["/initialized/behaviour/going_scripted"].setEnter(self._initialized_behaviour_going_scripted_enter)
         self.states["/initialized/behaviour/going_scripted"].setEnter(self._initialized_behaviour_going_scripted_enter)
         
         
         # state /initialized/behaviour/leaving_manual
         # state /initialized/behaviour/leaving_manual
-        self.states["/initialized/behaviour/leaving_manual"] = State(119, "/initialized/behaviour/leaving_manual", self)
+        self.states["/initialized/behaviour/leaving_manual"] = State(124, "/initialized/behaviour/leaving_manual", self)
         self.states["/initialized/behaviour/leaving_manual"].setEnter(self._initialized_behaviour_leaving_manual_enter)
         self.states["/initialized/behaviour/leaving_manual"].setEnter(self._initialized_behaviour_leaving_manual_enter)
         
         
         # state /initialized/queue
         # state /initialized/queue
-        self.states["/initialized/queue"] = State(120, "/initialized/queue", self)
+        self.states["/initialized/queue"] = State(125, "/initialized/queue", self)
         
         
         # state /initialized/queue/queue
         # state /initialized/queue/queue
-        self.states["/initialized/queue/queue"] = State(121, "/initialized/queue/queue", self)
+        self.states["/initialized/queue/queue"] = State(126, "/initialized/queue/queue", self)
         
         
         # add children
         # add children
         self.states[""].addChild(self.states["/init"])
         self.states[""].addChild(self.states["/init"])
@@ -604,17 +622,22 @@ class Modelverse(RuntimeClassBase):
         self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/types_full"])
         self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/types_full"])
         self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/read_info"])
         self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/read_info"])
         self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/read_attrs"])
         self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/read_attrs"])
+        self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/read_defined_attrs"])
         self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/instantiate"])
         self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/instantiate"])
         self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/delete_element"])
         self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/delete_element"])
         self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/attr_assign"])
         self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/attr_assign"])
         self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/attr_assign_code"])
         self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/attr_assign_code"])
         self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/attr_delete"])
         self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/attr_delete"])
+        self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/attr_type"])
+        self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/attr_name"])
+        self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/attr_optional"])
         self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/read_outgoing"])
         self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/read_outgoing"])
         self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/read_incoming"])
         self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/read_incoming"])
         self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/read_association_source"])
         self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/read_association_source"])
         self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/read_association_destination"])
         self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/read_association_destination"])
         self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/connections_between"])
         self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/connections_between"])
         self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/define_attribute"])
         self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/define_attribute"])
+        self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/undefine_attribute"])
         self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/all_instances"])
         self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/all_instances"])
         self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/save"])
         self.states["/initialized/behaviour/operations"].addChild(self.states["/initialized/behaviour/operations/save"])
         self.states["/initialized/behaviour/operations/login"].addChild(self.states["/initialized/behaviour/operations/login/wait_prompt_1"])
         self.states["/initialized/behaviour/operations/login"].addChild(self.states["/initialized/behaviour/operations/login/wait_prompt_1"])
@@ -1249,6 +1272,13 @@ class Modelverse(RuntimeClassBase):
         _initialized_behaviour_operations_read_attrs_0.setGuard(self._initialized_behaviour_operations_read_attrs_0_guard)
         _initialized_behaviour_operations_read_attrs_0.setGuard(self._initialized_behaviour_operations_read_attrs_0_guard)
         self.states["/initialized/behaviour/operations/read_attrs"].addTransition(_initialized_behaviour_operations_read_attrs_0)
         self.states["/initialized/behaviour/operations/read_attrs"].addTransition(_initialized_behaviour_operations_read_attrs_0)
         
         
+        # transition /initialized/behaviour/operations/read_defined_attrs
+        _initialized_behaviour_operations_read_defined_attrs_0 = Transition(self, self.states["/initialized/behaviour/operations/read_defined_attrs"], [self.states["/initialized/behaviour/wait_for_action/history"]])
+        _initialized_behaviour_operations_read_defined_attrs_0.setAction(self._initialized_behaviour_operations_read_defined_attrs_0_exec)
+        _initialized_behaviour_operations_read_defined_attrs_0.setTrigger(None)
+        _initialized_behaviour_operations_read_defined_attrs_0.setGuard(self._initialized_behaviour_operations_read_defined_attrs_0_guard)
+        self.states["/initialized/behaviour/operations/read_defined_attrs"].addTransition(_initialized_behaviour_operations_read_defined_attrs_0)
+        
         # transition /initialized/behaviour/operations/instantiate/decide_node_or_edge
         # transition /initialized/behaviour/operations/instantiate/decide_node_or_edge
         _initialized_behaviour_operations_instantiate_decide_node_or_edge_0 = Transition(self, self.states["/initialized/behaviour/operations/instantiate/decide_node_or_edge"], [self.states["/initialized/behaviour/operations/instantiate/created"]])
         _initialized_behaviour_operations_instantiate_decide_node_or_edge_0 = Transition(self, self.states["/initialized/behaviour/operations/instantiate/decide_node_or_edge"], [self.states["/initialized/behaviour/operations/instantiate/created"]])
         _initialized_behaviour_operations_instantiate_decide_node_or_edge_0.setAction(self._initialized_behaviour_operations_instantiate_decide_node_or_edge_0_exec)
         _initialized_behaviour_operations_instantiate_decide_node_or_edge_0.setAction(self._initialized_behaviour_operations_instantiate_decide_node_or_edge_0_exec)
@@ -1296,6 +1326,27 @@ class Modelverse(RuntimeClassBase):
         _initialized_behaviour_operations_attr_delete_0.setGuard(self._initialized_behaviour_operations_attr_delete_0_guard)
         _initialized_behaviour_operations_attr_delete_0.setGuard(self._initialized_behaviour_operations_attr_delete_0_guard)
         self.states["/initialized/behaviour/operations/attr_delete"].addTransition(_initialized_behaviour_operations_attr_delete_0)
         self.states["/initialized/behaviour/operations/attr_delete"].addTransition(_initialized_behaviour_operations_attr_delete_0)
         
         
+        # transition /initialized/behaviour/operations/attr_type
+        _initialized_behaviour_operations_attr_type_0 = Transition(self, self.states["/initialized/behaviour/operations/attr_type"], [self.states["/initialized/behaviour/wait_for_action/history"]])
+        _initialized_behaviour_operations_attr_type_0.setAction(self._initialized_behaviour_operations_attr_type_0_exec)
+        _initialized_behaviour_operations_attr_type_0.setTrigger(None)
+        _initialized_behaviour_operations_attr_type_0.setGuard(self._initialized_behaviour_operations_attr_type_0_guard)
+        self.states["/initialized/behaviour/operations/attr_type"].addTransition(_initialized_behaviour_operations_attr_type_0)
+        
+        # transition /initialized/behaviour/operations/attr_name
+        _initialized_behaviour_operations_attr_name_0 = Transition(self, self.states["/initialized/behaviour/operations/attr_name"], [self.states["/initialized/behaviour/wait_for_action/history"]])
+        _initialized_behaviour_operations_attr_name_0.setAction(self._initialized_behaviour_operations_attr_name_0_exec)
+        _initialized_behaviour_operations_attr_name_0.setTrigger(None)
+        _initialized_behaviour_operations_attr_name_0.setGuard(self._initialized_behaviour_operations_attr_name_0_guard)
+        self.states["/initialized/behaviour/operations/attr_name"].addTransition(_initialized_behaviour_operations_attr_name_0)
+        
+        # transition /initialized/behaviour/operations/attr_optional
+        _initialized_behaviour_operations_attr_optional_0 = Transition(self, self.states["/initialized/behaviour/operations/attr_optional"], [self.states["/initialized/behaviour/wait_for_action/history"]])
+        _initialized_behaviour_operations_attr_optional_0.setAction(self._initialized_behaviour_operations_attr_optional_0_exec)
+        _initialized_behaviour_operations_attr_optional_0.setTrigger(None)
+        _initialized_behaviour_operations_attr_optional_0.setGuard(self._initialized_behaviour_operations_attr_optional_0_guard)
+        self.states["/initialized/behaviour/operations/attr_optional"].addTransition(_initialized_behaviour_operations_attr_optional_0)
+        
         # transition /initialized/behaviour/operations/read_outgoing
         # transition /initialized/behaviour/operations/read_outgoing
         _initialized_behaviour_operations_read_outgoing_0 = Transition(self, self.states["/initialized/behaviour/operations/read_outgoing"], [self.states["/initialized/behaviour/wait_for_action/history"]])
         _initialized_behaviour_operations_read_outgoing_0 = Transition(self, self.states["/initialized/behaviour/operations/read_outgoing"], [self.states["/initialized/behaviour/wait_for_action/history"]])
         _initialized_behaviour_operations_read_outgoing_0.setAction(self._initialized_behaviour_operations_read_outgoing_0_exec)
         _initialized_behaviour_operations_read_outgoing_0.setAction(self._initialized_behaviour_operations_read_outgoing_0_exec)
@@ -1338,6 +1389,13 @@ class Modelverse(RuntimeClassBase):
         _initialized_behaviour_operations_define_attribute_0.setGuard(self._initialized_behaviour_operations_define_attribute_0_guard)
         _initialized_behaviour_operations_define_attribute_0.setGuard(self._initialized_behaviour_operations_define_attribute_0_guard)
         self.states["/initialized/behaviour/operations/define_attribute"].addTransition(_initialized_behaviour_operations_define_attribute_0)
         self.states["/initialized/behaviour/operations/define_attribute"].addTransition(_initialized_behaviour_operations_define_attribute_0)
         
         
+        # transition /initialized/behaviour/operations/undefine_attribute
+        _initialized_behaviour_operations_undefine_attribute_0 = Transition(self, self.states["/initialized/behaviour/operations/undefine_attribute"], [self.states["/initialized/behaviour/wait_for_action/history"]])
+        _initialized_behaviour_operations_undefine_attribute_0.setAction(self._initialized_behaviour_operations_undefine_attribute_0_exec)
+        _initialized_behaviour_operations_undefine_attribute_0.setTrigger(None)
+        _initialized_behaviour_operations_undefine_attribute_0.setGuard(self._initialized_behaviour_operations_undefine_attribute_0_guard)
+        self.states["/initialized/behaviour/operations/undefine_attribute"].addTransition(_initialized_behaviour_operations_undefine_attribute_0)
+        
         # transition /initialized/behaviour/operations/all_instances
         # transition /initialized/behaviour/operations/all_instances
         _initialized_behaviour_operations_all_instances_0 = Transition(self, self.states["/initialized/behaviour/operations/all_instances"], [self.states["/initialized/behaviour/wait_for_action/history"]])
         _initialized_behaviour_operations_all_instances_0 = Transition(self, self.states["/initialized/behaviour/operations/all_instances"], [self.states["/initialized/behaviour/wait_for_action/history"]])
         _initialized_behaviour_operations_all_instances_0.setAction(self._initialized_behaviour_operations_all_instances_0_exec)
         _initialized_behaviour_operations_all_instances_0.setAction(self._initialized_behaviour_operations_all_instances_0_exec)
@@ -1637,6 +1695,13 @@ class Modelverse(RuntimeClassBase):
         _initialized_behaviour_operations_2.setGuard(self._initialized_behaviour_operations_2_guard)
         _initialized_behaviour_operations_2.setGuard(self._initialized_behaviour_operations_2_guard)
         self.states["/initialized/behaviour/operations"].addTransition(_initialized_behaviour_operations_2)
         self.states["/initialized/behaviour/operations"].addTransition(_initialized_behaviour_operations_2)
         
         
+        # transition /initialized/behaviour/operations/store_on_scripted/transformation_add_MT
+        _initialized_behaviour_operations_store_on_scripted_transformation_add_MT_0 = Transition(self, self.states["/initialized/behaviour/operations/store_on_scripted/transformation_add_MT"], [self.states["/initialized/behaviour/wait_for_action/history"]])
+        _initialized_behaviour_operations_store_on_scripted_transformation_add_MT_0.setAction(self._initialized_behaviour_operations_store_on_scripted_transformation_add_MT_0_exec)
+        _initialized_behaviour_operations_store_on_scripted_transformation_add_MT_0.setTrigger(None)
+        _initialized_behaviour_operations_store_on_scripted_transformation_add_MT_0.setGuard(self._initialized_behaviour_operations_store_on_scripted_transformation_add_MT_0_guard)
+        self.states["/initialized/behaviour/operations/store_on_scripted/transformation_add_MT"].addTransition(_initialized_behaviour_operations_store_on_scripted_transformation_add_MT_0)
+        
         # transition /initialized/behaviour/operations/store_on_scripted/process_execute/enacting
         # transition /initialized/behaviour/operations/store_on_scripted/process_execute/enacting
         _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_0 = Transition(self, self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting"], [self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/executing"]])
         _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_0 = Transition(self, self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting"], [self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/executing"]])
         _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_0.setTrigger(None)
         _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_0.setTrigger(None)
@@ -1696,76 +1761,101 @@ class Modelverse(RuntimeClassBase):
         _initialized_behaviour_wait_for_action_modelling_recognized_5.setTrigger(None)
         _initialized_behaviour_wait_for_action_modelling_recognized_5.setTrigger(None)
         _initialized_behaviour_wait_for_action_modelling_recognized_5.setGuard(self._initialized_behaviour_wait_for_action_modelling_recognized_5_guard)
         _initialized_behaviour_wait_for_action_modelling_recognized_5.setGuard(self._initialized_behaviour_wait_for_action_modelling_recognized_5_guard)
         self.states["/initialized/behaviour/wait_for_action/modelling/recognized"].addTransition(_initialized_behaviour_wait_for_action_modelling_recognized_5)
         self.states["/initialized/behaviour/wait_for_action/modelling/recognized"].addTransition(_initialized_behaviour_wait_for_action_modelling_recognized_5)
-        _initialized_behaviour_wait_for_action_modelling_recognized_6 = Transition(self, self.states["/initialized/behaviour/wait_for_action/modelling/recognized"], [self.states["/initialized/behaviour/operations/instantiate"]])
+        _initialized_behaviour_wait_for_action_modelling_recognized_6 = Transition(self, self.states["/initialized/behaviour/wait_for_action/modelling/recognized"], [self.states["/initialized/behaviour/operations/read_defined_attrs"]])
         _initialized_behaviour_wait_for_action_modelling_recognized_6.setAction(self._initialized_behaviour_wait_for_action_modelling_recognized_6_exec)
         _initialized_behaviour_wait_for_action_modelling_recognized_6.setAction(self._initialized_behaviour_wait_for_action_modelling_recognized_6_exec)
         _initialized_behaviour_wait_for_action_modelling_recognized_6.setTrigger(None)
         _initialized_behaviour_wait_for_action_modelling_recognized_6.setTrigger(None)
         _initialized_behaviour_wait_for_action_modelling_recognized_6.setGuard(self._initialized_behaviour_wait_for_action_modelling_recognized_6_guard)
         _initialized_behaviour_wait_for_action_modelling_recognized_6.setGuard(self._initialized_behaviour_wait_for_action_modelling_recognized_6_guard)
         self.states["/initialized/behaviour/wait_for_action/modelling/recognized"].addTransition(_initialized_behaviour_wait_for_action_modelling_recognized_6)
         self.states["/initialized/behaviour/wait_for_action/modelling/recognized"].addTransition(_initialized_behaviour_wait_for_action_modelling_recognized_6)
-        _initialized_behaviour_wait_for_action_modelling_recognized_7 = Transition(self, self.states["/initialized/behaviour/wait_for_action/modelling/recognized"], [self.states["/initialized/behaviour/operations/delete_element"]])
+        _initialized_behaviour_wait_for_action_modelling_recognized_7 = Transition(self, self.states["/initialized/behaviour/wait_for_action/modelling/recognized"], [self.states["/initialized/behaviour/operations/instantiate"]])
         _initialized_behaviour_wait_for_action_modelling_recognized_7.setAction(self._initialized_behaviour_wait_for_action_modelling_recognized_7_exec)
         _initialized_behaviour_wait_for_action_modelling_recognized_7.setAction(self._initialized_behaviour_wait_for_action_modelling_recognized_7_exec)
         _initialized_behaviour_wait_for_action_modelling_recognized_7.setTrigger(None)
         _initialized_behaviour_wait_for_action_modelling_recognized_7.setTrigger(None)
         _initialized_behaviour_wait_for_action_modelling_recognized_7.setGuard(self._initialized_behaviour_wait_for_action_modelling_recognized_7_guard)
         _initialized_behaviour_wait_for_action_modelling_recognized_7.setGuard(self._initialized_behaviour_wait_for_action_modelling_recognized_7_guard)
         self.states["/initialized/behaviour/wait_for_action/modelling/recognized"].addTransition(_initialized_behaviour_wait_for_action_modelling_recognized_7)
         self.states["/initialized/behaviour/wait_for_action/modelling/recognized"].addTransition(_initialized_behaviour_wait_for_action_modelling_recognized_7)
-        _initialized_behaviour_wait_for_action_modelling_recognized_8 = Transition(self, self.states["/initialized/behaviour/wait_for_action/modelling/recognized"], [self.states["/initialized/behaviour/operations/attr_assign"]])
+        _initialized_behaviour_wait_for_action_modelling_recognized_8 = Transition(self, self.states["/initialized/behaviour/wait_for_action/modelling/recognized"], [self.states["/initialized/behaviour/operations/delete_element"]])
         _initialized_behaviour_wait_for_action_modelling_recognized_8.setAction(self._initialized_behaviour_wait_for_action_modelling_recognized_8_exec)
         _initialized_behaviour_wait_for_action_modelling_recognized_8.setAction(self._initialized_behaviour_wait_for_action_modelling_recognized_8_exec)
         _initialized_behaviour_wait_for_action_modelling_recognized_8.setTrigger(None)
         _initialized_behaviour_wait_for_action_modelling_recognized_8.setTrigger(None)
         _initialized_behaviour_wait_for_action_modelling_recognized_8.setGuard(self._initialized_behaviour_wait_for_action_modelling_recognized_8_guard)
         _initialized_behaviour_wait_for_action_modelling_recognized_8.setGuard(self._initialized_behaviour_wait_for_action_modelling_recognized_8_guard)
         self.states["/initialized/behaviour/wait_for_action/modelling/recognized"].addTransition(_initialized_behaviour_wait_for_action_modelling_recognized_8)
         self.states["/initialized/behaviour/wait_for_action/modelling/recognized"].addTransition(_initialized_behaviour_wait_for_action_modelling_recognized_8)
-        _initialized_behaviour_wait_for_action_modelling_recognized_9 = Transition(self, self.states["/initialized/behaviour/wait_for_action/modelling/recognized"], [self.states["/initialized/behaviour/operations/model_upload"]])
+        _initialized_behaviour_wait_for_action_modelling_recognized_9 = Transition(self, self.states["/initialized/behaviour/wait_for_action/modelling/recognized"], [self.states["/initialized/behaviour/operations/attr_assign"]])
         _initialized_behaviour_wait_for_action_modelling_recognized_9.setAction(self._initialized_behaviour_wait_for_action_modelling_recognized_9_exec)
         _initialized_behaviour_wait_for_action_modelling_recognized_9.setAction(self._initialized_behaviour_wait_for_action_modelling_recognized_9_exec)
         _initialized_behaviour_wait_for_action_modelling_recognized_9.setTrigger(None)
         _initialized_behaviour_wait_for_action_modelling_recognized_9.setTrigger(None)
         _initialized_behaviour_wait_for_action_modelling_recognized_9.setGuard(self._initialized_behaviour_wait_for_action_modelling_recognized_9_guard)
         _initialized_behaviour_wait_for_action_modelling_recognized_9.setGuard(self._initialized_behaviour_wait_for_action_modelling_recognized_9_guard)
         self.states["/initialized/behaviour/wait_for_action/modelling/recognized"].addTransition(_initialized_behaviour_wait_for_action_modelling_recognized_9)
         self.states["/initialized/behaviour/wait_for_action/modelling/recognized"].addTransition(_initialized_behaviour_wait_for_action_modelling_recognized_9)
-        _initialized_behaviour_wait_for_action_modelling_recognized_10 = Transition(self, self.states["/initialized/behaviour/wait_for_action/modelling/recognized"], [self.states["/initialized/behaviour/operations/attr_assign_code"]])
+        _initialized_behaviour_wait_for_action_modelling_recognized_10 = Transition(self, self.states["/initialized/behaviour/wait_for_action/modelling/recognized"], [self.states["/initialized/behaviour/operations/model_upload"]])
         _initialized_behaviour_wait_for_action_modelling_recognized_10.setAction(self._initialized_behaviour_wait_for_action_modelling_recognized_10_exec)
         _initialized_behaviour_wait_for_action_modelling_recognized_10.setAction(self._initialized_behaviour_wait_for_action_modelling_recognized_10_exec)
         _initialized_behaviour_wait_for_action_modelling_recognized_10.setTrigger(None)
         _initialized_behaviour_wait_for_action_modelling_recognized_10.setTrigger(None)
         _initialized_behaviour_wait_for_action_modelling_recognized_10.setGuard(self._initialized_behaviour_wait_for_action_modelling_recognized_10_guard)
         _initialized_behaviour_wait_for_action_modelling_recognized_10.setGuard(self._initialized_behaviour_wait_for_action_modelling_recognized_10_guard)
         self.states["/initialized/behaviour/wait_for_action/modelling/recognized"].addTransition(_initialized_behaviour_wait_for_action_modelling_recognized_10)
         self.states["/initialized/behaviour/wait_for_action/modelling/recognized"].addTransition(_initialized_behaviour_wait_for_action_modelling_recognized_10)
-        _initialized_behaviour_wait_for_action_modelling_recognized_11 = Transition(self, self.states["/initialized/behaviour/wait_for_action/modelling/recognized"], [self.states["/initialized/behaviour/operations/attr_delete"]])
+        _initialized_behaviour_wait_for_action_modelling_recognized_11 = Transition(self, self.states["/initialized/behaviour/wait_for_action/modelling/recognized"], [self.states["/initialized/behaviour/operations/attr_assign_code"]])
         _initialized_behaviour_wait_for_action_modelling_recognized_11.setAction(self._initialized_behaviour_wait_for_action_modelling_recognized_11_exec)
         _initialized_behaviour_wait_for_action_modelling_recognized_11.setAction(self._initialized_behaviour_wait_for_action_modelling_recognized_11_exec)
         _initialized_behaviour_wait_for_action_modelling_recognized_11.setTrigger(None)
         _initialized_behaviour_wait_for_action_modelling_recognized_11.setTrigger(None)
         _initialized_behaviour_wait_for_action_modelling_recognized_11.setGuard(self._initialized_behaviour_wait_for_action_modelling_recognized_11_guard)
         _initialized_behaviour_wait_for_action_modelling_recognized_11.setGuard(self._initialized_behaviour_wait_for_action_modelling_recognized_11_guard)
         self.states["/initialized/behaviour/wait_for_action/modelling/recognized"].addTransition(_initialized_behaviour_wait_for_action_modelling_recognized_11)
         self.states["/initialized/behaviour/wait_for_action/modelling/recognized"].addTransition(_initialized_behaviour_wait_for_action_modelling_recognized_11)
-        _initialized_behaviour_wait_for_action_modelling_recognized_12 = Transition(self, self.states["/initialized/behaviour/wait_for_action/modelling/recognized"], [self.states["/initialized/behaviour/operations/read_outgoing"]])
+        _initialized_behaviour_wait_for_action_modelling_recognized_12 = Transition(self, self.states["/initialized/behaviour/wait_for_action/modelling/recognized"], [self.states["/initialized/behaviour/operations/attr_delete"]])
         _initialized_behaviour_wait_for_action_modelling_recognized_12.setAction(self._initialized_behaviour_wait_for_action_modelling_recognized_12_exec)
         _initialized_behaviour_wait_for_action_modelling_recognized_12.setAction(self._initialized_behaviour_wait_for_action_modelling_recognized_12_exec)
         _initialized_behaviour_wait_for_action_modelling_recognized_12.setTrigger(None)
         _initialized_behaviour_wait_for_action_modelling_recognized_12.setTrigger(None)
         _initialized_behaviour_wait_for_action_modelling_recognized_12.setGuard(self._initialized_behaviour_wait_for_action_modelling_recognized_12_guard)
         _initialized_behaviour_wait_for_action_modelling_recognized_12.setGuard(self._initialized_behaviour_wait_for_action_modelling_recognized_12_guard)
         self.states["/initialized/behaviour/wait_for_action/modelling/recognized"].addTransition(_initialized_behaviour_wait_for_action_modelling_recognized_12)
         self.states["/initialized/behaviour/wait_for_action/modelling/recognized"].addTransition(_initialized_behaviour_wait_for_action_modelling_recognized_12)
-        _initialized_behaviour_wait_for_action_modelling_recognized_13 = Transition(self, self.states["/initialized/behaviour/wait_for_action/modelling/recognized"], [self.states["/initialized/behaviour/operations/read_incoming"]])
+        _initialized_behaviour_wait_for_action_modelling_recognized_13 = Transition(self, self.states["/initialized/behaviour/wait_for_action/modelling/recognized"], [self.states["/initialized/behaviour/operations/attr_name"]])
         _initialized_behaviour_wait_for_action_modelling_recognized_13.setAction(self._initialized_behaviour_wait_for_action_modelling_recognized_13_exec)
         _initialized_behaviour_wait_for_action_modelling_recognized_13.setAction(self._initialized_behaviour_wait_for_action_modelling_recognized_13_exec)
         _initialized_behaviour_wait_for_action_modelling_recognized_13.setTrigger(None)
         _initialized_behaviour_wait_for_action_modelling_recognized_13.setTrigger(None)
         _initialized_behaviour_wait_for_action_modelling_recognized_13.setGuard(self._initialized_behaviour_wait_for_action_modelling_recognized_13_guard)
         _initialized_behaviour_wait_for_action_modelling_recognized_13.setGuard(self._initialized_behaviour_wait_for_action_modelling_recognized_13_guard)
         self.states["/initialized/behaviour/wait_for_action/modelling/recognized"].addTransition(_initialized_behaviour_wait_for_action_modelling_recognized_13)
         self.states["/initialized/behaviour/wait_for_action/modelling/recognized"].addTransition(_initialized_behaviour_wait_for_action_modelling_recognized_13)
-        _initialized_behaviour_wait_for_action_modelling_recognized_14 = Transition(self, self.states["/initialized/behaviour/wait_for_action/modelling/recognized"], [self.states["/initialized/behaviour/operations/read_association_source"]])
+        _initialized_behaviour_wait_for_action_modelling_recognized_14 = Transition(self, self.states["/initialized/behaviour/wait_for_action/modelling/recognized"], [self.states["/initialized/behaviour/operations/attr_type"]])
         _initialized_behaviour_wait_for_action_modelling_recognized_14.setAction(self._initialized_behaviour_wait_for_action_modelling_recognized_14_exec)
         _initialized_behaviour_wait_for_action_modelling_recognized_14.setAction(self._initialized_behaviour_wait_for_action_modelling_recognized_14_exec)
         _initialized_behaviour_wait_for_action_modelling_recognized_14.setTrigger(None)
         _initialized_behaviour_wait_for_action_modelling_recognized_14.setTrigger(None)
         _initialized_behaviour_wait_for_action_modelling_recognized_14.setGuard(self._initialized_behaviour_wait_for_action_modelling_recognized_14_guard)
         _initialized_behaviour_wait_for_action_modelling_recognized_14.setGuard(self._initialized_behaviour_wait_for_action_modelling_recognized_14_guard)
         self.states["/initialized/behaviour/wait_for_action/modelling/recognized"].addTransition(_initialized_behaviour_wait_for_action_modelling_recognized_14)
         self.states["/initialized/behaviour/wait_for_action/modelling/recognized"].addTransition(_initialized_behaviour_wait_for_action_modelling_recognized_14)
-        _initialized_behaviour_wait_for_action_modelling_recognized_15 = Transition(self, self.states["/initialized/behaviour/wait_for_action/modelling/recognized"], [self.states["/initialized/behaviour/operations/read_association_destination"]])
+        _initialized_behaviour_wait_for_action_modelling_recognized_15 = Transition(self, self.states["/initialized/behaviour/wait_for_action/modelling/recognized"], [self.states["/initialized/behaviour/operations/attr_optional"]])
         _initialized_behaviour_wait_for_action_modelling_recognized_15.setAction(self._initialized_behaviour_wait_for_action_modelling_recognized_15_exec)
         _initialized_behaviour_wait_for_action_modelling_recognized_15.setAction(self._initialized_behaviour_wait_for_action_modelling_recognized_15_exec)
         _initialized_behaviour_wait_for_action_modelling_recognized_15.setTrigger(None)
         _initialized_behaviour_wait_for_action_modelling_recognized_15.setTrigger(None)
         _initialized_behaviour_wait_for_action_modelling_recognized_15.setGuard(self._initialized_behaviour_wait_for_action_modelling_recognized_15_guard)
         _initialized_behaviour_wait_for_action_modelling_recognized_15.setGuard(self._initialized_behaviour_wait_for_action_modelling_recognized_15_guard)
         self.states["/initialized/behaviour/wait_for_action/modelling/recognized"].addTransition(_initialized_behaviour_wait_for_action_modelling_recognized_15)
         self.states["/initialized/behaviour/wait_for_action/modelling/recognized"].addTransition(_initialized_behaviour_wait_for_action_modelling_recognized_15)
-        _initialized_behaviour_wait_for_action_modelling_recognized_16 = Transition(self, self.states["/initialized/behaviour/wait_for_action/modelling/recognized"], [self.states["/initialized/behaviour/operations/connections_between"]])
+        _initialized_behaviour_wait_for_action_modelling_recognized_16 = Transition(self, self.states["/initialized/behaviour/wait_for_action/modelling/recognized"], [self.states["/initialized/behaviour/operations/read_outgoing"]])
         _initialized_behaviour_wait_for_action_modelling_recognized_16.setAction(self._initialized_behaviour_wait_for_action_modelling_recognized_16_exec)
         _initialized_behaviour_wait_for_action_modelling_recognized_16.setAction(self._initialized_behaviour_wait_for_action_modelling_recognized_16_exec)
         _initialized_behaviour_wait_for_action_modelling_recognized_16.setTrigger(None)
         _initialized_behaviour_wait_for_action_modelling_recognized_16.setTrigger(None)
         _initialized_behaviour_wait_for_action_modelling_recognized_16.setGuard(self._initialized_behaviour_wait_for_action_modelling_recognized_16_guard)
         _initialized_behaviour_wait_for_action_modelling_recognized_16.setGuard(self._initialized_behaviour_wait_for_action_modelling_recognized_16_guard)
         self.states["/initialized/behaviour/wait_for_action/modelling/recognized"].addTransition(_initialized_behaviour_wait_for_action_modelling_recognized_16)
         self.states["/initialized/behaviour/wait_for_action/modelling/recognized"].addTransition(_initialized_behaviour_wait_for_action_modelling_recognized_16)
-        _initialized_behaviour_wait_for_action_modelling_recognized_17 = Transition(self, self.states["/initialized/behaviour/wait_for_action/modelling/recognized"], [self.states["/initialized/behaviour/operations/define_attribute"]])
+        _initialized_behaviour_wait_for_action_modelling_recognized_17 = Transition(self, self.states["/initialized/behaviour/wait_for_action/modelling/recognized"], [self.states["/initialized/behaviour/operations/read_incoming"]])
         _initialized_behaviour_wait_for_action_modelling_recognized_17.setAction(self._initialized_behaviour_wait_for_action_modelling_recognized_17_exec)
         _initialized_behaviour_wait_for_action_modelling_recognized_17.setAction(self._initialized_behaviour_wait_for_action_modelling_recognized_17_exec)
         _initialized_behaviour_wait_for_action_modelling_recognized_17.setTrigger(None)
         _initialized_behaviour_wait_for_action_modelling_recognized_17.setTrigger(None)
         _initialized_behaviour_wait_for_action_modelling_recognized_17.setGuard(self._initialized_behaviour_wait_for_action_modelling_recognized_17_guard)
         _initialized_behaviour_wait_for_action_modelling_recognized_17.setGuard(self._initialized_behaviour_wait_for_action_modelling_recognized_17_guard)
         self.states["/initialized/behaviour/wait_for_action/modelling/recognized"].addTransition(_initialized_behaviour_wait_for_action_modelling_recognized_17)
         self.states["/initialized/behaviour/wait_for_action/modelling/recognized"].addTransition(_initialized_behaviour_wait_for_action_modelling_recognized_17)
-        _initialized_behaviour_wait_for_action_modelling_recognized_18 = Transition(self, self.states["/initialized/behaviour/wait_for_action/modelling/recognized"], [self.states["/initialized/behaviour/operations/all_instances"]])
+        _initialized_behaviour_wait_for_action_modelling_recognized_18 = Transition(self, self.states["/initialized/behaviour/wait_for_action/modelling/recognized"], [self.states["/initialized/behaviour/operations/read_association_source"]])
         _initialized_behaviour_wait_for_action_modelling_recognized_18.setAction(self._initialized_behaviour_wait_for_action_modelling_recognized_18_exec)
         _initialized_behaviour_wait_for_action_modelling_recognized_18.setAction(self._initialized_behaviour_wait_for_action_modelling_recognized_18_exec)
         _initialized_behaviour_wait_for_action_modelling_recognized_18.setTrigger(None)
         _initialized_behaviour_wait_for_action_modelling_recognized_18.setTrigger(None)
         _initialized_behaviour_wait_for_action_modelling_recognized_18.setGuard(self._initialized_behaviour_wait_for_action_modelling_recognized_18_guard)
         _initialized_behaviour_wait_for_action_modelling_recognized_18.setGuard(self._initialized_behaviour_wait_for_action_modelling_recognized_18_guard)
         self.states["/initialized/behaviour/wait_for_action/modelling/recognized"].addTransition(_initialized_behaviour_wait_for_action_modelling_recognized_18)
         self.states["/initialized/behaviour/wait_for_action/modelling/recognized"].addTransition(_initialized_behaviour_wait_for_action_modelling_recognized_18)
-        _initialized_behaviour_wait_for_action_modelling_recognized_19 = Transition(self, self.states["/initialized/behaviour/wait_for_action/modelling/recognized"], [self.states["/initialized/behaviour/operations/save"]])
+        _initialized_behaviour_wait_for_action_modelling_recognized_19 = Transition(self, self.states["/initialized/behaviour/wait_for_action/modelling/recognized"], [self.states["/initialized/behaviour/operations/read_association_destination"]])
         _initialized_behaviour_wait_for_action_modelling_recognized_19.setAction(self._initialized_behaviour_wait_for_action_modelling_recognized_19_exec)
         _initialized_behaviour_wait_for_action_modelling_recognized_19.setAction(self._initialized_behaviour_wait_for_action_modelling_recognized_19_exec)
         _initialized_behaviour_wait_for_action_modelling_recognized_19.setTrigger(None)
         _initialized_behaviour_wait_for_action_modelling_recognized_19.setTrigger(None)
         _initialized_behaviour_wait_for_action_modelling_recognized_19.setGuard(self._initialized_behaviour_wait_for_action_modelling_recognized_19_guard)
         _initialized_behaviour_wait_for_action_modelling_recognized_19.setGuard(self._initialized_behaviour_wait_for_action_modelling_recognized_19_guard)
         self.states["/initialized/behaviour/wait_for_action/modelling/recognized"].addTransition(_initialized_behaviour_wait_for_action_modelling_recognized_19)
         self.states["/initialized/behaviour/wait_for_action/modelling/recognized"].addTransition(_initialized_behaviour_wait_for_action_modelling_recognized_19)
+        _initialized_behaviour_wait_for_action_modelling_recognized_20 = Transition(self, self.states["/initialized/behaviour/wait_for_action/modelling/recognized"], [self.states["/initialized/behaviour/operations/connections_between"]])
+        _initialized_behaviour_wait_for_action_modelling_recognized_20.setAction(self._initialized_behaviour_wait_for_action_modelling_recognized_20_exec)
+        _initialized_behaviour_wait_for_action_modelling_recognized_20.setTrigger(None)
+        _initialized_behaviour_wait_for_action_modelling_recognized_20.setGuard(self._initialized_behaviour_wait_for_action_modelling_recognized_20_guard)
+        self.states["/initialized/behaviour/wait_for_action/modelling/recognized"].addTransition(_initialized_behaviour_wait_for_action_modelling_recognized_20)
+        _initialized_behaviour_wait_for_action_modelling_recognized_21 = Transition(self, self.states["/initialized/behaviour/wait_for_action/modelling/recognized"], [self.states["/initialized/behaviour/operations/define_attribute"]])
+        _initialized_behaviour_wait_for_action_modelling_recognized_21.setAction(self._initialized_behaviour_wait_for_action_modelling_recognized_21_exec)
+        _initialized_behaviour_wait_for_action_modelling_recognized_21.setTrigger(None)
+        _initialized_behaviour_wait_for_action_modelling_recognized_21.setGuard(self._initialized_behaviour_wait_for_action_modelling_recognized_21_guard)
+        self.states["/initialized/behaviour/wait_for_action/modelling/recognized"].addTransition(_initialized_behaviour_wait_for_action_modelling_recognized_21)
+        _initialized_behaviour_wait_for_action_modelling_recognized_22 = Transition(self, self.states["/initialized/behaviour/wait_for_action/modelling/recognized"], [self.states["/initialized/behaviour/operations/undefine_attribute"]])
+        _initialized_behaviour_wait_for_action_modelling_recognized_22.setAction(self._initialized_behaviour_wait_for_action_modelling_recognized_22_exec)
+        _initialized_behaviour_wait_for_action_modelling_recognized_22.setTrigger(None)
+        _initialized_behaviour_wait_for_action_modelling_recognized_22.setGuard(self._initialized_behaviour_wait_for_action_modelling_recognized_22_guard)
+        self.states["/initialized/behaviour/wait_for_action/modelling/recognized"].addTransition(_initialized_behaviour_wait_for_action_modelling_recognized_22)
+        _initialized_behaviour_wait_for_action_modelling_recognized_23 = Transition(self, self.states["/initialized/behaviour/wait_for_action/modelling/recognized"], [self.states["/initialized/behaviour/operations/all_instances"]])
+        _initialized_behaviour_wait_for_action_modelling_recognized_23.setAction(self._initialized_behaviour_wait_for_action_modelling_recognized_23_exec)
+        _initialized_behaviour_wait_for_action_modelling_recognized_23.setTrigger(None)
+        _initialized_behaviour_wait_for_action_modelling_recognized_23.setGuard(self._initialized_behaviour_wait_for_action_modelling_recognized_23_guard)
+        self.states["/initialized/behaviour/wait_for_action/modelling/recognized"].addTransition(_initialized_behaviour_wait_for_action_modelling_recognized_23)
+        _initialized_behaviour_wait_for_action_modelling_recognized_24 = Transition(self, self.states["/initialized/behaviour/wait_for_action/modelling/recognized"], [self.states["/initialized/behaviour/operations/save"]])
+        _initialized_behaviour_wait_for_action_modelling_recognized_24.setAction(self._initialized_behaviour_wait_for_action_modelling_recognized_24_exec)
+        _initialized_behaviour_wait_for_action_modelling_recognized_24.setTrigger(None)
+        _initialized_behaviour_wait_for_action_modelling_recognized_24.setGuard(self._initialized_behaviour_wait_for_action_modelling_recognized_24_guard)
+        self.states["/initialized/behaviour/wait_for_action/modelling/recognized"].addTransition(_initialized_behaviour_wait_for_action_modelling_recognized_24)
     
     
     def _initialized_enter(self):
     def _initialized_enter(self):
         self.raiseInternalEvent(Event("ready", None, []))
         self.raiseInternalEvent(Event("ready", None, []))
@@ -1781,9 +1871,6 @@ class Modelverse(RuntimeClassBase):
     def _initialized_behaviour_operations_verify_enter(self):
     def _initialized_behaviour_operations_verify_enter(self):
         self.raiseInternalEvent(Event("request", None, [['verify', self.parameters[0], self.parameters[1]]]))
         self.raiseInternalEvent(Event("request", None, [['verify', self.parameters[0], self.parameters[1]]]))
     
     
-    def _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_enter(self):
-        self.catch_all = False
-    
     def _init_enter(self):
     def _init_enter(self):
         self.big_step.outputEventOM(Event("create_instance", None, [self, 'http_client', 'HTTPClient']))
         self.big_step.outputEventOM(Event("create_instance", None, [self, 'http_client', 'HTTPClient']))
         self.big_step.outputEventOM(Event("create_instance", None, [self, 'http_client', 'HTTPClient']))
         self.big_step.outputEventOM(Event("create_instance", None, [self, 'http_client', 'HTTPClient']))
@@ -1822,7 +1909,6 @@ class Modelverse(RuntimeClassBase):
         self.raiseInternalEvent(Event("request", None, ['self-destruct']))
         self.raiseInternalEvent(Event("request", None, ['self-destruct']))
     
     
     def _initialized_behaviour_operations_model_render_enter(self):
     def _initialized_behaviour_operations_model_render_enter(self):
-        print("RENDERING with parameters: " + str(self.parameters))
         self.raiseInternalEvent(Event("request", None, [['model_render', self.parameters[0], self.parameters[1], self.parameters[2]]]))
         self.raiseInternalEvent(Event("request", None, [['model_render', self.parameters[0], self.parameters[1], self.parameters[2]]]))
     
     
     def _initialized_behaviour_operations_model_rendered_enter(self):
     def _initialized_behaviour_operations_model_rendered_enter(self):
@@ -1858,13 +1944,13 @@ class Modelverse(RuntimeClassBase):
         self.raiseInternalEvent(Event("result", None, [self.context]))
         self.raiseInternalEvent(Event("result", None, [self.context]))
     
     
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_AL_send_operation_enter(self):
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_AL_send_operation_enter(self):
-        self.raiseInternalEvent(Event("request", None, [['transformation_execute', self.parameters[0]] + self.dict_to_list(self.parameters[1]) + self.dict_to_list(self.parameters[2])]))
+        self.raiseInternalEvent(Event("request", None, [['transformation_execute', self.parameters[0]] + self.dict_to_list(self.parameters[1]) + self.dict_to_list(self.parameters[2]) + [self.parameters[3]]]))
     
     
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_MT_send_operation_enter(self):
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_MT_send_operation_enter(self):
-        self.raiseInternalEvent(Event("request", None, [['transformation_execute', self.parameters[0]] + self.dict_to_list(self.parameters[1]) + self.dict_to_list(self.parameters[2])]))
+        self.raiseInternalEvent(Event("request", None, [['transformation_execute', self.parameters[0]] + self.dict_to_list(self.parameters[1]) + self.dict_to_list(self.parameters[2]) + [self.parameters[3]]]))
     
     
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_MANUAL_send_metadata_enter(self):
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_MANUAL_send_metadata_enter(self):
-        self.raiseInternalEvent(Event("request", None, [['transformation_execute', self.parameters[0]] + self.dict_to_list(self.parameters[1]) + self.dict_to_list(self.parameters[2])]))
+        self.raiseInternalEvent(Event("request", None, [['transformation_execute', self.parameters[0]] + self.dict_to_list(self.parameters[1]) + self.dict_to_list(self.parameters[2]) + ['']]))
         self.context = str(uuid.uuid4())
         self.context = str(uuid.uuid4())
         self.actions[self.context] = []
         self.actions[self.context] = []
         self.raiseInternalEvent(Event("result", None, [self.context]))
         self.raiseInternalEvent(Event("result", None, [self.context]))
@@ -1927,10 +2013,10 @@ class Modelverse(RuntimeClassBase):
         self.raiseInternalEvent(Event("request", None, [['JSON']]))
         self.raiseInternalEvent(Event("request", None, [['JSON']]))
     
     
     def _initialized_behaviour_operations_types_enter(self):
     def _initialized_behaviour_operations_types_enter(self):
-        self.raiseInternalEvent(Event("request", None, [['types', self.parameters[1]]]))
+        self.raiseInternalEvent(Event("request", None, [['types']]))
     
     
     def _initialized_behaviour_operations_types_full_enter(self):
     def _initialized_behaviour_operations_types_full_enter(self):
-        self.raiseInternalEvent(Event("request", None, [['types_full', self.parameters[1]]]))
+        self.raiseInternalEvent(Event("request", None, [['types_full']]))
     
     
     def _initialized_behaviour_operations_read_info_enter(self):
     def _initialized_behaviour_operations_read_info_enter(self):
         self.raiseInternalEvent(Event("request", None, [['read_info', self.parameters[1]]]))
         self.raiseInternalEvent(Event("request", None, [['read_info', self.parameters[1]]]))
@@ -1938,8 +2024,11 @@ class Modelverse(RuntimeClassBase):
     def _initialized_behaviour_operations_read_attrs_enter(self):
     def _initialized_behaviour_operations_read_attrs_enter(self):
         self.raiseInternalEvent(Event("request", None, [['read_attrs', self.parameters[1]]]))
         self.raiseInternalEvent(Event("request", None, [['read_attrs', self.parameters[1]]]))
     
     
+    def _initialized_behaviour_operations_read_defined_attrs_enter(self):
+        self.raiseInternalEvent(Event("request", None, [['read_defined_attrs', self.parameters[1]]]))
+    
     def _initialized_behaviour_operations_delete_element_enter(self):
     def _initialized_behaviour_operations_delete_element_enter(self):
-        self.raiseInternalEvent(Event("request", None, [['delete_element', self.parameters[1]]]))
+        self.raiseInternalEvent(Event("request", None, [['delete', self.parameters[1]]]))
     
     
     def _initialized_behaviour_operations_attr_assign_enter(self):
     def _initialized_behaviour_operations_attr_assign_enter(self):
         self.raiseInternalEvent(Event("request", None, [['attr_add', self.parameters[1], self.parameters[2], self.parameters[3]]]))
         self.raiseInternalEvent(Event("request", None, [['attr_add', self.parameters[1], self.parameters[2], self.parameters[3]]]))
@@ -1950,6 +2039,15 @@ class Modelverse(RuntimeClassBase):
     def _initialized_behaviour_operations_attr_delete_enter(self):
     def _initialized_behaviour_operations_attr_delete_enter(self):
         self.raiseInternalEvent(Event("request", None, [['attr_delete', self.parameters[1], self.parameters[2]]]))
         self.raiseInternalEvent(Event("request", None, [['attr_delete', self.parameters[1], self.parameters[2]]]))
     
     
+    def _initialized_behaviour_operations_attr_type_enter(self):
+        self.raiseInternalEvent(Event("request", None, [['attr_type', self.parameters[1], self.parameters[2], self.parameters[3]]]))
+    
+    def _initialized_behaviour_operations_attr_name_enter(self):
+        self.raiseInternalEvent(Event("request", None, [['attr_name', self.parameters[1], self.parameters[2], self.parameters[3]]]))
+    
+    def _initialized_behaviour_operations_attr_optional_enter(self):
+        self.raiseInternalEvent(Event("request", None, [['attr_optional', self.parameters[1], self.parameters[2], self.parameters[3]]]))
+    
     def _initialized_behaviour_operations_read_outgoing_enter(self):
     def _initialized_behaviour_operations_read_outgoing_enter(self):
         self.raiseInternalEvent(Event("request", None, [['read_outgoing', self.parameters[1], self.parameters[2]]]))
         self.raiseInternalEvent(Event("request", None, [['read_outgoing', self.parameters[1], self.parameters[2]]]))
     
     
@@ -1968,6 +2066,9 @@ class Modelverse(RuntimeClassBase):
     def _initialized_behaviour_operations_define_attribute_enter(self):
     def _initialized_behaviour_operations_define_attribute_enter(self):
         self.raiseInternalEvent(Event("request", None, [['define_attribute', self.parameters[1], self.parameters[2], self.parameters[3]]]))
         self.raiseInternalEvent(Event("request", None, [['define_attribute', self.parameters[1], self.parameters[2], self.parameters[3]]]))
     
     
+    def _initialized_behaviour_operations_undefine_attribute_enter(self):
+        self.raiseInternalEvent(Event("request", None, [['undefine_attribute', self.parameters[1], self.parameters[2]]]))
+    
     def _initialized_behaviour_operations_all_instances_enter(self):
     def _initialized_behaviour_operations_all_instances_enter(self):
         self.raiseInternalEvent(Event("request", None, [['all_instances', self.parameters[1]]]))
         self.raiseInternalEvent(Event("request", None, [['all_instances', self.parameters[1]]]))
     
     
@@ -2000,11 +2101,16 @@ class Modelverse(RuntimeClassBase):
         return self.expect_response_partial('No conformance relation can be found ', pop=False)
         return self.expect_response_partial('No conformance relation can be found ', pop=False)
     
     
     def _initialized_behaviour_operations_2_exec(self, parameters):
     def _initialized_behaviour_operations_2_exec(self, parameters):
-        print("UNKNOWN ERROR: " + self.responses[0])
         self.raiseInternalEvent(Event("exception", None, ['UnknownError', 'Error: %s' % self.responses.pop(0)]))
         self.raiseInternalEvent(Event("exception", None, ['UnknownError', 'Error: %s' % self.responses.pop(0)]))
     
     
     def _initialized_behaviour_operations_2_guard(self, parameters):
     def _initialized_behaviour_operations_2_guard(self, parameters):
-        return self.catch_all and self.expect_response_partial('', pop=False)
+        return self.expect_response_partial('', pop=False)
+    
+    def _initialized_behaviour_operations_store_on_scripted_transformation_add_MT_0_exec(self, parameters):
+        print("UNKNOWN RESPONSE received: " + str(self.responses.pop(0)))
+    
+    def _initialized_behaviour_operations_store_on_scripted_transformation_add_MT_0_guard(self, parameters):
+        return self.expect_response_partial('', pop=False)
     
     
     def _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_0_guard(self, parameters):
     def _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_0_guard(self, parameters):
         return self.expect_response('Success', pop=True)
         return self.expect_response('Success', pop=True)
@@ -2069,84 +2175,114 @@ class Modelverse(RuntimeClassBase):
         self.load_action(self.context)
         self.load_action(self.context)
     
     
     def _initialized_behaviour_wait_for_action_modelling_recognized_6_guard(self, parameters):
     def _initialized_behaviour_wait_for_action_modelling_recognized_6_guard(self, parameters):
-        return self.expect_action(self.context, 'instantiate')
+        return self.expect_action(self.context, 'read_defined_attrs')
     
     
     def _initialized_behaviour_wait_for_action_modelling_recognized_7_exec(self, parameters):
     def _initialized_behaviour_wait_for_action_modelling_recognized_7_exec(self, parameters):
         self.load_action(self.context)
         self.load_action(self.context)
     
     
     def _initialized_behaviour_wait_for_action_modelling_recognized_7_guard(self, parameters):
     def _initialized_behaviour_wait_for_action_modelling_recognized_7_guard(self, parameters):
-        return self.expect_action(self.context, 'delete_element')
+        return self.expect_action(self.context, 'instantiate')
     
     
     def _initialized_behaviour_wait_for_action_modelling_recognized_8_exec(self, parameters):
     def _initialized_behaviour_wait_for_action_modelling_recognized_8_exec(self, parameters):
         self.load_action(self.context)
         self.load_action(self.context)
     
     
     def _initialized_behaviour_wait_for_action_modelling_recognized_8_guard(self, parameters):
     def _initialized_behaviour_wait_for_action_modelling_recognized_8_guard(self, parameters):
-        return self.expect_action(self.context, 'attr_assign')
+        return self.expect_action(self.context, 'delete_element')
     
     
     def _initialized_behaviour_wait_for_action_modelling_recognized_9_exec(self, parameters):
     def _initialized_behaviour_wait_for_action_modelling_recognized_9_exec(self, parameters):
         self.load_action(self.context)
         self.load_action(self.context)
     
     
     def _initialized_behaviour_wait_for_action_modelling_recognized_9_guard(self, parameters):
     def _initialized_behaviour_wait_for_action_modelling_recognized_9_guard(self, parameters):
-        return self.expect_action(self.context, 'model_overwrite')
+        return self.expect_action(self.context, 'attr_assign')
     
     
     def _initialized_behaviour_wait_for_action_modelling_recognized_10_exec(self, parameters):
     def _initialized_behaviour_wait_for_action_modelling_recognized_10_exec(self, parameters):
         self.load_action(self.context)
         self.load_action(self.context)
     
     
     def _initialized_behaviour_wait_for_action_modelling_recognized_10_guard(self, parameters):
     def _initialized_behaviour_wait_for_action_modelling_recognized_10_guard(self, parameters):
-        return self.expect_action(self.context, 'attr_assign_code')
+        return self.expect_action(self.context, 'model_overwrite')
     
     
     def _initialized_behaviour_wait_for_action_modelling_recognized_11_exec(self, parameters):
     def _initialized_behaviour_wait_for_action_modelling_recognized_11_exec(self, parameters):
         self.load_action(self.context)
         self.load_action(self.context)
     
     
     def _initialized_behaviour_wait_for_action_modelling_recognized_11_guard(self, parameters):
     def _initialized_behaviour_wait_for_action_modelling_recognized_11_guard(self, parameters):
-        return self.expect_action(self.context, 'attr_delete')
+        return self.expect_action(self.context, 'attr_assign_code')
     
     
     def _initialized_behaviour_wait_for_action_modelling_recognized_12_exec(self, parameters):
     def _initialized_behaviour_wait_for_action_modelling_recognized_12_exec(self, parameters):
         self.load_action(self.context)
         self.load_action(self.context)
     
     
     def _initialized_behaviour_wait_for_action_modelling_recognized_12_guard(self, parameters):
     def _initialized_behaviour_wait_for_action_modelling_recognized_12_guard(self, parameters):
-        return self.expect_action(self.context, 'read_outgoing')
+        return self.expect_action(self.context, 'attr_delete')
     
     
     def _initialized_behaviour_wait_for_action_modelling_recognized_13_exec(self, parameters):
     def _initialized_behaviour_wait_for_action_modelling_recognized_13_exec(self, parameters):
         self.load_action(self.context)
         self.load_action(self.context)
     
     
     def _initialized_behaviour_wait_for_action_modelling_recognized_13_guard(self, parameters):
     def _initialized_behaviour_wait_for_action_modelling_recognized_13_guard(self, parameters):
-        return self.expect_action(self.context, 'read_incoming')
+        return self.expect_action(self.context, 'attr_name')
     
     
     def _initialized_behaviour_wait_for_action_modelling_recognized_14_exec(self, parameters):
     def _initialized_behaviour_wait_for_action_modelling_recognized_14_exec(self, parameters):
         self.load_action(self.context)
         self.load_action(self.context)
     
     
     def _initialized_behaviour_wait_for_action_modelling_recognized_14_guard(self, parameters):
     def _initialized_behaviour_wait_for_action_modelling_recognized_14_guard(self, parameters):
-        return self.expect_action(self.context, 'read_association_source')
+        return self.expect_action(self.context, 'attr_type')
     
     
     def _initialized_behaviour_wait_for_action_modelling_recognized_15_exec(self, parameters):
     def _initialized_behaviour_wait_for_action_modelling_recognized_15_exec(self, parameters):
         self.load_action(self.context)
         self.load_action(self.context)
     
     
     def _initialized_behaviour_wait_for_action_modelling_recognized_15_guard(self, parameters):
     def _initialized_behaviour_wait_for_action_modelling_recognized_15_guard(self, parameters):
-        return self.expect_action(self.context, 'read_association_destination')
+        return self.expect_action(self.context, 'attr_optional')
     
     
     def _initialized_behaviour_wait_for_action_modelling_recognized_16_exec(self, parameters):
     def _initialized_behaviour_wait_for_action_modelling_recognized_16_exec(self, parameters):
         self.load_action(self.context)
         self.load_action(self.context)
     
     
     def _initialized_behaviour_wait_for_action_modelling_recognized_16_guard(self, parameters):
     def _initialized_behaviour_wait_for_action_modelling_recognized_16_guard(self, parameters):
-        return self.expect_action(self.context, 'connections_between')
+        return self.expect_action(self.context, 'read_outgoing')
     
     
     def _initialized_behaviour_wait_for_action_modelling_recognized_17_exec(self, parameters):
     def _initialized_behaviour_wait_for_action_modelling_recognized_17_exec(self, parameters):
         self.load_action(self.context)
         self.load_action(self.context)
     
     
     def _initialized_behaviour_wait_for_action_modelling_recognized_17_guard(self, parameters):
     def _initialized_behaviour_wait_for_action_modelling_recognized_17_guard(self, parameters):
-        return self.expect_action(self.context, 'define_attribute')
+        return self.expect_action(self.context, 'read_incoming')
     
     
     def _initialized_behaviour_wait_for_action_modelling_recognized_18_exec(self, parameters):
     def _initialized_behaviour_wait_for_action_modelling_recognized_18_exec(self, parameters):
         self.load_action(self.context)
         self.load_action(self.context)
     
     
     def _initialized_behaviour_wait_for_action_modelling_recognized_18_guard(self, parameters):
     def _initialized_behaviour_wait_for_action_modelling_recognized_18_guard(self, parameters):
-        return self.expect_action(self.context, 'all_instances')
+        return self.expect_action(self.context, 'read_association_source')
     
     
     def _initialized_behaviour_wait_for_action_modelling_recognized_19_exec(self, parameters):
     def _initialized_behaviour_wait_for_action_modelling_recognized_19_exec(self, parameters):
         self.load_action(self.context)
         self.load_action(self.context)
     
     
     def _initialized_behaviour_wait_for_action_modelling_recognized_19_guard(self, parameters):
     def _initialized_behaviour_wait_for_action_modelling_recognized_19_guard(self, parameters):
+        return self.expect_action(self.context, 'read_association_destination')
+    
+    def _initialized_behaviour_wait_for_action_modelling_recognized_20_exec(self, parameters):
+        self.load_action(self.context)
+    
+    def _initialized_behaviour_wait_for_action_modelling_recognized_20_guard(self, parameters):
+        return self.expect_action(self.context, 'connections_between')
+    
+    def _initialized_behaviour_wait_for_action_modelling_recognized_21_exec(self, parameters):
+        self.load_action(self.context)
+    
+    def _initialized_behaviour_wait_for_action_modelling_recognized_21_guard(self, parameters):
+        return self.expect_action(self.context, 'define_attribute')
+    
+    def _initialized_behaviour_wait_for_action_modelling_recognized_22_exec(self, parameters):
+        self.load_action(self.context)
+    
+    def _initialized_behaviour_wait_for_action_modelling_recognized_22_guard(self, parameters):
+        return self.expect_action(self.context, 'undefine_attribute')
+    
+    def _initialized_behaviour_wait_for_action_modelling_recognized_23_exec(self, parameters):
+        self.load_action(self.context)
+    
+    def _initialized_behaviour_wait_for_action_modelling_recognized_23_guard(self, parameters):
+        return self.expect_action(self.context, 'all_instances')
+    
+    def _initialized_behaviour_wait_for_action_modelling_recognized_24_exec(self, parameters):
+        self.load_action(self.context)
+    
+    def _initialized_behaviour_wait_for_action_modelling_recognized_24_guard(self, parameters):
         return self.expect_action(self.context, 'save')
         return self.expect_action(self.context, 'save')
     
     
     def _init_0_exec(self, parameters):
     def _init_0_exec(self, parameters):
@@ -2200,6 +2336,7 @@ class Modelverse(RuntimeClassBase):
     def _initialized_behaviour_init_waiting_http_client_0_exec(self, parameters):
     def _initialized_behaviour_init_waiting_http_client_0_exec(self, parameters):
         self.raiseInternalEvent(Event("request_raw", None, [self.taskname, 'task_manager', self.i]))
         self.raiseInternalEvent(Event("request_raw", None, [self.taskname, 'task_manager', self.i]))
         self.i += 1
         self.i += 1
+        print("READY")
     
     
     def _initialized_behaviour_init_waiting_http_client_1_exec(self, parameters):
     def _initialized_behaviour_init_waiting_http_client_1_exec(self, parameters):
         self.raiseInternalEvent(Event("exception", None, ['NetworkException', 'Connection timeout']))
         self.raiseInternalEvent(Event("exception", None, ['NetworkException', 'Connection timeout']))
@@ -2404,6 +2541,7 @@ class Modelverse(RuntimeClassBase):
     
     
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_MT_dialog_0_exec(self, parameters):
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_MT_dialog_0_exec(self, parameters):
         self.raiseInternalEvent(Event("result", None, [True if self.responses.pop(0) == 'Success' else False]))
         self.raiseInternalEvent(Event("result", None, [True if self.responses.pop(0) == 'Success' else False]))
+        print("FINISHED SC execution")
     
     
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_MT_dialog_0_guard(self, parameters):
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_MT_dialog_0_guard(self, parameters):
         return self.expect_response('Success', pop=False) or self.expect_response('Failure', pop=False)
         return self.expect_response('Success', pop=False) or self.expect_response('Failure', pop=False)
@@ -2592,20 +2730,19 @@ class Modelverse(RuntimeClassBase):
         return self.expect_response_partial('Success: ', pop=False)
         return self.expect_response_partial('Success: ', pop=False)
     
     
     def _initialized_behaviour_operations_types_0_exec(self, parameters):
     def _initialized_behaviour_operations_types_0_exec(self, parameters):
-        self.raiseInternalEvent(Event("result", None, [set(self.split_response(self.responses.pop(0)))]))
+        self.raiseInternalEvent(Event("result", None, [set([tuple(entry.strip().split(' : ')) for entry in self.split_response(self.responses.pop(0))])]))
     
     
     def _initialized_behaviour_operations_types_0_guard(self, parameters):
     def _initialized_behaviour_operations_types_0_guard(self, parameters):
         return self.expect_response_partial('Success: ', pop=False)
         return self.expect_response_partial('Success: ', pop=False)
     
     
     def _initialized_behaviour_operations_types_full_0_exec(self, parameters):
     def _initialized_behaviour_operations_types_full_0_exec(self, parameters):
-        self.raiseInternalEvent(Event("result", None, [set(self.split_response(self.responses.pop(0)))]))
+        self.raiseInternalEvent(Event("result", None, [set([tuple(entry.strip().split(' : ')) for entry in self.split_response(self.responses.pop(0))])]))
     
     
     def _initialized_behaviour_operations_types_full_0_guard(self, parameters):
     def _initialized_behaviour_operations_types_full_0_guard(self, parameters):
         return self.expect_response_partial('Success: ', pop=False)
         return self.expect_response_partial('Success: ', pop=False)
     
     
     def _initialized_behaviour_operations_read_info_0_exec(self, parameters):
     def _initialized_behaviour_operations_read_info_0_exec(self, parameters):
-        response = self.responses.pop(0).strip()
-        _, response = response.split(": ", 1)
+        response = self.responses.pop(0).split(": ", 1)[1].strip()
         values = {line.split(": ", 1)[0]: line.split(": ", 1)[1] for line in response.split("\n", 2)}
         values = {line.split(": ", 1)[0]: line.split(": ", 1)[1] for line in response.split("\n", 2)}
         if "Source" in values:
         if "Source" in values:
             result = (values["Type"], (values["Source"], values["Destination"]))
             result = (values["Type"], (values["Source"], values["Destination"]))
@@ -2617,8 +2754,7 @@ class Modelverse(RuntimeClassBase):
         return self.expect_response_partial('Success: ', pop=False)
         return self.expect_response_partial('Success: ', pop=False)
     
     
     def _initialized_behaviour_operations_read_attrs_0_exec(self, parameters):
     def _initialized_behaviour_operations_read_attrs_0_exec(self, parameters):
-        response = self.responses.pop(0).strip()
-        _, response = response.split(": ", 1)
+        response = self.responses.pop(0).split(": ", 1)[1].strip()
         values = {line.split(" : ", 1)[0]: line.split(" : ", 1)[1] for line in response.split("\n")}
         values = {line.split(" : ", 1)[0]: line.split(" : ", 1)[1] for line in response.split("\n")}
         values = {key: values[key].split(" = ", 1)[1] for key in values}
         values = {key: values[key].split(" = ", 1)[1] for key in values}
         self.raiseInternalEvent(Event("result", None, [values]))
         self.raiseInternalEvent(Event("result", None, [values]))
@@ -2626,6 +2762,15 @@ class Modelverse(RuntimeClassBase):
     def _initialized_behaviour_operations_read_attrs_0_guard(self, parameters):
     def _initialized_behaviour_operations_read_attrs_0_guard(self, parameters):
         return self.expect_response_partial('Success: ', pop=False)
         return self.expect_response_partial('Success: ', pop=False)
     
     
+    def _initialized_behaviour_operations_read_defined_attrs_0_exec(self, parameters):
+        response = self.responses.pop(0).split(": ", 1)[1].strip()
+        value_mandatory = {line.split(" : ", 1)[0]: line.split(" : ", 1)[1] for line in response.split("\n") if " : " in line}
+        value_optional = {line.split(" ?: ", 1)[0]: line.split(" ?: ", 1)[1] for line in response.split("\n") if " ?: " in line}
+        self.raiseInternalEvent(Event("result", None, [(value_mandatory, value_optional)]))
+    
+    def _initialized_behaviour_operations_read_defined_attrs_0_guard(self, parameters):
+        return self.expect_response_partial('Success: ', pop=False)
+    
     def _initialized_behaviour_operations_instantiate_decide_node_or_edge_0_exec(self, parameters):
     def _initialized_behaviour_operations_instantiate_decide_node_or_edge_0_exec(self, parameters):
         self.raiseInternalEvent(Event("request", None, [['instantiate_node', self.parameters[1], self.parameters[3]]]))
         self.raiseInternalEvent(Event("request", None, [['instantiate_node', self.parameters[1], self.parameters[3]]]))
     
     
@@ -2668,6 +2813,24 @@ class Modelverse(RuntimeClassBase):
     def _initialized_behaviour_operations_attr_delete_0_guard(self, parameters):
     def _initialized_behaviour_operations_attr_delete_0_guard(self, parameters):
         return self.expect_response('Success')
         return self.expect_response('Success')
     
     
+    def _initialized_behaviour_operations_attr_type_0_exec(self, parameters):
+        self.raiseInternalEvent(Event("result", None, [None]))
+    
+    def _initialized_behaviour_operations_attr_type_0_guard(self, parameters):
+        return self.expect_response('Success')
+    
+    def _initialized_behaviour_operations_attr_name_0_exec(self, parameters):
+        self.raiseInternalEvent(Event("result", None, [None]))
+    
+    def _initialized_behaviour_operations_attr_name_0_guard(self, parameters):
+        return self.expect_response('Success')
+    
+    def _initialized_behaviour_operations_attr_optional_0_exec(self, parameters):
+        self.raiseInternalEvent(Event("result", None, [None]))
+    
+    def _initialized_behaviour_operations_attr_optional_0_guard(self, parameters):
+        return self.expect_response('Success')
+    
     def _initialized_behaviour_operations_read_outgoing_0_exec(self, parameters):
     def _initialized_behaviour_operations_read_outgoing_0_exec(self, parameters):
         self.raiseInternalEvent(Event("result", None, [set(self.split_response(self.responses.pop(0)))]))
         self.raiseInternalEvent(Event("result", None, [set(self.split_response(self.responses.pop(0)))]))
     
     
@@ -2702,7 +2865,13 @@ class Modelverse(RuntimeClassBase):
         self.raiseInternalEvent(Event("result", None, [None]))
         self.raiseInternalEvent(Event("result", None, [None]))
     
     
     def _initialized_behaviour_operations_define_attribute_0_guard(self, parameters):
     def _initialized_behaviour_operations_define_attribute_0_guard(self, parameters):
-        return self.expect_response_partial('Success: ')
+        return self.expect_response('Success')
+    
+    def _initialized_behaviour_operations_undefine_attribute_0_exec(self, parameters):
+        self.raiseInternalEvent(Event("result", None, [None]))
+    
+    def _initialized_behaviour_operations_undefine_attribute_0_guard(self, parameters):
+        return self.expect_response('Success')
     
     
     def _initialized_behaviour_operations_all_instances_0_exec(self, parameters):
     def _initialized_behaviour_operations_all_instances_0_exec(self, parameters):
         self.raiseInternalEvent(Event("result", None, [set(self.split_response(self.responses.pop(0)))]))
         self.raiseInternalEvent(Event("result", None, [set(self.split_response(self.responses.pop(0)))]))
@@ -2945,7 +3114,7 @@ class Modelverse(RuntimeClassBase):
         return self.expect_action(None, 'model_types')
         return self.expect_action(None, 'model_types')
     
     
     def _initialized_behaviour_wait_for_action_megamodelling_36_guard(self, parameters):
     def _initialized_behaviour_wait_for_action_megamodelling_36_guard(self, parameters):
-        return self.expect_action(None, ['element_list', 'element_list_nice', 'types', 'types_full', 'read_info', 'read_attrs', 'instantiate', 'delete_element', 'attr_assign', 'attr_assign_code', 'attr_delete', 'read_outgoing', 'read_incoming', 'read_association_source', 'read_association_destination', 'connections_between', 'define_attribute', 'all_instances'])
+        return self.expect_action(None, ['element_list', 'element_list_nice', 'types', 'types_full', 'read_info', 'read_attrs', 'read_defined_attrs', 'instantiate', 'delete_element', 'attr_assign', 'attr_assign_code', 'attr_delete', 'read_outgoing', 'read_incoming', 'read_association_source', 'read_association_destination', 'connections_between', 'define_attribute', 'undefine_attribute', 'all_instances', 'attr_optional', 'attr_type', 'attr_name'])
     
     
     def _initialized_behaviour_wait_for_action_modelling_recognized_manual_0_guard(self, parameters):
     def _initialized_behaviour_wait_for_action_modelling_recognized_manual_0_guard(self, parameters):
         return self.expect_action(self.context, 'exit')
         return self.expect_action(self.context, 'exit')

+ 10 - 68
wrappers/test.py

@@ -1,73 +1,15 @@
 from modelverse import *
 from modelverse import *
 import random
 import random
 
 
-def print_mv_with_input(value):
-    if value.startswith("#"):
-        print_mv(value[1:])
-        return
-    if value.startswith("%"):
-        if (value[1:] == "construct_function"):
-            print("Enter your code...")
-            code = \
-                """
-                include "primitives.alh"
-
-                Boolean function bp_1():
-                    log("Breakpoint check!")
-                    return True!
-                """
-            upload_code(code)
-        return
-    print(value)
-    return raw_input()
-
-def print_mv(value):
-    print(value)
-    return None
-
-print("Init")
 init()
 init()
-print("Login")
-#login(str(random.random()), str(random.random()))
 login("admin", "admin")
 login("admin", "admin")
-
-# Add the metamodels for PetriNet and ReachabilityGraph
-print("Add metamodels")
-try:
-    model_add("formalisms/PetriNet", "formalisms/SimpleClassDiagrams", open("models/petrinets.mvc").read())
-except ModelExists:
-    pass
-
-try:
-    model_add("formalisms/ReachabilityGraph", "formalisms/SimpleClassDiagrams", open("models/reachability_graph.mvc").read())
-except ModelExists:
-    pass
-
-print("Add model")
-try:
-    model_add("models/my_pn", "formalisms/PetriNet", open("models/my_pn.mvc").read())
-except ModelExists:
-    pass
-
-# Add the action language code to transform between them
-print("Add AL model")
-try:
-    transformation_add_AL({"PetriNet": "formalisms/PetriNet"}, {"ReachabilityGraph": "formalisms/ReachabilityGraph"}, "models/analyseReachability", open("models/reachability.alc", "r").read())
-except ModelExists:
-    pass
-
-# Add an example model transformation to print the reachability graph
-print("Add MT model")
-try:
-    transformation_add_MT({"ReachabilityGraph": "formalisms/ReachabilityGraph"}, {}, "models/printReachability", open("models/reachabilitygraph_print.mvc").read())
-except ModelExists:
-    pass
-
-# Do the reachability graph generation
-print("Execute AL")
-status = transformation_execute_AL("models/analyseReachability", {"PetriNet": "models/my_pn"}, {"ReachabilityGraph": "models/my_reachability"}, callback=print_mv)
-print("Reachability generation success: " + str(status))
-
-print("Execute MT")
-status = transformation_execute_MT("models/printReachability", {"ReachabilityGraph": "models/my_reachability"}, {}, callback=print_mv)
-print("Reachability printing success: " + str(status))
+model_add("formalisms/PetriNet", "formalisms/SimpleClassDiagrams", open("models/petrinets.mvc").read())
+model_add("formalisms/ReachabilityGraph", "formalisms/SimpleClassDiagrams", open("models/reachability_graph.mvc").read())
+model_add("models/my_pn", "formalisms/PetriNet", open("models/my_pn.mvc").read())
+transformation_add_AL({"PetriNet": "formalisms/PetriNet"}, {"ReachabilityGraph": "formalisms/ReachabilityGraph"}, "models/analyseReachability", open("models/reachability.alc", "r").read())
+transformation_add_MT({"ReachabilityGraph": "formalisms/ReachabilityGraph"}, {}, "models/printReachability", open("models/reachabilitygraph_print.mvc").read())
+transformation_execute_AL("models/analyseReachability", {"PetriNet": "models/my_pn"}, {"ReachabilityGraph": "models/my_reachability"}, tracability_model="trac")
+transformation_execute_MT("models/printReachability", {"ReachabilityGraph": "models/my_reachability"}, {})
+
+time.sleep(5)
+print(model_list(""))