ソースを参照

Fixes to better support manual operations

Yentl Van Tendeloo 8 年 前
コミット
e892d2c592

+ 5 - 0
unit/test_all.py

@@ -219,14 +219,19 @@ class TestModelverse(unittest.TestCase):
         thrd.start()
         thrd.start()
 
 
         assert transformation_execute_MT("test/print_pn", {"PetriNet": "test/my_pn"}, {}, (ctrl, "inp", "outp")) == True
         assert transformation_execute_MT("test/print_pn", {"PetriNet": "test/my_pn"}, {}, (ctrl, "inp", "outp")) == True
+        print("Joining")
         thrd.join()
         thrd.join()
+        print("Joined")
         assert set(log) == set(['"p1" --> 1',
         assert set(log) == set(['"p1" --> 1',
                                 '"p2" --> 2',
                                 '"p2" --> 2',
                                 '"p3" --> 3'])
                                 '"p3" --> 3'])
 
 
+        print("MAN")
         assert transformation_execute_MANUAL("test/pn_design_to_runtime", {"PetriNet": "test/my_pn"}, {"PetriNet_Runtime": "test/my_pn_RT"}, manual_callback) == True
         assert transformation_execute_MANUAL("test/pn_design_to_runtime", {"PetriNet": "test/my_pn"}, {"PetriNet_Runtime": "test/my_pn_RT"}, manual_callback) == True
+        print("OK")
         assert transformation_execute_AL("test/pn_simulate", {"PetriNet_Runtime": "test/my_pn_RT"}, {"PetriNet_Runtime": "test/my_pn_RT"}) == True
         assert transformation_execute_AL("test/pn_simulate", {"PetriNet_Runtime": "test/my_pn_RT"}, {"PetriNet_Runtime": "test/my_pn_RT"}) == True
         assert transformation_execute_MT("test/pn_runtime_to_design", {"PetriNet_Runtime": "test/my_pn_RT"}, {"PetriNet": "test/my_pn"}) == True
         assert transformation_execute_MT("test/pn_runtime_to_design", {"PetriNet_Runtime": "test/my_pn_RT"}, {"PetriNet": "test/my_pn"}) == True
+        print("MT OK")
 
 
         log = []
         log = []
         ctrl = log_output.Controller(log, keep_running=False)
         ctrl = log_output.Controller(log, keep_running=False)

+ 2 - 3
wrappers/classes/modelverse.xml

@@ -725,9 +725,8 @@
                                         self.inputs[self.input_context] = []
                                         self.inputs[self.input_context] = []
                                         print("Got context")
                                         print("Got context")
                                     </script>
                                     </script>
-
                                     <raise event="result">
                                     <raise event="result">
-                                        <parameter expr="self.input_context"/>
+                                        <parameter expr="['SC', self.parameters[0], self.input_context]"/>
                                     </raise>
                                     </raise>
                                 </transition>
                                 </transition>
                             </state>
                             </state>
@@ -769,7 +768,7 @@
                                         print("Operating on model " + str(model))
                                         print("Operating on model " + str(model))
                                     </script>
                                     </script>
                                     <raise event="result">
                                     <raise event="result">
-                                        <parameter expr="model"/>
+                                        <parameter expr="['OP', self.parameters[0], self.context, model]"/>
                                     </raise>
                                     </raise>
                                 </transition>
                                 </transition>
                                 <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"/>

+ 8 - 3
wrappers/modelverse.py

@@ -173,7 +173,7 @@ def __transformation_execute(operation_name, input_models_dict, output_models_di
         port_sc = statechart[0].addOutputListener(statechart[2])
         port_sc = statechart[0].addOutputListener(statechart[2])
 
 
     INPUT("transformation_execute", None, [operation_name, input_models_dict, output_models_dict, tracability_model, fetch_output])
     INPUT("transformation_execute", None, [operation_name, input_models_dict, output_models_dict, tracability_model, fetch_output])
-    context = OUTPUT()
+    op, name, context = OUTPUT()
     if statechart is not None:
     if statechart is not None:
         while 1:
         while 1:
             empty = True
             empty = True
@@ -211,11 +211,16 @@ def transformation_execute_AL(operation_name, input_models_dict, output_models_d
     return __transformation_execute(operation_name, input_models_dict, output_models_dict, statechart, tracability_model, fetch_output)
     return __transformation_execute(operation_name, input_models_dict, output_models_dict, statechart, tracability_model, fetch_output)
 
 
 def transformation_execute_MANUAL(operation_name, input_models_dict, output_models_dict, callback=None, tracability_model=""):
 def transformation_execute_MANUAL(operation_name, input_models_dict, output_models_dict, callback=None, tracability_model=""):
-    INPUT("transformation_execute_MANUAL", None, [operation_name, input_models_dict, output_models_dict, tracability_model])
-    context = OUTPUT()
+    INPUT("transformation_execute", None, [operation_name, input_models_dict, output_models_dict, tracability_model])
+    print("Wait for context")
+    op, name, context, model = OUTPUT()
+    print("Got context: " + str(context))
     if callback is not None:
     if callback is not None:
         callback(context)
         callback(context)
+        print("Callback complete")
+    print("Send exit")
     INPUT("exit", context, [])
     INPUT("exit", context, [])
+    print("Exitted")
     return OUTPUT()
     return OUTPUT()
 
 
 def transformation_signature(operation_name):
 def transformation_signature(operation_name):

+ 3 - 3
wrappers/modelverse_SCCD.py

@@ -1,7 +1,7 @@
 """
 """
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 Generated by Statechart compiler by Glenn De Jonghe, Joeri Exelmans, Simon Van Mierlo, and Yentl Van Tendeloo (for the inspiration)
 
 
-Date:   Wed Nov  8 09:22:09 2017
+Date:   Wed Nov  8 10:08:42 2017
 
 
 Model author: Yentl Van Tendeloo
 Model author: Yentl Van Tendeloo
 Model name:   MvK Server
 Model name:   MvK Server
@@ -2656,7 +2656,7 @@ class Modelverse(RuntimeClassBase):
         self.input_context = str(uuid.uuid4())
         self.input_context = str(uuid.uuid4())
         self.inputs[self.input_context] = []
         self.inputs[self.input_context] = []
         print("Got context")
         print("Got context")
-        self.raiseInternalEvent(Event("result", None, [self.input_context]))
+        self.raiseInternalEvent(Event("result", None, [['SC', self.parameters[0], self.input_context]]))
     
     
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_send_operation_1_guard(self, parameters):
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_send_operation_1_guard(self, parameters):
         return self.expect_response('Success: ready for AL execution', pop=True) or self.expect_response('Success: ready for MT execution', pop=True)
         return self.expect_response('Success: ready for AL execution', pop=True) or self.expect_response('Success: ready for MT execution', pop=True)
@@ -2688,7 +2688,7 @@ class Modelverse(RuntimeClassBase):
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_edit_model_1_exec(self, parameters):
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_edit_model_1_exec(self, parameters):
         model = self.responses.pop(0).split(": ", 1)[1]
         model = self.responses.pop(0).split(": ", 1)[1]
         print("Operating on model " + str(model))
         print("Operating on model " + str(model))
-        self.raiseInternalEvent(Event("result", None, [model]))
+        self.raiseInternalEvent(Event("result", None, [['OP', self.parameters[0], self.context, model]]))
     
     
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_edit_model_1_guard(self, parameters):
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_edit_model_1_guard(self, parameters):
         return self.expect_response_partial('Operating on: ', pop=False)
         return self.expect_response_partial('Operating on: ', pop=False)