Browse Source

Preliminary working version of parallel process enactment

Yentl Van Tendeloo 7 years ago
parent
commit
d47504ce7f

BIN
bootstrap/bootstrap.m.gz


+ 4 - 5
bootstrap/core_algorithm.alc

@@ -807,13 +807,13 @@ Boolean function enact_action(pm : Element, element : String, mapping : Element)
 
 	if read_type(core, transformation_id) == "ActionLanguage":
 		log(string_join("Enacting ActionLanguage: ", read_attribute(pm, element, "name")))
-		output(string_join("Enacting ActionLanguage: ", read_attribute(pm, element, "name")))
+		output("Success: ready for AL execution")
 	elif read_type(core, transformation_id) == "ManualOperation":
 		log(string_join("Enacting ManualOperation: ", read_attribute(pm, element, "name")))
-		output(string_join("Enacting ManualOperation: ", read_attribute(pm, element, "name")))
+		output("Success: ready for MANUAL execution")
 	else:
 		log(string_join("Enacting ModelTransformation: ", read_attribute(pm, element, "name")))
-		output(string_join("Enacting ModelTransformation: ", read_attribute(pm, element, "name")))
+		output("Success: ready for MT execution")
 		
 	result = execute_operation(transformation_id, inputs, read_root())
 
@@ -954,7 +954,7 @@ Void function enact_PM(pm : Element, mapping : Element):
 				list_append(args, element)
 				list_append(args, mapping)
 				taskname = spawn(enact_PM_activity, args)
-				output("Spawned task for activity: " + taskname)
+				output(taskname + " : " + cast_string(read_attribute(pm, element, "name")))
 				dict_add(task_to_activity, taskname, element)
 				continue!
 
@@ -975,7 +975,6 @@ Void function enact_PM(pm : Element, mapping : Element):
 				keys = dict_keys(task_to_result)
 				while (set_len(keys) > 0):
 					task = set_pop(keys)
-					output("Success: " + task)
 					result = task_to_result[task]
 
 					Element all_next

+ 12 - 11
unit/test_all.py

@@ -174,7 +174,6 @@ class TestModelverse(unittest.TestCase):
         log = []
 
         def manual_callback(model):
-            print("Got in manual callback")
             p1 = instantiate(model, "PetriNet_Runtime/Place")
             p2 = instantiate(model, "PetriNet_Runtime/Place")
             p3 = instantiate(model, "PetriNet_Runtime/Place")
@@ -263,16 +262,18 @@ class TestModelverse(unittest.TestCase):
         transformation_add_AL({"PetriNet": "test/PetriNet"}, {"ReachabilityGraph": "test/ReachabilityGraph"}, "test/reachability", open("integration/code/reachability_subfunction.alc", "r").read())
         transformation_add_MT({"ReachabilityGraph": "test/ReachabilityGraph"}, {}, "test/reachability_print", open("integration/code/reachabilitygraph_print.mvc", 'r').read())
 
-        def callback_refine_PN(context):
-            p1 = instantiate(None, "PetriNet/Place", context=context)
-            attr_assign(None, p1, "name", "p1", context=context)
-            attr_assign(None, p1, "tokens", 1, context=context)
+        def callback_refine_PN(model):
+            print("MANUAL CODE")
+            p1 = instantiate(model, "PetriNet/Place")
+            attr_assign(model, p1, "name", "p1")
+            attr_assign(model, p1, "tokens", 1)
 
-            t1 = instantiate(None, "PetriNet/Transition", context=context)
-            attr_assign(None, t1, "name", "t1", context=context)
+            t1 = instantiate(model, "PetriNet/Transition")
+            attr_assign(model, t1, "name", "t1")
 
-            p2t = instantiate(None, "PetriNet/P2T", (p1, t1), context=context)
-            attr_assign(None, p2t, "weight", 1, context=context)
+            p2t = instantiate(model, "PetriNet/P2T", (p1, t1))
+            attr_assign(model, p2t, "weight", 1)
+            print("END MANUAL CODE")
 
         import log_output
         log = []
@@ -300,8 +301,8 @@ class TestModelverse(unittest.TestCase):
         model_add("test/MM_rendered_graphical", "formalisms/SimpleClassDiagrams", open("models/MM_rendered_graphical.mvc", 'r').read())
         model_add("test/my_CBD", "test/CausalBlockDiagrams", open("integration/code/my_cbd.mvc", 'r').read())
 
-        def add_tracability(context):
-            instantiate(None, "Association", ("abstract/Block", "rendered/Group"), ID="TracabilityLink", context=context)
+        def add_tracability(model):
+            instantiate(model, "Association", ("abstract/Block", "rendered/Group"), ID="TracabilityLink")
 
         transformation_add_MT({"abstract": "test/CausalBlockDiagrams", "rendered": "test/MM_rendered_graphical"}, {"abstract": "test/CausalBlockDiagrams", "rendered": "test/MM_rendered_graphical"}, "test/render_graphical_CBD", open("models/CBD_mapper.mvc", 'r').read(), add_tracability)
         result = model_render("test/my_CBD", "test/render_graphical_CBD", "test/my_perceptualized_CBD")

+ 11 - 61
wrappers/classes/modelverse.xml

@@ -701,20 +701,13 @@
                             </state>
 
                             <state id="executing">
-                                <transition cond="self.expect_response_partial('Enacting ModelTransformation', pop=False)" target="../enacting/sc">
+                                <transition cond="self.responses and ' : ' in self.responses[0]" target=".">
                                     <script>
-                                        self.op_name = self.responses.pop(0).split(": ", 1)[1]
-                                    </script>
-                                </transition>
-                                <transition cond="self.expect_response_partial('Enacting ActionLanguage', pop=False)" target="../enacting/sc">
-                                    <script>
-                                        self.op_name = self.responses.pop(0).split(": ", 1)[1]
-                                    </script>
-                                </transition>
-                                <transition cond="self.expect_response_partial('Enacting ManualOperation', pop=False)" target="../enacting/op">
-                                    <script>
-                                        self.op_name = self.responses.pop(0).split(": ", 1)[1]
+                                        taskname, operation = self.responses.pop(0).split(" : ")
                                     </script>
+                                    <raise event="result">
+                                        <parameter expr="[taskname, operation]"/>
+                                    </raise>
                                 </transition>
 
                                 <transition cond="self.expect_response('Success', pop=True)" target="../../../../wait_for_action/megamodelling">
@@ -724,55 +717,12 @@
                                 </transition>
                             </state>
 
