Browse Source

Fix operations

Yentl Van Tendeloo 8 years ago
parent
commit
7edeaf4218
4 changed files with 166 additions and 52 deletions
  1. 2 2
      unit/test_all.py
  2. 41 18
      wrappers/classes/modelverse.xml
  3. 70 6
      wrappers/modelverse.py
  4. 53 26
      wrappers/modelverse_SCCD.py

+ 2 - 2
unit/test_all.py

@@ -215,7 +215,7 @@ class TestModelverse(unittest.TestCase):
         thrd.daemon = True
         thrd.daemon = True
         thrd.start()
         thrd.start()
 
 
-        assert transformation_execute_MT("test/print_pn", {"PetriNet": "test/my_pn"}, {}, (ctrl, "inp", "outp")) == None
+        assert transformation_execute_MT("test/print_pn", {"PetriNet": "test/my_pn"}, {}, (ctrl, "inp", "outp")) == True
         thrd.join()
         thrd.join()
         assert set(log) == set(['"p1" --> 1',
         assert set(log) == set(['"p1" --> 1',
                                 '"p2" --> 2',
                                 '"p2" --> 2',
@@ -231,7 +231,7 @@ class TestModelverse(unittest.TestCase):
         thrd.daemon = True
         thrd.daemon = True
         thrd.start()
         thrd.start()
 
 
-        assert transformation_execute_MT("test/print_pn", {"PetriNet": "test/my_pn"}, {}, (ctrl, "inp", "outp")) == None
+        assert transformation_execute_MT("test/print_pn", {"PetriNet": "test/my_pn"}, {}, (ctrl, "inp", "outp")) == True
         thrd.join()
         thrd.join()
         assert set(log) == set(['"p1" --> 0',
         assert set(log) == set(['"p1" --> 0',
                                 '"p2" --> 1',
                                 '"p2" --> 1',

+ 41 - 18
wrappers/classes/modelverse.xml

@@ -79,6 +79,20 @@
         </body>
         </body>
     </method>
     </method>
 
 
+    <method name="expect_input">
+        <parameter name="context"/>
+        <parameter name="expected"/>
+        <body>
+            #print("Expected action: " + str(expected))
+            #print("Context: " + str(context))
+            #print("Actions: " + str(self.actions[context]))
+            if isinstance(expected, list):
+                return self.inputs[context] and self.inputs[context][0]["name"] in expected
+            else:
+                return self.inputs[context] and self.inputs[context][0]["name"] == expected
+        </body>
+    </method>
+
     <constructor>
     <constructor>
         <body>
         <body>
             self.actions = {None: []}
             self.actions = {None: []}
@@ -86,6 +100,7 @@
             self.http_clients = []
             self.http_clients = []
             self.context = None
             self.context = None
             self.registered_metamodel = {}
             self.registered_metamodel = {}
+            self.inputs = {}
         </body>
         </body>
     </constructor>
     </constructor>
 
 
@@ -598,12 +613,12 @@
 
 
                                 <transition cond="self.expect_response('Success: ready for AL execution')" target="../dialog">
                                 <transition cond="self.expect_response('Success: ready for AL execution')" target="../dialog">
                                     <script>
                                     <script>
-                                        self.context = str(uuid.uuid4())
-                                        self.actions[self.context] = []
+                                        self.input_context = str(uuid.uuid4())
+                                        self.inputs[self.input_context] = []
                                     </script>
                                     </script>
 
 
                                     <raise event="result">
                                     <raise event="result">
-                                        <parameter expr="self.context"/>
+                                        <parameter expr="self.input_context"/>
                                     </raise>
                                     </raise>
                                 </transition>
                                 </transition>
                             </state>
                             </state>
@@ -611,19 +626,19 @@
                             <state id="dialog">
                             <state id="dialog">
                                 <transition cond="self.expect_response('Success', pop=False) or self.expect_response('Failure', pop=False)" target="../../../../wait_for_action/history">
                                 <transition cond="self.expect_response('Success', pop=False) or self.expect_response('Failure', pop=False)" target="../../../../wait_for_action/history">
                                     <raise event="result">
                                     <raise event="result">
-                                        <parameter expr="self.responses.pop(0)"/>
+                                        <parameter expr="True if self.responses.pop(0) == 'Success' else False"/>
                                     </raise>
                                     </raise>
                                 </transition>
                                 </transition>
 
 
                                 <transition cond="not (self.expect_response('Success', pop=False) or self.expect_response('Failure', pop=False)) and self.expect_response_partial('', pop=False)" target=".">
                                 <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="result">
+                                    <raise event="data_output">
                                         <parameter expr="self.responses.pop(0)"/>
                                         <parameter expr="self.responses.pop(0)"/>
                                     </raise>
                                     </raise>
                                 </transition>
                                 </transition>
 
 
-                                <transition cond="self.expect_action(self.context, 'data_input')" target=".">
+                                <transition cond="self.expect_input(self.input_context, 'data_input')" target=".">
                                     <raise event="request">
                                     <raise event="request">
-                                        <parameter expr="self.actions[self.context].pop(0)['parameters']"/>
+                                        <parameter expr="self.inputs[self.input_context].pop(0)['parameters']"/>
                                     </raise>
                                     </raise>
                                 </transition>
                                 </transition>
                             </state>
                             </state>
@@ -639,12 +654,12 @@
 
 
                                 <transition cond="self.expect_response('Success: ready for MT execution')" target="../dialog">
                                 <transition cond="self.expect_response('Success: ready for MT execution')" target="../dialog">
                                     <script>
                                     <script>
-                                        self.context = str(uuid.uuid4())
-                                        self.actions[self.context] = []
+                                        self.input_context = str(uuid.uuid4())
+                                        self.inputs[self.input_context] = []
                                     </script>
                                     </script>
 
 
                                     <raise event="result">
                                     <raise event="result">
-                                        <parameter expr="self.context"/>
+                                        <parameter expr="self.input_context"/>
                                     </raise>
                                     </raise>
                                 </transition>
                                 </transition>
                             </state>
                             </state>
@@ -652,19 +667,19 @@
                             <state id="dialog">
                             <state id="dialog">
                                 <transition cond="self.expect_response('Success', pop=False) or self.expect_response('Failure', pop=False)" target="../../../../wait_for_action/history">
                                 <transition cond="self.expect_response('Success', pop=False) or self.expect_response('Failure', pop=False)" target="../../../../wait_for_action/history">
                                     <raise event="result">
                                     <raise event="result">
-                                        <parameter expr="self.responses.pop(0)"/>
+                                        <parameter expr="True if self.responses.pop(0) == 'Success' else False"/>
                                     </raise>
                                     </raise>
                                 </transition>
                                 </transition>
 
 
                                 <transition cond="not (self.expect_response('Success', pop=False) or self.expect_response('Failure', pop=False)) and self.expect_response_partial('', pop=False)" target=".">
                                 <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="result">
+                                    <raise event="data_output">
                                         <parameter expr="self.responses.pop(0)"/>
                                         <parameter expr="self.responses.pop(0)"/>
                                     </raise>
                                     </raise>
                                 </transition>
                                 </transition>
 
 
-                                <transition cond="self.expect_action(self.context, 'data_input')" target=".">
+                                <transition cond="self.expect_input(self.input_context, 'data_input')" target=".">
                                     <raise event="request">
                                     <raise event="request">
-                                        <parameter expr="self.actions[self.context].pop(0)['parameters']"/>
+                                        <parameter expr="self.inputs[self.input_context].pop(0)['parameters']"/>
                                     </raise>
                                     </raise>
                                 </transition>
                                 </transition>
                             </state>
                             </state>
@@ -692,10 +707,11 @@
                             </state>
                             </state>
 
 
                             <state id="edit_model">
                             <state id="edit_model">
+                                <transition cond="self.expect_response_partial('Please perform manual operation ', pop=True)" target="."/>
                                 <transition cond="self.expect_response('Model loaded, ready for commands!')" target="../../../../going_scripted"/>
                                 <transition cond="self.expect_response('Model loaded, ready for commands!')" target="../../../../going_scripted"/>
                                 <transition cond="self.expect_response('Success')" target="../../../../wait_for_action/megamodelling">
                                 <transition cond="self.expect_response('Success')" target="../../../../wait_for_action/megamodelling">
                                     <raise event="result">
                                     <raise event="result">
-                                        <parameter expr="None"/>
+                                        <parameter expr="True"/>
                                     </raise>
                                     </raise>
                                 </transition>
                                 </transition>
                             </state>
                             </state>
@@ -1080,7 +1096,7 @@
                     <state id="attr_assign">
                     <state id="attr_assign">
                         <onentry>
                         <onentry>
                             <raise event="request">
                             <raise event="request">
-                                <parameter expr="['attr_assign', self.parameters[1], self.parameters[2], self.parameters[3]]"/>
+                                <parameter expr="['attr_add', self.parameters[1], self.parameters[2], self.parameters[3]]"/>
                             </raise>
                             </raise>
                         </onentry>
                         </onentry>
 
 
@@ -1094,7 +1110,7 @@
                     <state id="attr_assign_code">
                     <state id="attr_assign_code">
                         <onentry>
                         <onentry>
                             <raise event="request">
                             <raise event="request">
-                                <parameter expr="['attr_assign_code', self.parameters[1], self.parameters[2], self.parameters[3]]"/>
+                                <parameter expr="['attr_add_code', self.parameters[1], self.parameters[2], self.parameters[3]]"/>
                             </raise>
                             </raise>
                         </onentry>
                         </onentry>
 
 
@@ -1717,6 +1733,13 @@
                         </raise>
                         </raise>
                     </transition>
                     </transition>
 
 
+                    <transition event="data_output" target=".">
+                        <parameter name="parameters"/>
+                        <raise scope="output" event="data_output" port="action_out">
+                            <parameter expr="parameters"/>
+                        </raise>
+                    </transition>
+
                     <transition event="exception" target=".">
                     <transition event="exception" target=".">
                         <parameter name="parameters"/>
                         <parameter name="parameters"/>
                         <raise scope="output" event="exception" port="action_out">
                         <raise scope="output" event="exception" port="action_out">
@@ -1725,7 +1748,7 @@
                         </raise>
                         </raise>
                     </transition>
                     </transition>
 
 
-                    <transition port="input_in" event="input" target=".">
+                    <transition port="action_in" event="data_input" target=".">
                         <parameter name="value"/>
                         <parameter name="value"/>
                         <parameter name="context_ID"/>
                         <parameter name="context_ID"/>
                         <script>
                         <script>

+ 70 - 6
wrappers/modelverse.py

@@ -1,6 +1,7 @@
 from sccd.runtime.statecharts_core import Event
 from sccd.runtime.statecharts_core import Event
 import sccd.runtime.socket2event as socket2event
 import sccd.runtime.socket2event as socket2event
 import modelverse_SCCD
 import modelverse_SCCD
+import time
 
 
 controller = modelverse_SCCD.Controller()
 controller = modelverse_SCCD.Controller()
 socket2event.boot_translation_service(controller)
 socket2event.boot_translation_service(controller)
@@ -153,15 +154,78 @@ 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):
-    #NOTE callbacks as statechart not supported (yet?)!
+def transformation_execute_MT(operation_name, input_models_dict, output_models_dict, statechart=None):
+    if statechart is not None:
+        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])
-    return OUTPUT()
+    context = OUTPUT()
+    if statechart is not None:
+        while 1:
+            empty = True
+
+            # Fetch output from the MV
+            response = responses.fetch(0)
+            if response is not None:
+                print("Got response from MV: " + str(response))
+                if response.name == "data_output":
+                    # Got output of MV, so forward to SCCD
+                    statechart[0].addInput(Event("input", statechart[1], response.parameters))
+                elif response.name == "result":
+                    # Finished execution, so continue and return result
+                    statechart[0].addInput(Event("terminate", statechart[1], []))
+                    return response.parameters[1]
+                empty = False
+
+            # Fetch output from the SC
+            response = port_sc.fetch(0)
+            if response is not None:
+                print("Got response from SC: " + str(response))
+                if response.name == "output":
+                    controller.addInput(Event("data_input", "action_in", [response.parameters, context]))
+                empty = False
+
+            if empty:
+                time.sleep(0.01)
+    else:
+        return OUTPUT()
+
+def transformation_execute_AL(operation_name, input_models_dict, output_models_dict, statechart=None):
+    if statechart is not None:
+        port_sc = statechart[0].addOutputListener(statechart[2])
 
 
-def transformation_execute_AL(operation_name, input_models_dict, output_models_dict):
-    #NOTE callbacks as statechart not supported (yet?)!
     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])
-    return OUTPUT()
+
+    context = OUTPUT()
+    if statechart is not None:
+        while 1:
+            empty = True
+
+            # Fetch output from the MV
+            response = responses.fetch(0)
+            if response is not None:
+                print("Got response from MV: " + str(response))
+                if response.name == "data_output":
+                    # Got output of MV, so forward to SCCD
+                    statechart[0].addInput(Event("input", statechart[1], response.parameters))
+                elif response.name == "result":
+                    # Finished execution, so continue and return result
+                    statechart[0].addInput(Event("terminate", statechart[1], []))
+                    return response.parameters[1]
+                empty = False
+
+            # Fetch output from the SC
+            response = port_sc.fetch(0)
+            if response is not None:
+                print("Got response from SC: " + str(response))
+                if response.name == "output":
+                    controller.addInput(Event("data_input", "action_in", [response.parameters, context]))
+                empty = False
+
+            if empty:
+                time.sleep(0.01)
+    else:
+        return OUTPUT()
 
 
 def transformation_execute_MANUAL(operation_name, input_models_dict, output_models_dict, callback=None):
 def transformation_execute_MANUAL(operation_name, input_models_dict, output_models_dict, callback=None):
     INPUT("transformation_execute_MANUAL", None, [operation_name, input_models_dict, output_models_dict])
     INPUT("transformation_execute_MANUAL", None, [operation_name, input_models_dict, output_models_dict])

+ 53 - 26
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:   Tue Sep  5 15:10:46 2017
+Date:   Tue Sep  5 16:28:07 2017
 
 
 Model author: Yentl Van Tendeloo
 Model author: Yentl Van Tendeloo
 Model name:   MvK Server
 Model name:   MvK Server
@@ -43,6 +43,7 @@ class Modelverse(RuntimeClassBase):
         self.http_clients = []
         self.http_clients = []
         self.context = None
         self.context = None
         self.registered_metamodel = {}
         self.registered_metamodel = {}
+        self.inputs = {}
     
     
     def user_defined_destructor(self):
     def user_defined_destructor(self):
         pass
         pass
@@ -111,6 +112,17 @@ class Modelverse(RuntimeClassBase):
             return self.actions[context] and self.actions[context][0]["name"] == expected
             return self.actions[context] and self.actions[context][0]["name"] == expected
     
     
     
     
+    # user defined method
+    def expect_input(self, context, expected):
+        #print("Expected action: " + str(expected))
+        #print("Context: " + str(context))
+        #print("Actions: " + str(self.actions[context]))
+        if isinstance(expected, list):
+            return self.inputs[context] and self.inputs[context][0]["name"] in expected
+        else:
+            return self.inputs[context] and self.inputs[context][0]["name"] == expected
+    
+    
     # builds Statechart structure
     # builds Statechart structure
     def build_statechart_structure(self):
     def build_statechart_structure(self):
         
         
@@ -928,15 +940,19 @@ class Modelverse(RuntimeClassBase):
         self.states["/initialized/behaviour/operations/store_on_scripted/transformation_execute_MANUAL/send_metadata"].addTransition(_initialized_behaviour_operations_store_on_scripted_transformation_execute_MANUAL_send_metadata_0)
         self.states["/initialized/behaviour/operations/store_on_scripted/transformation_execute_MANUAL/send_metadata"].addTransition(_initialized_behaviour_operations_store_on_scripted_transformation_execute_MANUAL_send_metadata_0)
         
         
         # transition /initialized/behaviour/operations/store_on_scripted/transformation_execute_MANUAL/edit_model
         # transition /initialized/behaviour/operations/store_on_scripted/transformation_execute_MANUAL/edit_model
-        _initialized_behaviour_operations_store_on_scripted_transformation_execute_MANUAL_edit_model_0 = Transition(self, self.states["/initialized/behaviour/operations/store_on_scripted/transformation_execute_MANUAL/edit_model"], [self.states["/initialized/behaviour/going_scripted"]])
+        _initialized_behaviour_operations_store_on_scripted_transformation_execute_MANUAL_edit_model_0 = Transition(self, self.states["/initialized/behaviour/operations/store_on_scripted/transformation_execute_MANUAL/edit_model"], [self.states["/initialized/behaviour/operations/store_on_scripted/transformation_execute_MANUAL/edit_model"]])
         _initialized_behaviour_operations_store_on_scripted_transformation_execute_MANUAL_edit_model_0.setTrigger(None)
         _initialized_behaviour_operations_store_on_scripted_transformation_execute_MANUAL_edit_model_0.setTrigger(None)
         _initialized_behaviour_operations_store_on_scripted_transformation_execute_MANUAL_edit_model_0.setGuard(self._initialized_behaviour_operations_store_on_scripted_transformation_execute_MANUAL_edit_model_0_guard)
         _initialized_behaviour_operations_store_on_scripted_transformation_execute_MANUAL_edit_model_0.setGuard(self._initialized_behaviour_operations_store_on_scripted_transformation_execute_MANUAL_edit_model_0_guard)
         self.states["/initialized/behaviour/operations/store_on_scripted/transformation_execute_MANUAL/edit_model"].addTransition(_initialized_behaviour_operations_store_on_scripted_transformation_execute_MANUAL_edit_model_0)
         self.states["/initialized/behaviour/operations/store_on_scripted/transformation_execute_MANUAL/edit_model"].addTransition(_initialized_behaviour_operations_store_on_scripted_transformation_execute_MANUAL_edit_model_0)
-        _initialized_behaviour_operations_store_on_scripted_transformation_execute_MANUAL_edit_model_1 = Transition(self, self.states["/initialized/behaviour/operations/store_on_scripted/transformation_execute_MANUAL/edit_model"], [self.states["/initialized/behaviour/wait_for_action/megamodelling"]])
-        _initialized_behaviour_operations_store_on_scripted_transformation_execute_MANUAL_edit_model_1.setAction(self._initialized_behaviour_operations_store_on_scripted_transformation_execute_MANUAL_edit_model_1_exec)
+        _initialized_behaviour_operations_store_on_scripted_transformation_execute_MANUAL_edit_model_1 = Transition(self, self.states["/initialized/behaviour/operations/store_on_scripted/transformation_execute_MANUAL/edit_model"], [self.states["/initialized/behaviour/going_scripted"]])
         _initialized_behaviour_operations_store_on_scripted_transformation_execute_MANUAL_edit_model_1.setTrigger(None)
         _initialized_behaviour_operations_store_on_scripted_transformation_execute_MANUAL_edit_model_1.setTrigger(None)
         _initialized_behaviour_operations_store_on_scripted_transformation_execute_MANUAL_edit_model_1.setGuard(self._initialized_behaviour_operations_store_on_scripted_transformation_execute_MANUAL_edit_model_1_guard)
         _initialized_behaviour_operations_store_on_scripted_transformation_execute_MANUAL_edit_model_1.setGuard(self._initialized_behaviour_operations_store_on_scripted_transformation_execute_MANUAL_edit_model_1_guard)
         self.states["/initialized/behaviour/operations/store_on_scripted/transformation_execute_MANUAL/edit_model"].addTransition(_initialized_behaviour_operations_store_on_scripted_transformation_execute_MANUAL_edit_model_1)
         self.states["/initialized/behaviour/operations/store_on_scripted/transformation_execute_MANUAL/edit_model"].addTransition(_initialized_behaviour_operations_store_on_scripted_transformation_execute_MANUAL_edit_model_1)
+        _initialized_behaviour_operations_store_on_scripted_transformation_execute_MANUAL_edit_model_2 = Transition(self, self.states["/initialized/behaviour/operations/store_on_scripted/transformation_execute_MANUAL/edit_model"], [self.states["/initialized/behaviour/wait_for_action/megamodelling"]])
+        _initialized_behaviour_operations_store_on_scripted_transformation_execute_MANUAL_edit_model_2.setAction(self._initialized_behaviour_operations_store_on_scripted_transformation_execute_MANUAL_edit_model_2_exec)
+        _initialized_behaviour_operations_store_on_scripted_transformation_execute_MANUAL_edit_model_2.setTrigger(None)
+        _initialized_behaviour_operations_store_on_scripted_transformation_execute_MANUAL_edit_model_2.setGuard(self._initialized_behaviour_operations_store_on_scripted_transformation_execute_MANUAL_edit_model_2_guard)
+        self.states["/initialized/behaviour/operations/store_on_scripted/transformation_execute_MANUAL/edit_model"].addTransition(_initialized_behaviour_operations_store_on_scripted_transformation_execute_MANUAL_edit_model_2)
         
         
         # transition /initialized/behaviour/operations/permission_modify
         # 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"]])
         _initialized_behaviour_operations_permission_modify_0 = Transition(self, self.states["/initialized/behaviour/operations/permission_modify"], [self.states["/initialized/behaviour/wait_for_action/history"]])
@@ -1429,12 +1445,16 @@ class Modelverse(RuntimeClassBase):
         self.states["/initialized/queue/queue"].addTransition(_initialized_queue_queue_1)
         self.states["/initialized/queue/queue"].addTransition(_initialized_queue_queue_1)
         _initialized_queue_queue_2 = Transition(self, self.states["/initialized/queue/queue"], [self.states["/initialized/queue/queue"]])
         _initialized_queue_queue_2 = Transition(self, self.states["/initialized/queue/queue"], [self.states["/initialized/queue/queue"]])
         _initialized_queue_queue_2.setAction(self._initialized_queue_queue_2_exec)
         _initialized_queue_queue_2.setAction(self._initialized_queue_queue_2_exec)
-        _initialized_queue_queue_2.setTrigger(Event("exception", None))
+        _initialized_queue_queue_2.setTrigger(Event("data_output", None))
         self.states["/initialized/queue/queue"].addTransition(_initialized_queue_queue_2)
         self.states["/initialized/queue/queue"].addTransition(_initialized_queue_queue_2)
         _initialized_queue_queue_3 = Transition(self, self.states["/initialized/queue/queue"], [self.states["/initialized/queue/queue"]])
         _initialized_queue_queue_3 = Transition(self, self.states["/initialized/queue/queue"], [self.states["/initialized/queue/queue"]])
         _initialized_queue_queue_3.setAction(self._initialized_queue_queue_3_exec)
         _initialized_queue_queue_3.setAction(self._initialized_queue_queue_3_exec)
-        _initialized_queue_queue_3.setTrigger(Event("input", "input_in"))
+        _initialized_queue_queue_3.setTrigger(Event("exception", None))
         self.states["/initialized/queue/queue"].addTransition(_initialized_queue_queue_3)
         self.states["/initialized/queue/queue"].addTransition(_initialized_queue_queue_3)
+        _initialized_queue_queue_4 = Transition(self, self.states["/initialized/queue/queue"], [self.states["/initialized/queue/queue"]])
+        _initialized_queue_queue_4.setAction(self._initialized_queue_queue_4_exec)
+        _initialized_queue_queue_4.setTrigger(Event("data_input", "action_in"))
+        self.states["/initialized/queue/queue"].addTransition(_initialized_queue_queue_4)
         
         
         # transition /initialized/behaviour/operations
         # transition /initialized/behaviour/operations
         _initialized_behaviour_operations_0 = Transition(self, self.states["/initialized/behaviour/operations"], [self.states["/initialized/behaviour/wait_for_action/history"]])
         _initialized_behaviour_operations_0 = Transition(self, self.states["/initialized/behaviour/operations"], [self.states["/initialized/behaviour/wait_for_action/history"]])
@@ -1728,10 +1748,10 @@ class Modelverse(RuntimeClassBase):
         self.raiseInternalEvent(Event("request", None, [['delete_element', self.parameters[1]]]))
         self.raiseInternalEvent(Event("request", None, [['delete_element', 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_assign', 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]]]))
     
     
     def _initialized_behaviour_operations_attr_assign_code_enter(self):
     def _initialized_behaviour_operations_attr_assign_code_enter(self):
-        self.raiseInternalEvent(Event("request", None, [['attr_assign_code', self.parameters[1], self.parameters[2], self.parameters[3]]]))
+        self.raiseInternalEvent(Event("request", None, [['attr_add_code', self.parameters[1], self.parameters[2], self.parameters[3]]]))
     
     
     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]]]))
@@ -2123,67 +2143,70 @@ class Modelverse(RuntimeClassBase):
         return self.expect_response('Success')
         return self.expect_response('Success')
     
     
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_AL_send_operation_0_exec(self, parameters):
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_AL_send_operation_0_exec(self, parameters):
-        self.context = str(uuid.uuid4())
-        self.actions[self.context] = []
-        self.raiseInternalEvent(Event("result", None, [self.context]))
+        self.input_context = str(uuid.uuid4())
+        self.inputs[self.input_context] = []
+        self.raiseInternalEvent(Event("result", None, [self.input_context]))
     
     
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_AL_send_operation_0_guard(self, parameters):
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_AL_send_operation_0_guard(self, parameters):
         return self.expect_response('Success: ready for AL execution')
         return self.expect_response('Success: ready for AL execution')
     
     
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_AL_dialog_0_exec(self, parameters):
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_AL_dialog_0_exec(self, parameters):
-        self.raiseInternalEvent(Event("result", None, [self.responses.pop(0)]))
+        self.raiseInternalEvent(Event("result", None, [True if self.responses.pop(0) == 'Success' else False]))
     
     
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_AL_dialog_0_guard(self, parameters):
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_AL_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)
     
     
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_AL_dialog_1_exec(self, parameters):
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_AL_dialog_1_exec(self, parameters):
-        self.raiseInternalEvent(Event("result", None, [self.responses.pop(0)]))
+        self.raiseInternalEvent(Event("data_output", None, [self.responses.pop(0)]))
     
     
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_AL_dialog_1_guard(self, parameters):
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_AL_dialog_1_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)
         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_transformation_execute_AL_dialog_2_exec(self, parameters):
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_AL_dialog_2_exec(self, parameters):
-        self.raiseInternalEvent(Event("request", None, [self.actions[self.context].pop(0)['parameters']]))
+        self.raiseInternalEvent(Event("request", None, [self.inputs[self.input_context].pop(0)['parameters']]))
     
     
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_AL_dialog_2_guard(self, parameters):
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_AL_dialog_2_guard(self, parameters):
-        return self.expect_action(self.context, 'data_input')
+        return self.expect_input(self.input_context, 'data_input')
     
     
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_MT_send_operation_0_exec(self, parameters):
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_MT_send_operation_0_exec(self, parameters):
-        self.context = str(uuid.uuid4())
-        self.actions[self.context] = []
-        self.raiseInternalEvent(Event("result", None, [self.context]))
+        self.input_context = str(uuid.uuid4())
+        self.inputs[self.input_context] = []
+        self.raiseInternalEvent(Event("result", None, [self.input_context]))
     
     
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_MT_send_operation_0_guard(self, parameters):
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_MT_send_operation_0_guard(self, parameters):
         return self.expect_response('Success: ready for MT execution')
         return self.expect_response('Success: ready for MT execution')
     
     
     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, [self.responses.pop(0)]))
