Преглед на файлове

Fixed execution of operations

Yentl Van Tendeloo преди 7 години
родител
ревизия
928b0da9c1
променени са 3 файла, в които са добавени 20 реда и са изтрити 24 реда
  1. 2 2
      unit/test_all.py
  2. 10 7
      wrappers/classes/modelverse.xml
  3. 8 15
      wrappers/modelverse_SCCD.py

+ 2 - 2
unit/test_all.py

@@ -274,8 +274,8 @@ class TestModelverse(unittest.TestCase):
         process_execute("test/pn_reachability", "", {"test/refine_PN": callback_refine_PN, "test/reachability_print": (ctrl, "inp", "outp")})
         process_execute("test/pn_reachability", "", {"test/refine_PN": callback_refine_PN, "test/reachability_print": (ctrl, "inp", "outp")})
         thrd.join()
         thrd.join()
 
 
-        assert set(log) == set(['"0": {"p1": 1, }',
-                                '"1": {"p1": 0, }',
+        assert set(log) == set(['"0": {"p1": 1}',
+                                '"1": {"p1": 0}',
                                 '"0" --["t1"]--> "1"'])
                                 '"0" --["t1"]--> "1"'])
 
 
         model_delete("RAMified")
         model_delete("RAMified")

+ 10 - 7
wrappers/classes/modelverse.xml

@@ -91,6 +91,7 @@
             self.context = None
             self.context = None
             self.registered_metamodel = {}
             self.registered_metamodel = {}
             self.inputs = {}
             self.inputs = {}
+            self.catch_all = True
         </body>
         </body>
     </constructor>
     </constructor>
 
 
@@ -557,12 +558,6 @@
                                     </raise>
                                     </raise>
                                 </transition>
                                 </transition>
                             </state>
                             </state>
-
-                            <transition cond="self.expect_response_partial('', pop=False)" target="../../../wait_for_action/history">
-                                <script>
-                                    print("UNKNOWN RESPONSE received: " + str(self.responses.pop(0)))
-                                </script>
-                            </transition>
                         </state>
                         </state>
 
 
                         <state id="transformation_add_AL" initial="send_metadata">
                         <state id="transformation_add_AL" initial="send_metadata">
@@ -776,6 +771,11 @@
                             </state>
                             </state>
 
 
                             <state id="enacting" initial="sc">
                             <state id="enacting" initial="sc">
+                                <onentry>
+                                    <script>
+                                        self.catch_all = False
+                                    </script>
+                                </onentry>
                                 <state id="sc" initial="init">
                                 <state id="sc" initial="init">
                                     <state id="init">
                                     <state id="init">
                                         <transition target="../processing">
                                         <transition target="../processing">
@@ -1371,7 +1371,10 @@
                         </script>
                         </script>
                     </transition>
                     </transition>
 
 
-                    <transition cond="self.expect_response_partial('', pop=False)" target="../wait_for_action/history">
+                    <transition cond="self.catch_all and self.expect_response_partial('', pop=False)" target="../wait_for_action/history">
+                        <script>
+                            print("UNKNOWN ERROR: " + self.responses[0])
+                        </script>
                         <raise event="exception">
                         <raise event="exception">
                             <parameter expr="'UnknownError'"/>
                             <parameter expr="'UnknownError'"/>
                             <parameter expr="'Error: %s' % self.responses.pop(0)"/>
                             <parameter expr="'Error: %s' % self.responses.pop(0)"/>

+ 8 - 15
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 Oct  3 09:37:08 2017
+Date:   Wed Oct  4 16:24:29 2017
 
 
 Model author: Yentl Van Tendeloo
 Model author: Yentl Van Tendeloo
 Model name:   MvK Server
 Model name:   MvK Server
@@ -44,6 +44,7 @@ class Modelverse(RuntimeClassBase):
         self.context = None
         self.context = None
         self.registered_metamodel = {}
         self.registered_metamodel = {}
         self.inputs = {}
         self.inputs = {}
+        self.catch_all = True
     
     
     def user_defined_destructor(self):
     def user_defined_destructor(self):
         pass
         pass
@@ -331,6 +332,7 @@ class Modelverse(RuntimeClassBase):
         
         
         # state /initialized/behaviour/operations/store_on_scripted/process_execute/enacting
         # state /initialized/behaviour/operations/store_on_scripted/process_execute/enacting
         self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting"] = State(62, "/initialized/behaviour/operations/store_on_scripted/process_execute/enacting", self)
         self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting"] = State(62, "/initialized/behaviour/operations/store_on_scripted/process_execute/enacting", self)