-                            <state id="enacting" initial="sc">
-                                <state id="sc" initial="init">
-                                    <state id="init">
-                                        <transition target="../processing">
-                                            <script>
-                                                self.input_context = str(uuid.uuid4())
-                                                self.inputs[self.input_context] = []
-                                            </script>
-
-                                            <raise event="result">
-                                                <parameter expr="['SC', self.op_name, self.input_context]"/>
-                                            </raise>
-                                        </transition>
-                                    </state>
-
-                                    <state id="processing">
-                                        <transition cond="not (self.expect_response('Success', pop=False) or self.expect_response('Failure', pop=False)) and self.expect_response_partial('', pop=False)" target=".">
-                                            <raise event="data_output">
-                                                <parameter expr="self.responses.pop(0)"/>
-                                            </raise>
-                                        </transition>
-
-                                        <transition cond="self.expect_input(self.input_context, 'data_input')" target=".">
-                                            <raise event="request">
-                                                <parameter expr="self.inputs[self.input_context].pop(0)['parameters']"/>
-                                            </raise>
-                                        </transition>
-                                    </state>
-                                </state>
-
-                                <state id="op">
-                                    <transition cond="self.expect_response_partial('Please perform manual operation ', pop=True)" target="."/>
-                                    <transition cond="self.expect_response_partial('Operating on: ', pop=False)" target=".">
-                                        <script>
-                                            model = self.responses.pop(0).split(": ", 1)[1]
-                                            self.context = str(uuid.uuid4())
-                                            self.actions[self.context] = []
-                                        </script>
-
-                                        <raise event="result">
-                                            <parameter expr="['OP', self.op_name, self.context, model]"/>
-                                        </raise>
-                                    </transition>
-                                    <transition cond="self.expect_response('Model loaded, ready for commands!')" target="../../../../../going_scripted"/>
-                                </state>
-
-                                <transition cond="self.expect_response('Success', pop=True)" target="../executing"/>
-                                <transition cond="self.expect_response('Failure', pop=True)" target="../executing"/>
-                            </state>
+                            <transition cond="self.responses" target="executing">
+                                <!-- TODO remove -->
+                                <script>
+                                    print("RESPONSES: " + self.responses[0])
+                                </script>
+                            </transition>
                         </state>
 
                         <history id="history" type="deep"/>

+ 39 - 56
wrappers/modelverse.py

@@ -91,18 +91,20 @@ def __run_new_modelverse_activity(address, username, password, taskname, pipe, c
                 print("Output of MV to SC: " + str(response))
                 if response.name == "data_output":
                     # Got output of MV, so forward to SCCD
-                    pipe.send(("input", response.parameters))
+                    if pipe is not None:
+                        pipe.send(("input", response.parameters))
                 elif response.name == "result":
                     # Finished execution, so continue and return result
-                    pipe.send(("terminate", []))
-                    pipe.close()
+                    if pipe is not None:
+                        pipe.send(("terminate", []))
+                        pipe.close()
                     return response.parameters[1]
                 else:
                     raise Exception("Unknown data from MV to SC: " + str(response))
                 empty = False
 
             # Fetch output from the SC
-            if pipe.poll():
+            if pipe is not None and pipe.poll():
                 response = pipe.recv()
 
                 if response.name == "output":
@@ -122,7 +124,7 @@ def __invoke(callback, model):
     p.join()
     print("Invocation done")
 
-def _process_SC(statechart, port_sc, taskname):
+def _process_SC(statechart, port_sc, taskname, block=True):
     import multiprocessing
     p2c_pipe, c2p_pipe = multiprocessing.Pipe()
     p = multiprocessing.Process(target=__run_new_modelverse_activity, args=[controller.address, controller.username, controller.password, taskname, c2p_pipe, None])
@@ -146,14 +148,20 @@ def _process_SC(statechart, port_sc, taskname):
 
         if empty:
             time.sleep(0.05)
-    p.join()
+    if block:
+        p.join()
+    else:
+        return p
 
-def _process_OP(callback, taskname):
+def _process_OP(callback, taskname, block=True):
     import multiprocessing
     print("Running remote operation for taskname " + taskname)
     p = multiprocessing.Process(target=__run_new_modelverse_activity, args=[controller.address, controller.username, controller.password, taskname, None, callback])
     p.start()
-    p.join()
+    if block:
+        p.join()
+    else:
+        return p
 
 def INPUT(action, context, parameters):
     controller.addInput(Event("action", "action_in", [action, _next_ID(), context, parameters]))
@@ -453,7 +461,6 @@ def all_instances(model_name, type_name, context=None):
 def process_execute(process_name, prefix, callbacks=None):
     # for all callbacks to SCs, start up the output port already
     sc_ports = {}
-
     for k, v in callbacks.items():
         if isinstance(v, (tuple, list)):
             # Is a statechart, so register already
@@ -461,55 +468,31 @@ def process_execute(process_name, prefix, callbacks=None):
 
     INPUT("process_execute", None, [process_name, prefix])
 
-    operation = OUTPUT()
     while 1:
-        if isinstance(operation, (list, tuple)):
-            if operation[0] == "OP":
-                t, name, context, model = operation
-                if name in callbacks:
-                    callbacks[name](context)
-                INPUT("exit", context, [])
-                operation = OUTPUT()
-            elif operation[0] == "SC":
-                t, name, context = operation
-                if name in callbacks:
-                    statechart = callbacks[name]
-                else:
-                    statechart = None
-
-                while 1:
-                    empty = True
-
-                    # Fetch output from the MV
-                    response = responses.fetch(0)
-                    if response is not None:
-                        if response.name == "data_output":
-                            # Got output of MV, so forward to SCCD
-                            if statechart:
-                                statechart[0].addInput(Event("input", statechart[1], response.parameters))
-                        elif response.name == "result":
-                            # Finished execution, so continue and return result
-                            if statechart:
-                                statechart[0].addInput(Event("terminate", statechart[1], []))
-                            # Break from the most inner loop
-                            operation = response.parameters[1]
-                            break
-                        empty = False
-
-                    # Fetch output from the SC
-                    if statechart:
-                        response = sc_ports[name].fetch(0)
-                        if response is not None:
-                            if response.name == "output":
-                                controller.addInput(Event("data_input", "action_in", [response.parameters, context]))
-                            empty = False
-
-                    if empty:
-                        time.sleep(0.01)
+        result = OUTPUT()
+        if result == "Success":
+            # Finished
+            return None
         else:
-            if operation == "Finished":
-                # Finished execution of the process, so exit
-                return None
+            taskname, operation = result
+            print("Operation: " + str(operation))
+            print("Taskname: " + str(taskname))
+
+            if (operation in callbacks):
+                data = callbacks[operation]
+
+                if isinstance(data, (tuple, list)):
+                    # Statechart, so consider like that
+                    print("Starting SC processing")
+                    _process_SC(data, sc_ports[operation], taskname, block=False)
+                else:
+                    # Assume function
+                    print("Starting OP processing")
+                    _process_OP(data, taskname, block=False)
+            else:
+                # Assume empty function
+                print("Starting OP processing")
+                _process_OP(None, taskname, block=False)
 
 def get_taskname():
     """Fetch the taskname of the current connection."""

+ 87 - 198
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)
 
-Date:   Mon Nov 13 16:15:44 2017
+Date:   Mon Nov 13 16:48:22 2017
 
 Model author: Yentl Van Tendeloo
 Model name:   MvK Server
@@ -303,280 +303,265 @@ class Modelverse(RuntimeClassBase):
         # state /initialized/behaviour/operations/store_on_scripted/process_execute/executing
         self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/executing"] = State(51, "/initialized/behaviour/operations/store_on_scripted/process_execute/executing", self)
         