+        self.raiseInternalEvent(Event("result", None, [True if self.responses.pop(0) == 'Success' else False]))
     
     
     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)
     
     
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_MT_dialog_1_exec(self, parameters):
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_MT_dialog_1_exec(self, parameters):
-        self.raiseInternalEvent(Event("result", None, [self.responses.pop(0)]))
+        self.raiseInternalEvent(Event("data_output", None, [self.responses.pop(0)]))
     
     
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_MT_dialog_1_guard(self, parameters):
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_MT_dialog_1_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)
         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_transformation_execute_MT_dialog_2_exec(self, parameters):
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_MT_dialog_2_exec(self, parameters):
-        self.raiseInternalEvent(Event("request", None, [self.actions[self.context].pop(0)['parameters']]))
+        self.raiseInternalEvent(Event("request", None, [self.inputs[self.input_context].pop(0)['parameters']]))
     
     
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_MT_dialog_2_guard(self, parameters):
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_MT_dialog_2_guard(self, parameters):
-        return self.expect_action(self.context, 'data_input')
+        return self.expect_input(self.input_context, 'data_input')
     
     
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_MANUAL_send_metadata_0_guard(self, parameters):
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_MANUAL_send_metadata_0_guard(self, parameters):
         return self.expect_response('Success: ready for MANUAL execution')
         return self.expect_response('Success: ready for MANUAL execution')
     
     
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_MANUAL_edit_model_0_guard(self, parameters):
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_MANUAL_edit_model_0_guard(self, parameters):
+        return self.expect_response_partial('Please perform manual operation ', pop=True)
+    
+    def _initialized_behaviour_operations_store_on_scripted_transformation_execute_MANUAL_edit_model_1_guard(self, parameters):
         return self.expect_response('Model loaded, ready for commands!')
         return self.expect_response('Model loaded, ready for commands!')
     
     