+        self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting"].setEnter(self._initialized_behaviour_operations_store_on_scripted_process_execute_enacting_enter)
         
         
         # state /initialized/behaviour/operations/store_on_scripted/process_execute/enacting/sc
         # state /initialized/behaviour/operations/store_on_scripted/process_execute/enacting/sc
         self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/sc"] = State(63, "/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/sc", self)
         self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/sc"] = State(63, "/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/sc", self)
@@ -1635,13 +1637,6 @@ class Modelverse(RuntimeClassBase):
         _initialized_behaviour_operations_2.setGuard(self._initialized_behaviour_operations_2_guard)
         _initialized_behaviour_operations_2.setGuard(self._initialized_behaviour_operations_2_guard)
         self.states["/initialized/behaviour/operations"].addTransition(_initialized_behaviour_operations_2)
         self.states["/initialized/behaviour/operations"].addTransition(_initialized_behaviour_operations_2)
         
         
-        # transition /initialized/behaviour/operations/store_on_scripted/transformation_add_MT
-        _initialized_behaviour_operations_store_on_scripted_transformation_add_MT_0 = Transition(self, self.states["/initialized/behaviour/operations/store_on_scripted/transformation_add_MT"], [self.states["/initialized/behaviour/wait_for_action/history"]])
-        _initialized_behaviour_operations_store_on_scripted_transformation_add_MT_0.setAction(self._initialized_behaviour_operations_store_on_scripted_transformation_add_MT_0_exec)
-        _initialized_behaviour_operations_store_on_scripted_transformation_add_MT_0.setTrigger(None)
-        _initialized_behaviour_operations_store_on_scripted_transformation_add_MT_0.setGuard(self._initialized_behaviour_operations_store_on_scripted_transformation_add_MT_0_guard)
-        self.states["/initialized/behaviour/operations/store_on_scripted/transformation_add_MT"].addTransition(_initialized_behaviour_operations_store_on_scripted_transformation_add_MT_0)
-        
         # transition /initialized/behaviour/operations/store_on_scripted/process_execute/enacting
         # transition /initialized/behaviour/operations/store_on_scripted/process_execute/enacting
         _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_0 = Transition(self, self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting"], [self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/executing"]])
         _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_0 = Transition(self, self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting"], [self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/executing"]])
         _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_0.setTrigger(None)
         _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_0.setTrigger(None)
@@ -1786,6 +1781,9 @@ class Modelverse(RuntimeClassBase):
     def _initialized_behaviour_operations_verify_enter(self):
     def _initialized_behaviour_operations_verify_enter(self):
         self.raiseInternalEvent(Event("request", None, [['verify', self.parameters[0], self.parameters[1]]]))
         self.raiseInternalEvent(Event("request", None, [['verify', self.parameters[0], self.parameters[1]]]))
     
     
+    def _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_enter(self):
+        self.catch_all = False
+    
     def _init_enter(self):
     def _init_enter(self):
         self.big_step.outputEventOM(Event("create_instance", None, [self, 'http_client', 'HTTPClient']))
         self.big_step.outputEventOM(Event("create_instance", None, [self, 'http_client', 'HTTPClient']))
         self.big_step.outputEventOM(Event("create_instance", None, [self, 'http_client', 'HTTPClient']))
         self.big_step.outputEventOM(Event("create_instance", None, [self, 'http_client', 'HTTPClient']))
@@ -2002,16 +2000,11 @@ class Modelverse(RuntimeClassBase):
         return self.expect_response_partial('No conformance relation can be found ', pop=False)
         return self.expect_response_partial('No conformance relation can be found ', pop=False)
     
     
     def _initialized_behaviour_operations_2_exec(self, parameters):
     def _initialized_behaviour_operations_2_exec(self, parameters):
+        print("UNKNOWN ERROR: " + self.responses[0])
         self.raiseInternalEvent(Event("exception", None, ['UnknownError', 'Error: %s' % self.responses.pop(0)]))
         self.raiseInternalEvent(Event("exception", None, ['UnknownError', 'Error: %s' % self.responses.pop(0)]))
     
     
     def _initialized_behaviour_operations_2_guard(self, parameters):
     def _initialized_behaviour_operations_2_guard(self, parameters):
-        return self.expect_response_partial('', pop=False)
-    
-    def _initialized_behaviour_operations_store_on_scripted_transformation_add_MT_0_exec(self, parameters):
-        print("UNKNOWN RESPONSE received: " + str(self.responses.pop(0)))
-    
-    def _initialized_behaviour_operations_store_on_scripted_transformation_add_MT_0_guard(self, parameters):
-        return self.expect_response_partial('', pop=False)
+        return self.catch_all and self.expect_response_partial('', pop=False)
     
     
     def _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_0_guard(self, parameters):
     def _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_0_guard(self, parameters):
         return self.expect_response('Success', pop=True)
         return self.expect_response('Success', pop=True)