-        # state /initialized/behaviour/operations/store_on_scripted/process_execute/enacting
-        self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting"] = State(52, "/initialized/behaviour/operations/store_on_scripted/process_execute/enacting", self)
-        
-        # state /initialized/behaviour/operations/store_on_scripted/process_execute/enacting/sc
-        self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/sc"] = State(53, "/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/sc", self)
-        
-        # state /initialized/behaviour/operations/store_on_scripted/process_execute/enacting/sc/init
-        self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/sc/init"] = State(54, "/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/sc/init", self)
-        
-        # state /initialized/behaviour/operations/store_on_scripted/process_execute/enacting/sc/processing
-        self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/sc/processing"] = State(55, "/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/sc/processing", self)
-        
-        # state /initialized/behaviour/operations/store_on_scripted/process_execute/enacting/op
-        self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/op"] = State(56, "/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/op", self)
-        
         # state /initialized/behaviour/operations/store_on_scripted/history
-        self.states["/initialized/behaviour/operations/store_on_scripted/history"] = DeepHistoryState(57, "/initialized/behaviour/operations/store_on_scripted/history", self)
+        self.states["/initialized/behaviour/operations/store_on_scripted/history"] = DeepHistoryState(52, "/initialized/behaviour/operations/store_on_scripted/history", self)
         
         # state /initialized/behaviour/operations/permission_modify
-        self.states["/initialized/behaviour/operations/permission_modify"] = State(58, "/initialized/behaviour/operations/permission_modify", self)
+        self.states["/initialized/behaviour/operations/permission_modify"] = State(53, "/initialized/behaviour/operations/permission_modify", self)
         self.states["/initialized/behaviour/operations/permission_modify"].setEnter(self._initialized_behaviour_operations_permission_modify_enter)
         
         # state /initialized/behaviour/operations/permission_owner
-        self.states["/initialized/behaviour/operations/permission_owner"] = State(59, "/initialized/behaviour/operations/permission_owner", self)
+        self.states["/initialized/behaviour/operations/permission_owner"] = State(54, "/initialized/behaviour/operations/permission_owner", self)
         self.states["/initialized/behaviour/operations/permission_owner"].setEnter(self._initialized_behaviour_operations_permission_owner_enter)
         
         # state /initialized/behaviour/operations/permission_group
-        self.states["/initialized/behaviour/operations/permission_group"] = State(60, "/initialized/behaviour/operations/permission_group", self)
+        self.states["/initialized/behaviour/operations/permission_group"] = State(55, "/initialized/behaviour/operations/permission_group", self)
         self.states["/initialized/behaviour/operations/permission_group"].setEnter(self._initialized_behaviour_operations_permission_group_enter)
         
         # state /initialized/behaviour/operations/group_create
-        self.states["/initialized/behaviour/operations/group_create"] = State(61, "/initialized/behaviour/operations/group_create", self)
+        self.states["/initialized/behaviour/operations/group_create"] = State(56, "/initialized/behaviour/operations/group_create", self)
         self.states["/initialized/behaviour/operations/group_create"].setEnter(self._initialized_behaviour_operations_group_create_enter)
         
         # state /initialized/behaviour/operations/group_delete
-        self.states["/initialized/behaviour/operations/group_delete"] = State(62, "/initialized/behaviour/operations/group_delete", self)
+        self.states["/initialized/behaviour/operations/group_delete"] = State(57, "/initialized/behaviour/operations/group_delete", self)
         self.states["/initialized/behaviour/operations/group_delete"].setEnter(self._initialized_behaviour_operations_group_delete_enter)
         
         # state /initialized/behaviour/operations/group_owner_add
-        self.states["/initialized/behaviour/operations/group_owner_add"] = State(63, "/initialized/behaviour/operations/group_owner_add", self)
+        self.states["/initialized/behaviour/operations/group_owner_add"] = State(58, "/initialized/behaviour/operations/group_owner_add", self)
         self.states["/initialized/behaviour/operations/group_owner_add"].setEnter(self._initialized_behaviour_operations_group_owner_add_enter)
         
         # state /initialized/behaviour/operations/group_owner_delete
-        self.states["/initialized/behaviour/operations/group_owner_delete"] = State(64, "/initialized/behaviour/operations/group_owner_delete", self)
+        self.states["/initialized/behaviour/operations/group_owner_delete"] = State(59, "/initialized/behaviour/operations/group_owner_delete", self)
         self.states["/initialized/behaviour/operations/group_owner_delete"].setEnter(self._initialized_behaviour_operations_group_owner_delete_enter)
         
         # state /initialized/behaviour/operations/group_join
-        self.states["/initialized/behaviour/operations/group_join"] = State(65, "/initialized/behaviour/operations/group_join", self)
+        self.states["/initialized/behaviour/operations/group_join"] = State(60, "/initialized/behaviour/operations/group_join", self)
         self.states["/initialized/behaviour/operations/group_join"].setEnter(self._initialized_behaviour_operations_group_join_enter)
         
         # state /initialized/behaviour/operations/group_kick
-        self.states["/initialized/behaviour/operations/group_kick"] = State(66, "/initialized/behaviour/operations/group_kick", self)
+        self.states["/initialized/behaviour/operations/group_kick"] = State(61, "/initialized/behaviour/operations/group_kick", self)
         self.states["/initialized/behaviour/operations/group_kick"].setEnter(self._initialized_behaviour_operations_group_kick_enter)
         
         # state /initialized/behaviour/operations/group_list
-        self.states["/initialized/behaviour/operations/group_list"] = State(67, "/initialized/behaviour/operations/group_list", self)
+        self.states["/initialized/behaviour/operations/group_list"] = State(62, "/initialized/behaviour/operations/group_list", self)
         self.states["/initialized/behaviour/operations/group_list"].setEnter(self._initialized_behaviour_operations_group_list_enter)
         
         # state /initialized/behaviour/operations/admin_promote
-        self.states["/initialized/behaviour/operations/admin_promote"] = State(68, "/initialized/behaviour/operations/admin_promote", self)
+        self.states["/initialized/behaviour/operations/admin_promote"] = State(63, "/initialized/behaviour/operations/admin_promote", self)
         self.states["/initialized/behaviour/operations/admin_promote"].setEnter(self._initialized_behaviour_operations_admin_promote_enter)
         
         # state /initialized/behaviour/operations/admin_demote
-        self.states["/initialized/behaviour/operations/admin_demote"] = State(69, "/initialized/behaviour/operations/admin_demote", self)
+        self.states["/initialized/behaviour/operations/admin_demote"] = State(64, "/initialized/behaviour/operations/admin_demote", self)
         self.states["/initialized/behaviour/operations/admin_demote"].setEnter(self._initialized_behaviour_operations_admin_demote_enter)
         
         # state /initialized/behaviour/operations/conformance_delete
-        self.states["/initialized/behaviour/operations/conformance_delete"] = State(70, "/initialized/behaviour/operations/conformance_delete", self)
+        self.states["/initialized/behaviour/operations/conformance_delete"] = State(65, "/initialized/behaviour/operations/conformance_delete", self)
         self.states["/initialized/behaviour/operations/conformance_delete"].setEnter(self._initialized_behaviour_operations_conformance_delete_enter)
         
         # state /initialized/behaviour/operations/conformance_add
-        self.states["/initialized/behaviour/operations/conformance_add"] = State(71, "/initialized/behaviour/operations/conformance_add", self)
+        self.states["/initialized/behaviour/operations/conformance_add"] = State(66, "/initialized/behaviour/operations/conformance_add", self)
         self.states["/initialized/behaviour/operations/conformance_add"].setEnter(self._initialized_behaviour_operations_conformance_add_enter)
         
         # state /initialized/behaviour/operations/folder_create