-    def _initialized_behaviour_operations_store_on_scripted_transformation_execute_MANUAL_edit_model_1_exec(self, parameters):
-        self.raiseInternalEvent(Event("result", None, [None]))
+    def _initialized_behaviour_operations_store_on_scripted_transformation_execute_MANUAL_edit_model_2_exec(self, parameters):
+        self.raiseInternalEvent(Event("result", None, [True]))
     
     
-    def _initialized_behaviour_operations_store_on_scripted_transformation_execute_MANUAL_edit_model_1_guard(self, parameters):
+    def _initialized_behaviour_operations_store_on_scripted_transformation_execute_MANUAL_edit_model_2_guard(self, parameters):
         return self.expect_response('Success')
         return self.expect_response('Success')
     
     
     def _initialized_behaviour_operations_permission_modify_0_exec(self, parameters):
     def _initialized_behaviour_operations_permission_modify_0_exec(self, parameters):
@@ -2678,9 +2701,13 @@ class Modelverse(RuntimeClassBase):
     
     
     def _initialized_queue_queue_2_exec(self, parameters):
     def _initialized_queue_queue_2_exec(self, parameters):
         parameters = parameters[0]
         parameters = parameters[0]
-        self.big_step.outputEvent(Event("exception", "action_out", [self.current_ID, parameters]))
+        self.big_step.outputEvent(Event("data_output", "action_out", [parameters]))
     
     
     def _initialized_queue_queue_3_exec(self, parameters):
     def _initialized_queue_queue_3_exec(self, parameters):
+        parameters = parameters[0]
+        self.big_step.outputEvent(Event("exception", "action_out", [self.current_ID, parameters]))
+    
+    def _initialized_queue_queue_4_exec(self, parameters):
         value = parameters[0]
         value = parameters[0]
         context_ID = parameters[1]
         context_ID = parameters[1]
         self.inputs[context_ID].append(value)
         self.inputs[context_ID].append(value)