-        self.states["/initialized/behaviour/operations/folder_create"] = State(72, "/initialized/behaviour/operations/folder_create", self)
+        self.states["/initialized/behaviour/operations/folder_create"] = State(67, "/initialized/behaviour/operations/folder_create", self)
         self.states["/initialized/behaviour/operations/folder_create"].setEnter(self._initialized_behaviour_operations_folder_create_enter)
         
         # state /initialized/behaviour/operations/model_types
-        self.states["/initialized/behaviour/operations/model_types"] = State(73, "/initialized/behaviour/operations/model_types", self)
+        self.states["/initialized/behaviour/operations/model_types"] = State(68, "/initialized/behaviour/operations/model_types", self)
         self.states["/initialized/behaviour/operations/model_types"].setEnter(self._initialized_behaviour_operations_model_types_enter)
         
         # state /initialized/behaviour/operations/element_list
-        self.states["/initialized/behaviour/operations/element_list"] = State(74, "/initialized/behaviour/operations/element_list", self)
+        self.states["/initialized/behaviour/operations/element_list"] = State(69, "/initialized/behaviour/operations/element_list", self)
         self.states["/initialized/behaviour/operations/element_list"].setEnter(self._initialized_behaviour_operations_element_list_enter)
         
         # state /initialized/behaviour/operations/element_list_nice
-        self.states["/initialized/behaviour/operations/element_list_nice"] = State(75, "/initialized/behaviour/operations/element_list_nice", self)
+        self.states["/initialized/behaviour/operations/element_list_nice"] = State(70, "/initialized/behaviour/operations/element_list_nice", self)
         self.states["/initialized/behaviour/operations/element_list_nice"].setEnter(self._initialized_behaviour_operations_element_list_nice_enter)
         
         # state /initialized/behaviour/operations/types
-        self.states["/initialized/behaviour/operations/types"] = State(76, "/initialized/behaviour/operations/types", self)
+        self.states["/initialized/behaviour/operations/types"] = State(71, "/initialized/behaviour/operations/types", self)
         self.states["/initialized/behaviour/operations/types"].setEnter(self._initialized_behaviour_operations_types_enter)
         
         # state /initialized/behaviour/operations/types_full
-        self.states["/initialized/behaviour/operations/types_full"] = State(77, "/initialized/behaviour/operations/types_full", self)
+        self.states["/initialized/behaviour/operations/types_full"] = State(72, "/initialized/behaviour/operations/types_full", self)
         self.states["/initialized/behaviour/operations/types_full"].setEnter(self._initialized_behaviour_operations_types_full_enter)
         
         # state /initialized/behaviour/operations/read_info
-        self.states["/initialized/behaviour/operations/read_info"] = State(78, "/initialized/behaviour/operations/read_info", self)
+        self.states["/initialized/behaviour/operations/read_info"] = State(73, "/initialized/behaviour/operations/read_info", self)
         self.states["/initialized/behaviour/operations/read_info"].setEnter(self._initialized_behaviour_operations_read_info_enter)
         
         # state /initialized/behaviour/operations/read_attrs
-        self.states["/initialized/behaviour/operations/read_attrs"] = State(79, "/initialized/behaviour/operations/read_attrs", self)
+        self.states["/initialized/behaviour/operations/read_attrs"] = State(74, "/initialized/behaviour/operations/read_attrs", self)
         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(80, "/initialized/behaviour/operations/read_defined_attrs", self)
+        self.states["/initialized/behaviour/operations/read_defined_attrs"] = State(75, "/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
-        self.states["/initialized/behaviour/operations/instantiate"] = State(81, "/initialized/behaviour/operations/instantiate", self)
+        self.states["/initialized/behaviour/operations/instantiate"] = State(76, "/initialized/behaviour/operations/instantiate", self)
         
         # state /initialized/behaviour/operations/instantiate/decide_node_or_edge
-        self.states["/initialized/behaviour/operations/instantiate/decide_node_or_edge"] = State(82, "/initialized/behaviour/operations/instantiate/decide_node_or_edge", self)
+        self.states["/initialized/behaviour/operations/instantiate/decide_node_or_edge"] = State(77, "/initialized/behaviour/operations/instantiate/decide_node_or_edge", self)
         
         # state /initialized/behaviour/operations/instantiate/created
-        self.states["/initialized/behaviour/operations/instantiate/created"] = State(83, "/initialized/behaviour/operations/instantiate/created", self)
+        self.states["/initialized/behaviour/operations/instantiate/created"] = State(78, "/initialized/behaviour/operations/instantiate/created", self)
         
         # state /initialized/behaviour/operations/delete_element
-        self.states["/initialized/behaviour/operations/delete_element"] = State(84, "/initialized/behaviour/operations/delete_element", self)
+        self.states["/initialized/behaviour/operations/delete_element"] = State(79, "/initialized/behaviour/operations/delete_element", self)
         self.states["/initialized/behaviour/operations/delete_element"].setEnter(self._initialized_behaviour_operations_delete_element_enter)
         
         # state /initialized/behaviour/operations/attr_assign
-        self.states["/initialized/behaviour/operations/attr_assign"] = State(85, "/initialized/behaviour/operations/attr_assign", self)
+        self.states["/initialized/behaviour/operations/attr_assign"] = State(80, "/initialized/behaviour/operations/attr_assign", self)
         self.states["/initialized/behaviour/operations/attr_assign"].setEnter(self._initialized_behaviour_operations_attr_assign_enter)
         
         # state /initialized/behaviour/operations/attr_assign_code
-        self.states["/initialized/behaviour/operations/attr_assign_code"] = State(86, "/initialized/behaviour/operations/attr_assign_code", self)
+        self.states["/initialized/behaviour/operations/attr_assign_code"] = State(81, "/initialized/behaviour/operations/attr_assign_code", self)
         self.states["/initialized/behaviour/operations/attr_assign_code"].setEnter(self._initialized_behaviour_operations_attr_assign_code_enter)
         
         # state /initialized/behaviour/operations/attr_delete
-        self.states["/initialized/behaviour/operations/attr_delete"] = State(87, "/initialized/behaviour/operations/attr_delete", self)
+        self.states["/initialized/behaviour/operations/attr_delete"] = State(82, "/initialized/behaviour/operations/attr_delete", self)
         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(88, "/initialized/behaviour/operations/attr_type", self)
+        self.states["/initialized/behaviour/operations/attr_type"] = State(83, "/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(89, "/initialized/behaviour/operations/attr_name", self)
+        self.states["/initialized/behaviour/operations/attr_name"] = State(84, "/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(90, "/initialized/behaviour/operations/attr_optional", self)
+        self.states["/initialized/behaviour/operations/attr_optional"] = State(85, "/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
-        self.states["/initialized/behaviour/operations/read_outgoing"] = State(91, "/initialized/behaviour/operations/read_outgoing", self)
+        self.states["/initialized/behaviour/operations/read_outgoing"] = State(86, "/initialized/behaviour/operations/read_outgoing", self)
         self.states["/initialized/behaviour/operations/read_outgoing"].setEnter(self._initialized_behaviour_operations_read_outgoing_enter)
         
         # state /initialized/behaviour/operations/read_incoming
-        self.states["/initialized/behaviour/operations/read_incoming"] = State(92, "/initialized/behaviour/operations/read_incoming", self)
+        self.states["/initialized/behaviour/operations/read_incoming"] = State(87, "/initialized/behaviour/operations/read_incoming", self)
         self.states["/initialized/behaviour/operations/read_incoming"].setEnter(self._initialized_behaviour_operations_read_incoming_enter)
         
         # state /initialized/behaviour/operations/read_association_source
-        self.states["/initialized/behaviour/operations/read_association_source"] = State(93, "/initialized/behaviour/operations/read_association_source", self)
+        self.states["/initialized/behaviour/operations/read_association_source"] = State(88, "/initialized/behaviour/operations/read_association_source", self)
         self.states["/initialized/behaviour/operations/read_association_source"].setEnter(self._initialized_behaviour_operations_read_association_source_enter)
         
         # state /initialized/behaviour/operations/read_association_destination
-        self.states["/initialized/behaviour/operations/read_association_destination"] = State(94, "/initialized/behaviour/operations/read_association_destination", self)
+        self.states["/initialized/behaviour/operations/read_association_destination"] = State(89, "/initialized/behaviour/operations/read_association_destination", self)
         self.states["/initialized/behaviour/operations/read_association_destination"].setEnter(self._initialized_behaviour_operations_read_association_destination_enter)
         
         # state /initialized/behaviour/operations/connections_between
-        self.states["/initialized/behaviour/operations/connections_between"] = State(95, "/initialized/behaviour/operations/connections_between", self)
+        self.states["/initialized/behaviour/operations/connections_between"] = State(90, "/initialized/behaviour/operations/connections_between", self)
         self.states["/initialized/behaviour/operations/connections_between"].setEnter(self._initialized_behaviour_operations_connections_between_enter)
         
         # state /initialized/behaviour/operations/define_attribute
-        self.states["/initialized/behaviour/operations/define_attribute"] = State(96, "/initialized/behaviour/operations/define_attribute", self)
+        self.states["/initialized/behaviour/operations/define_attribute"] = State(91, "/initialized/behaviour/operations/define_attribute", self)
         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(97, "/initialized/behaviour/operations/undefine_attribute", self)
+        self.states["/initialized/behaviour/operations/undefine_attribute"] = State(92, "/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
-        self.states["/initialized/behaviour/operations/all_instances"] = State(98, "/initialized/behaviour/operations/all_instances", self)
+        self.states["/initialized/behaviour/operations/all_instances"] = State(93, "/initialized/behaviour/operations/all_instances", self)
         self.states["/initialized/behaviour/operations/all_instances"].setEnter(self._initialized_behaviour_operations_all_instances_enter)
         
         # state /initialized/behaviour/operations/exit_save
-        self.states["/initialized/behaviour/operations/exit_save"] = State(99, "/initialized/behaviour/operations/exit_save", self)
+        self.states["/initialized/behaviour/operations/exit_save"] = State(94, "/initialized/behaviour/operations/exit_save", self)
         self.states["/initialized/behaviour/operations/exit_save"].setEnter(self._initialized_behaviour_operations_exit_save_enter)
         
         # state /initialized/behaviour/operations/service_register
-        self.states["/initialized/behaviour/operations/service_register"] = State(100, "/initialized/behaviour/operations/service_register", self)
+        self.states["/initialized/behaviour/operations/service_register"] = State(95, "/initialized/behaviour/operations/service_register", self)
         self.states["/initialized/behaviour/operations/service_register"].setEnter(self._initialized_behaviour_operations_service_register_enter)
         
         # state /initialized/behaviour/operations/service_stop
-        self.states["/initialized/behaviour/operations/service_stop"] = State(101, "/initialized/behaviour/operations/service_stop", self)
+        self.states["/initialized/behaviour/operations/service_stop"] = State(96, "/initialized/behaviour/operations/service_stop", self)
         self.states["/initialized/behaviour/operations/service_stop"].setEnter(self._initialized_behaviour_operations_service_stop_enter)
         
         # state /initialized/behaviour/wait_for_action
-        self.states["/initialized/behaviour/wait_for_action"] = State(102, "/initialized/behaviour/wait_for_action", self)
+        self.states["/initialized/behaviour/wait_for_action"] = State(97, "/initialized/behaviour/wait_for_action", self)
         
         # state /initialized/behaviour/wait_for_action/disconnected
-        self.states["/initialized/behaviour/wait_for_action/disconnected"] = State(103, "/initialized/behaviour/wait_for_action/disconnected", self)
+        self.states["/initialized/behaviour/wait_for_action/disconnected"] = State(98, "/initialized/behaviour/wait_for_action/disconnected", self)
         
         # state /initialized/behaviour/wait_for_action/connected
-        self.states["/initialized/behaviour/wait_for_action/connected"] = State(104, "/initialized/behaviour/wait_for_action/connected", self)
+        self.states["/initialized/behaviour/wait_for_action/connected"] = State(99, "/initialized/behaviour/wait_for_action/connected", self)
         
         # state /initialized/behaviour/wait_for_action/activity
-        self.states["/initialized/behaviour/wait_for_action/activity"] = State(105, "/initialized/behaviour/wait_for_action/activity", self)
+        self.states["/initialized/behaviour/wait_for_action/activity"] = State(100, "/initialized/behaviour/wait_for_action/activity", self)
         
         # state /initialized/behaviour/wait_for_action/activity/SC
-        self.states["/initialized/behaviour/wait_for_action/activity/SC"] = State(106, "/initialized/behaviour/wait_for_action/activity/SC", self)
+        self.states["/initialized/behaviour/wait_for_action/activity/SC"] = State(101, "/initialized/behaviour/wait_for_action/activity/SC", self)
         self.states["/initialized/behaviour/wait_for_action/activity/SC"].setEnter(self._initialized_behaviour_wait_for_action_activity_SC_enter)
         
         # state /initialized/behaviour/wait_for_action/activity/SC/forwarding
-        self.states["/initialized/behaviour/wait_for_action/activity/SC/forwarding"] = State(107, "/initialized/behaviour/wait_for_action/activity/SC/forwarding", self)
+        self.states["/initialized/behaviour/wait_for_action/activity/SC/forwarding"] = State(102, "/initialized/behaviour/wait_for_action/activity/SC/forwarding", self)
         
         # state /initialized/behaviour/wait_for_action/activity/OP
-        self.states["/initialized/behaviour/wait_for_action/activity/OP"] = State(108, "/initialized/behaviour/wait_for_action/activity/OP", self)
+        self.states["/initialized/behaviour/wait_for_action/activity/OP"] = State(103, "/initialized/behaviour/wait_for_action/activity/OP", self)
         self.states["/initialized/behaviour/wait_for_action/activity/OP"].setEnter(self._initialized_behaviour_wait_for_action_activity_OP_enter)
         self.states["/initialized/behaviour/wait_for_action/activity/OP"].setExit(self._initialized_behaviour_wait_for_action_activity_OP_exit)
         
         # state /initialized/behaviour/wait_for_action/activity/OP/forwarding
-        self.states["/initialized/behaviour/wait_for_action/activity/OP/forwarding"] = State(109, "/initialized/behaviour/wait_for_action/activity/OP/forwarding", self)
+        self.states["/initialized/behaviour/wait_for_action/activity/OP/forwarding"] = State(104, "/initialized/behaviour/wait_for_action/activity/OP/forwarding", self)
         
         # 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(105, "/initialized/behaviour/wait_for_action/megamodelling", self)
         
         # state /initialized/behaviour/wait_for_action/service
-        self.states["/initialized/behaviour/wait_for_action/service"] = State(111, "/initialized/behaviour/wait_for_action/service", self)
+        self.states["/initialized/behaviour/wait_for_action/service"] = State(106, "/initialized/behaviour/wait_for_action/service", self)
         
         # state /initialized/behaviour/wait_for_action/modelling
-        self.states["/initialized/behaviour/wait_for_action/modelling"] = State(112, "/initialized/behaviour/wait_for_action/modelling", self)
+        self.states["/initialized/behaviour/wait_for_action/modelling"] = State(107, "/initialized/behaviour/wait_for_action/modelling", self)
         
         # state /initialized/behaviour/wait_for_action/modelling/recognized
-        self.states["/initialized/behaviour/wait_for_action/modelling/recognized"] = State(113, "/initialized/behaviour/wait_for_action/modelling/recognized", self)
+        self.states["/initialized/behaviour/wait_for_action/modelling/recognized"] = State(108, "/initialized/behaviour/wait_for_action/modelling/recognized", self)
         
         # state /initialized/behaviour/wait_for_action/modelling/recognized/manual
-        self.states["/initialized/behaviour/wait_for_action/modelling/recognized/manual"] = State(114, "/initialized/behaviour/wait_for_action/modelling/recognized/manual", self)
+        self.states["/initialized/behaviour/wait_for_action/modelling/recognized/manual"] = State(109, "/initialized/behaviour/wait_for_action/modelling/recognized/manual", self)
         
         # state /initialized/behaviour/wait_for_action/modelling/recognized/scripted
-        self.states["/initialized/behaviour/wait_for_action/modelling/recognized/scripted"] = State(115, "/initialized/behaviour/wait_for_action/modelling/recognized/scripted", self)
+        self.states["/initialized/behaviour/wait_for_action/modelling/recognized/scripted"] = State(110, "/initialized/behaviour/wait_for_action/modelling/recognized/scripted", self)
         
         # state /initialized/behaviour/wait_for_action/finished
-        self.states["/initialized/behaviour/wait_for_action/finished"] = State(116, "/initialized/behaviour/wait_for_action/finished", self)
+        self.states["/initialized/behaviour/wait_for_action/finished"] = State(111, "/initialized/behaviour/wait_for_action/finished", self)
         
         # state /initialized/behaviour/wait_for_action/history
-        self.states["/initialized/behaviour/wait_for_action/history"] = DeepHistoryState(117, "/initialized/behaviour/wait_for_action/history", self)
+        self.states["/initialized/behaviour/wait_for_action/history"] = DeepHistoryState(112, "/initialized/behaviour/wait_for_action/history", self)
         
         # state /initialized/behaviour/going_manual
-        self.states["/initialized/behaviour/going_manual"] = State(118, "/initialized/behaviour/going_manual", self)
+        self.states["/initialized/behaviour/going_manual"] = State(113, "/initialized/behaviour/going_manual", self)
         
         # state /initialized/behaviour/going_manual/init
-        self.states["/initialized/behaviour/going_manual/init"] = State(119, "/initialized/behaviour/going_manual/init", self)
+        self.states["/initialized/behaviour/going_manual/init"] = State(114, "/initialized/behaviour/going_manual/init", self)
         self.states["/initialized/behaviour/going_manual/init"].setEnter(self._initialized_behaviour_going_manual_init_enter)
         
         # state /initialized/behaviour/going_manual/search
-        self.states["/initialized/behaviour/going_manual/search"] = State(120, "/initialized/behaviour/going_manual/search", self)
+        self.states["/initialized/behaviour/going_manual/search"] = State(115, "/initialized/behaviour/going_manual/search", self)
         self.states["/initialized/behaviour/going_manual/search"].setEnter(self._initialized_behaviour_going_manual_search_enter)
         
         # state /initialized/behaviour/going_manual/OK
-        self.states["/initialized/behaviour/going_manual/OK"] = State(121, "/initialized/behaviour/going_manual/OK", self)
+        self.states["/initialized/behaviour/going_manual/OK"] = State(116, "/initialized/behaviour/going_manual/OK", self)
         self.states["/initialized/behaviour/going_manual/OK"].setEnter(self._initialized_behaviour_going_manual_OK_enter)
         
         # state /initialized/behaviour/going_scripted
-        self.states["/initialized/behaviour/going_scripted"] = State(122, "/initialized/behaviour/going_scripted", self)
+        self.states["/initialized/behaviour/going_scripted"] = State(117, "/initialized/behaviour/going_scripted", self)
         self.states["/initialized/behaviour/going_scripted"].setEnter(self._initialized_behaviour_going_scripted_enter)
         
         # state /initialized/behaviour/leaving_manual
-        self.states["/initialized/behaviour/leaving_manual"] = State(123, "/initialized/behaviour/leaving_manual", self)
+        self.states["/initialized/behaviour/leaving_manual"] = State(118, "/initialized/behaviour/leaving_manual", self)
         self.states["/initialized/behaviour/leaving_manual"].setEnter(self._initialized_behaviour_leaving_manual_enter)
         
         # state /initialized/behaviour/leaving_manual_drop
-        self.states["/initialized/behaviour/leaving_manual_drop"] = State(124, "/initialized/behaviour/leaving_manual_drop", self)
+        self.states["/initialized/behaviour/leaving_manual_drop"] = State(119, "/initialized/behaviour/leaving_manual_drop", self)
         self.states["/initialized/behaviour/leaving_manual_drop"].setEnter(self._initialized_behaviour_leaving_manual_drop_enter)
         
         # state /initialized/queue
-        self.states["/initialized/queue"] = State(125, "/initialized/queue", self)
+        self.states["/initialized/queue"] = State(120, "/initialized/queue", self)
         
         # state /initialized/queue/queue
-        self.states["/initialized/queue/queue"] = State(126, "/initialized/queue/queue", self)
+        self.states["/initialized/queue/queue"] = State(121, "/initialized/queue/queue", self)
         
         # add children
         self.states[""].addChild(self.states["/init"])
@@ -679,11 +664,6 @@ class Modelverse(RuntimeClassBase):
         self.states["/initialized/behaviour/operations/store_on_scripted/transformation_execute"].addChild(self.states["/initialized/behaviour/operations/store_on_scripted/transformation_execute/waiting"])
         self.states["/initialized/behaviour/operations/store_on_scripted/process_execute"].addChild(self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/init"])
         self.states["/initialized/behaviour/operations/store_on_scripted/process_execute"].addChild(self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/executing"])
-        self.states["/initialized/behaviour/operations/store_on_scripted/process_execute"].addChild(self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting"])
-        self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting"].addChild(self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/sc"])
-        self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting"].addChild(self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/op"])
-        self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/sc"].addChild(self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/sc/init"])
-        self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/sc"].addChild(self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/sc/processing"])
         self.states["/initialized/behaviour/operations/instantiate"].addChild(self.states["/initialized/behaviour/operations/instantiate/decide_node_or_edge"])
         self.states["/initialized/behaviour/operations/instantiate"].addChild(self.states["/initialized/behaviour/operations/instantiate/created"])
         self.states["/initialized/behaviour/wait_for_action"].addChild(self.states["/initialized/behaviour/wait_for_action/disconnected"])
@@ -720,8 +700,6 @@ class Modelverse(RuntimeClassBase):
         self.states["/initialized/behaviour/operations/store_on_scripted/transformation_add"].default_state = self.states["/initialized/behaviour/operations/store_on_scripted/transformation_add/send_metadata"]
         self.states["/initialized/behaviour/operations/store_on_scripted/transformation_execute"].default_state = self.states["/initialized/behaviour/operations/store_on_scripted/transformation_execute/send_operation"]
         self.states["/initialized/behaviour/operations/store_on_scripted/process_execute"].default_state = self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/init"]
-        self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting"].default_state = self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/sc"]
-        self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/sc"].default_state = self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/sc/init"]
         self.states["/initialized/behaviour/operations/instantiate"].default_state = self.states["/initialized/behaviour/operations/instantiate/decide_node_or_edge"]
         self.states["/initialized/behaviour/wait_for_action"].default_state = self.states["/initialized/behaviour/wait_for_action/disconnected"]
         self.states["/initialized/behaviour/wait_for_action/activity"].default_state = self.states["/initialized/behaviour/wait_for_action/activity/SC"]
@@ -1032,59 +1010,16 @@ class Modelverse(RuntimeClassBase):
         self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/init"].addTransition(_initialized_behaviour_operations_store_on_scripted_process_execute_init_0)
         
         # transition /initialized/behaviour/operations/store_on_scripted/process_execute/executing
-        _initialized_behaviour_operations_store_on_scripted_process_execute_executing_0 = Transition(self, self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/executing"], [self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/sc"]])
+        _initialized_behaviour_operations_store_on_scripted_process_execute_executing_0 = Transition(self, self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/executing"], [self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/executing"]])
         _initialized_behaviour_operations_store_on_scripted_process_execute_executing_0.setAction(self._initialized_behaviour_operations_store_on_scripted_process_execute_executing_0_exec)
         _initialized_behaviour_operations_store_on_scripted_process_execute_executing_0.setTrigger(None)
         _initialized_behaviour_operations_store_on_scripted_process_execute_executing_0.setGuard(self._initialized_behaviour_operations_store_on_scripted_process_execute_executing_0_guard)
         self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/executing"].addTransition(_initialized_behaviour_operations_store_on_scripted_process_execute_executing_0)
-        _initialized_behaviour_operations_store_on_scripted_process_execute_executing_1 = Transition(self, self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/executing"], [self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/sc"]])
+        _initialized_behaviour_operations_store_on_scripted_process_execute_executing_1 = Transition(self, self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/executing"], [self.states["/initialized/behaviour/wait_for_action/megamodelling"]])
         _initialized_behaviour_operations_store_on_scripted_process_execute_executing_1.setAction(self._initialized_behaviour_operations_store_on_scripted_process_execute_executing_1_exec)
         _initialized_behaviour_operations_store_on_scripted_process_execute_executing_1.setTrigger(None)
         _initialized_behaviour_operations_store_on_scripted_process_execute_executing_1.setGuard(self._initialized_behaviour_operations_store_on_scripted_process_execute_executing_1_guard)
         self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/executing"].addTransition(_initialized_behaviour_operations_store_on_scripted_process_execute_executing_1)
-        _initialized_behaviour_operations_store_on_scripted_process_execute_executing_2 = Transition(self, self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/executing"], [self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/op"]])
-        _initialized_behaviour_operations_store_on_scripted_process_execute_executing_2.setAction(self._initialized_behaviour_operations_store_on_scripted_process_execute_executing_2_exec)
-        _initialized_behaviour_operations_store_on_scripted_process_execute_executing_2.setTrigger(None)
-        _initialized_behaviour_operations_store_on_scripted_process_execute_executing_2.setGuard(self._initialized_behaviour_operations_store_on_scripted_process_execute_executing_2_guard)
-        self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/executing"].addTransition(_initialized_behaviour_operations_store_on_scripted_process_execute_executing_2)
-        _initialized_behaviour_operations_store_on_scripted_process_execute_executing_3 = Transition(self, self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/executing"], [self.states["/initialized/behaviour/wait_for_action/megamodelling"]])
-        _initialized_behaviour_operations_store_on_scripted_process_execute_executing_3.setAction(self._initialized_behaviour_operations_store_on_scripted_process_execute_executing_3_exec)
-        _initialized_behaviour_operations_store_on_scripted_process_execute_executing_3.setTrigger(None)
-        _initialized_behaviour_operations_store_on_scripted_process_execute_executing_3.setGuard(self._initialized_behaviour_operations_store_on_scripted_process_execute_executing_3_guard)
-        self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/executing"].addTransition(_initialized_behaviour_operations_store_on_scripted_process_execute_executing_3)
-        
-        # transition /initialized/behaviour/operations/store_on_scripted/process_execute/enacting/sc/init
-        _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_sc_init_0 = Transition(self, self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/sc/init"], [self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/sc/processing"]])
-        _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_sc_init_0.setAction(self._initialized_behaviour_operations_store_on_scripted_process_execute_enacting_sc_init_0_exec)
-        _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_sc_init_0.setTrigger(None)
-        self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/sc/init"].addTransition(_initialized_behaviour_operations_store_on_scripted_process_execute_enacting_sc_init_0)
-        
-        # transition /initialized/behaviour/operations/store_on_scripted/process_execute/enacting/sc/processing
-        _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_sc_processing_0 = Transition(self, self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/sc/processing"], [self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/sc/processing"]])
-        _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_sc_processing_0.setAction(self._initialized_behaviour_operations_store_on_scripted_process_execute_enacting_sc_processing_0_exec)
-        _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_sc_processing_0.setTrigger(None)
-        _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_sc_processing_0.setGuard(self._initialized_behaviour_operations_store_on_scripted_process_execute_enacting_sc_processing_0_guard)
-        self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/sc/processing"].addTransition(_initialized_behaviour_operations_store_on_scripted_process_execute_enacting_sc_processing_0)
-        _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_sc_processing_1 = Transition(self, self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/sc/processing"], [self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/sc/processing"]])
-        _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_sc_processing_1.setAction(self._initialized_behaviour_operations_store_on_scripted_process_execute_enacting_sc_processing_1_exec)
-        _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_sc_processing_1.setTrigger(None)
-        _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_sc_processing_1.setGuard(self._initialized_behaviour_operations_store_on_scripted_process_execute_enacting_sc_processing_1_guard)
-        self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/sc/processing"].addTransition(_initialized_behaviour_operations_store_on_scripted_process_execute_enacting_sc_processing_1)
-        
-        # transition /initialized/behaviour/operations/store_on_scripted/process_execute/enacting/op
-        _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_op_0 = Transition(self, self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/op"], [self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/op"]])
-        _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_op_0.setTrigger(None)
-        _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_op_0.setGuard(self._initialized_behaviour_operations_store_on_scripted_process_execute_enacting_op_0_guard)
-        self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/op"].addTransition(_initialized_behaviour_operations_store_on_scripted_process_execute_enacting_op_0)
-        _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_op_1 = Transition(self, self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/op"], [self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/op"]])
-        _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_op_1.setAction(self._initialized_behaviour_operations_store_on_scripted_process_execute_enacting_op_1_exec)
-        _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_op_1.setTrigger(None)
-        _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_op_1.setGuard(self._initialized_behaviour_operations_store_on_scripted_process_execute_enacting_op_1_guard)
-        self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/op"].addTransition(_initialized_behaviour_operations_store_on_scripted_process_execute_enacting_op_1)
-        _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_op_2 = Transition(self, self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/op"], [self.states["/initialized/behaviour/going_scripted"]])
-        _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_op_2.setTrigger(None)
-        _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_op_2.setGuard(self._initialized_behaviour_operations_store_on_scripted_process_execute_enacting_op_2_guard)
-        self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/op"].addTransition(_initialized_behaviour_operations_store_on_scripted_process_execute_enacting_op_2)
         
         # transition /initialized/behaviour/operations/permission_modify
         _initialized_behaviour_operations_permission_modify_0 = Transition(self, self.states["/initialized/behaviour/operations/permission_modify"], [self.states["/initialized/behaviour/wait_for_action/history"]])
@@ -1767,15 +1702,12 @@ class Modelverse(RuntimeClassBase):
         _initialized_behaviour_operations_2.setGuard(self._initialized_behaviour_operations_2_guard)
         self.states["/initialized/behaviour/operations"].addTransition(_initialized_behaviour_operations_2)
         
-        # 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.setTrigger(None)
-        _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_0.setGuard(self._initialized_behaviour_operations_store_on_scripted_process_execute_enacting_0_guard)
-        self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting"].addTransition(_initialized_behaviour_operations_store_on_scripted_process_execute_enacting_0)
-        _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_1 = 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_1.setTrigger(None)
-        _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_1.setGuard(self._initialized_behaviour_operations_store_on_scripted_process_execute_enacting_1_guard)
-        self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting"].addTransition(_initialized_behaviour_operations_store_on_scripted_process_execute_enacting_1)
+        # transition /initialized/behaviour/operations/store_on_scripted/process_execute
+        _initialized_behaviour_operations_store_on_scripted_process_execute_0 = Transition(self, self.states["/initialized/behaviour/operations/store_on_scripted/process_execute"], [self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/executing"]])
+        _initialized_behaviour_operations_store_on_scripted_process_execute_0.setAction(self._initialized_behaviour_operations_store_on_scripted_process_execute_0_exec)
+        _initialized_behaviour_operations_store_on_scripted_process_execute_0.setTrigger(None)
+        _initialized_behaviour_operations_store_on_scripted_process_execute_0.setGuard(self._initialized_behaviour_operations_store_on_scripted_process_execute_0_guard)
+        self.states["/initialized/behaviour/operations/store_on_scripted/process_execute"].addTransition(_initialized_behaviour_operations_store_on_scripted_process_execute_0)
         
         # transition /initialized/behaviour/wait_for_action
         _initialized_behaviour_wait_for_action_0 = Transition(self, self.states["/initialized/behaviour/wait_for_action"], [self.states["/initialized/behaviour/wait_for_action/history"]])
@@ -2186,11 +2118,11 @@ class Modelverse(RuntimeClassBase):
     def _initialized_behaviour_operations_2_guard(self, parameters):
         return self.expect_response_partial('', pop=False)
     
-    def _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_0_guard(self, parameters):
-        return self.expect_response('Success', pop=True)
+    def _initialized_behaviour_operations_store_on_scripted_process_execute_0_exec(self, parameters):
+        print("RESPONSES: " + self.responses[0])
     
-    def _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_1_guard(self, parameters):
-        return self.expect_response('Failure', pop=True)
+    def _initialized_behaviour_operations_store_on_scripted_process_execute_0_guard(self, parameters):
+        return self.responses
     
     def _initialized_behaviour_wait_for_action_0_exec(self, parameters):
         print("Got unknown operation: " + str(self.actions[None].pop(0)))
@@ -2657,61 +2589,18 @@ class Modelverse(RuntimeClassBase):
         return self.expect_response('Success', pop=True)
     
     def _initialized_behaviour_operations_store_on_scripted_process_execute_executing_0_exec(self, parameters):
-        self.op_name = self.responses.pop(0).split(": ", 1)[1]
+        taskname, operation = self.responses.pop(0).split(" : ")
+        self.raiseInternalEvent(Event("result", None, [[taskname, operation]]))
     
     def _initialized_behaviour_operations_store_on_scripted_process_execute_executing_0_guard(self, parameters):
-        return self.expect_response_partial('Enacting ModelTransformation', pop=False)
+        return self.responses and ' : ' in self.responses[0]
     
     def _initialized_behaviour_operations_store_on_scripted_process_execute_executing_1_exec(self, parameters):
-        self.op_name = self.responses.pop(0).split(": ", 1)[1]
-    
-    def _initialized_behaviour_operations_store_on_scripted_process_execute_executing_1_guard(self, parameters):
-        return self.expect_response_partial('Enacting ActionLanguage', pop=False)
-    
-    def _initialized_behaviour_operations_store_on_scripted_process_execute_executing_2_exec(self, parameters):
-        self.op_name = self.responses.pop(0).split(": ", 1)[1]
-    
-    def _initialized_behaviour_operations_store_on_scripted_process_execute_executing_2_guard(self, parameters):
-        return self.expect_response_partial('Enacting ManualOperation', pop=False)
-    
-    def _initialized_behaviour_operations_store_on_scripted_process_execute_executing_3_exec(self, parameters):
         self.raiseInternalEvent(Event("result", None, ['Finished']))
     
-    def _initialized_behaviour_operations_store_on_scripted_process_execute_executing_3_guard(self, parameters):
+    def _initialized_behaviour_operations_store_on_scripted_process_execute_executing_1_guard(self, parameters):
         return self.expect_response('Success', pop=True)
     
-    def _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_sc_init_0_exec(self, parameters):
-        self.input_context = str(uuid.uuid4())
-        self.inputs[self.input_context] = []
-        self.raiseInternalEvent(Event("result", None, [['SC', self.op_name, self.input_context]]))
-    
-    def _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_sc_processing_0_exec(self, parameters):
-        self.raiseInternalEvent(Event("data_output", None, [self.responses.pop(0)]))
-    
-    def _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_sc_processing_0_guard(self, parameters):
-        return not (self.expect_response('Success', pop=False) or self.expect_response('Failure', pop=False)) and self.expect_response_partial('', pop=False)
-    
-    def _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_sc_processing_1_exec(self, parameters):
-        self.raiseInternalEvent(Event("request", None, [self.inputs[self.input_context].pop(0)['parameters']]))
-    
-    def _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_sc_processing_1_guard(self, parameters):
-        return self.expect_input(self.input_context, 'data_input')
-    
-    def _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_op_0_guard(self, parameters):
-        return self.expect_response_partial('Please perform manual operation ', pop=True)
-    
-    def _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_op_1_exec(self, parameters):
-        model = self.responses.pop(0).split(": ", 1)[1]
-        self.context = str(uuid.uuid4())
-        self.actions[self.context] = []
-        self.raiseInternalEvent(Event("result", None, [['OP', self.op_name, self.context, model]]))
-    
-    def _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_op_1_guard(self, parameters):
-        return self.expect_response_partial('Operating on: ', pop=False)
-    
-    def _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_op_2_guard(self, parameters):
-        return self.expect_response('Model loaded, ready for commands!')
-    
     def _initialized_behaviour_operations_permission_modify_0_exec(self, parameters):
         self.raiseInternalEvent(Event("result", None, [self.responses.pop(0)]))