Browse Source

Fix the SC to allow PM enactment

Yentl Van Tendeloo 8 years ago
parent
commit
76e826c4b6
2 changed files with 63 additions and 10 deletions
  1. 34 6
      wrappers/classes/modelverse.xml
  2. 29 4
      wrappers/modelverse_SCCD.py

+ 34 - 6
wrappers/classes/modelverse.xml

@@ -762,9 +762,34 @@
                             </state>
                             </state>
 
 
                             <state id="executing">
                             <state id="executing">
-                                <transition cond="self.expect_response_partial('Enacting ModelTransformation', pop=False)" target="../enacting/sc"/>
-                                <transition cond="self.expect_response_partial('Enacting ActionLanguage', pop=False)" target="../enacting/sc"/>
-                                <transition cond="self.expect_response_partial('Enacting ManualOperation', pop=False)" target="../enacting/op"/>
+                                <onentry>
+                                    <script>
+                                        print("ENTRY EXEC")
+                                    </script>
+                                </onentry>
+
+                                <onexit>
+                                    <script>
+                                        print("EXIT EXEC")
+                                        print("Responses: " + str(self.responses))
+                                    </script>
+                                </onexit>
+
+                                <transition cond="self.expect_response_partial('Enacting ModelTransformation', 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 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]
+                                    </script>
+                                </transition>
 
 
                                 <transition cond="self.expect_response('Success', pop=True)" target="../../../../wait_for_action/megamodelling">
                                 <transition cond="self.expect_response('Success', pop=True)" target="../../../../wait_for_action/megamodelling">
                                     <raise event="result">
                                     <raise event="result">
@@ -783,7 +808,7 @@
                                             </script>
                                             </script>
 
 
                                             <raise event="result">
                                             <raise event="result">
-                                                <parameter expr="['SC', self.responses.pop(0).split(': ', 1)[1], self.input_context]"/>
+                                                <parameter expr="['SC', self.op_name, self.input_context]"/>
                                             </raise>
                                             </raise>
                                         </transition>
                                         </transition>
                                     </state>
                                     </state>
@@ -805,14 +830,14 @@
 
 
                                 <state id="op" initial="init">
                                 <state id="op" initial="init">
                                     <state id="init">
                                     <state id="init">
-                                        <transition target="../processing">
+                                        <transition cond="True" target="../processing">
                                             <script>
                                             <script>
                                                 self.context = str(uuid.uuid4())
                                                 self.context = str(uuid.uuid4())
                                                 self.actions[self.context] = []
                                                 self.actions[self.context] = []
                                             </script>
                                             </script>
 
 
                                             <raise event="result">
                                             <raise event="result">
-                                                <parameter expr="['OP', self.responses.pop(0).split(': ', 1)[1], self.context]"/>
+                                                <parameter expr="['OP', self.op_name, self.context]"/>
                                             </raise>
                                             </raise>
                                         </transition>
                                         </transition>
                                     </state>
                                     </state>
@@ -1443,6 +1468,9 @@
                     </transition>
                     </transition>
 
 
                     <transition cond="self.expect_response_partial('', pop=False)" target="../wait_for_action/history">
                     <transition cond="self.expect_response_partial('', pop=False)" target="../wait_for_action/history">
+                        <script>
+                            print("Catchall: got non-expected data: " + str(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)"/>

+ 29 - 4
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:   Fri Oct 20 11:37:16 2017
+Date:   Fri Oct 20 14:58:39 2017
 
 
 Model author: Yentl Van Tendeloo
 Model author: Yentl Van Tendeloo
 Model name:   MvK Server
 Model name:   MvK Server
@@ -328,6 +328,8 @@ class Modelverse(RuntimeClassBase):
         
         
         # state /initialized/behaviour/operations/store_on_scripted/process_execute/executing
         # state /initialized/behaviour/operations/store_on_scripted/process_execute/executing
         self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/executing"] = State(61, "/initialized/behaviour/operations/store_on_scripted/process_execute/executing", self)
         self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/executing"] = State(61, "/initialized/behaviour/operations/store_on_scripted/process_execute/executing", self)
+        self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/executing"].setEnter(self._initialized_behaviour_operations_store_on_scripted_process_execute_executing_enter)
+        self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/executing"].setExit(self._initialized_behaviour_operations_store_on_scripted_process_execute_executing_exit)
         
         
         # 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)
@@ -1067,14 +1069,17 @@ class Modelverse(RuntimeClassBase):
         
         
         # transition /initialized/behaviour/operations/store_on_scripted/process_execute/executing
         # 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/enacting/sc"]])
+        _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.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)
         _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)
         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/operations/store_on_scripted/process_execute/enacting/sc"]])
+        _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.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)
         _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)
         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 = 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.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)
         _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)
         self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/executing"].addTransition(_initialized_behaviour_operations_store_on_scripted_process_execute_executing_2)
@@ -1106,6 +1111,7 @@ class Modelverse(RuntimeClassBase):
         _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_op_init_0 = Transition(self, self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/op/init"], [self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/op/processing"]])
         _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_op_init_0 = Transition(self, self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/op/init"], [self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/op/processing"]])
         _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_op_init_0.setAction(self._initialized_behaviour_operations_store_on_scripted_process_execute_enacting_op_init_0_exec)
         _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_op_init_0.setAction(self._initialized_behaviour_operations_store_on_scripted_process_execute_enacting_op_init_0_exec)
         _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_op_init_0.setTrigger(None)
         _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_op_init_0.setTrigger(None)
+        _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_op_init_0.setGuard(self._initialized_behaviour_operations_store_on_scripted_process_execute_enacting_op_init_0_guard)
         self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/op/init"].addTransition(_initialized_behaviour_operations_store_on_scripted_process_execute_enacting_op_init_0)
         self.states["/initialized/behaviour/operations/store_on_scripted/process_execute/enacting/op/init"].addTransition(_initialized_behaviour_operations_store_on_scripted_process_execute_enacting_op_init_0)
         
         
         # transition /initialized/behaviour/operations/store_on_scripted/process_execute/enacting/op/processing
         # transition /initialized/behaviour/operations/store_on_scripted/process_execute/enacting/op/processing
@@ -1958,6 +1964,13 @@ class Modelverse(RuntimeClassBase):
     def _initialized_behaviour_operations_store_on_scripted_process_execute_init_enter(self):
     def _initialized_behaviour_operations_store_on_scripted_process_execute_init_enter(self):
         self.raiseInternalEvent(Event("request", None, [['process_execute', self.parameters[0], self.parameters[1]]]))
         self.raiseInternalEvent(Event("request", None, [['process_execute', self.parameters[0], self.parameters[1]]]))
     
     
+    def _initialized_behaviour_operations_store_on_scripted_process_execute_executing_enter(self):
+        print("ENTRY EXEC")
+    
+    def _initialized_behaviour_operations_store_on_scripted_process_execute_executing_exit(self):
+        print("EXIT EXEC")
+        print("Responses: " + str(self.responses))
+    
     def _initialized_behaviour_operations_permission_modify_enter(self):
     def _initialized_behaviour_operations_permission_modify_enter(self):
         self.raiseInternalEvent(Event("request", None, [['permission_modify', self.parameters[0], self.parameters[1]]]))
         self.raiseInternalEvent(Event("request", None, [['permission_modify', self.parameters[0], self.parameters[1]]]))
     
     
@@ -2101,6 +2114,7 @@ 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("Catchall: got non-expected data: " + str(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):
@@ -2541,7 +2555,6 @@ class Modelverse(RuntimeClassBase):
     
     
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_MT_dialog_0_exec(self, parameters):
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_MT_dialog_0_exec(self, parameters):
         self.raiseInternalEvent(Event("result", None, [True if self.responses.pop(0) == 'Success' else False]))
         self.raiseInternalEvent(Event("result", None, [True if self.responses.pop(0) == 'Success' else False]))
-        print("FINISHED SC execution")
     
     
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_MT_dialog_0_guard(self, parameters):
     def _initialized_behaviour_operations_store_on_scripted_transformation_execute_MT_dialog_0_guard(self, parameters):
         return self.expect_response('Success', pop=False) or self.expect_response('Failure', pop=False)
         return self.expect_response('Success', pop=False) or self.expect_response('Failure', pop=False)
@@ -2576,12 +2589,21 @@ class Modelverse(RuntimeClassBase):
     def _initialized_behaviour_operations_store_on_scripted_process_execute_init_0_guard(self, parameters):
     def _initialized_behaviour_operations_store_on_scripted_process_execute_init_0_guard(self, parameters):
         return self.expect_response('Success', pop=True)
         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]
+    
     def _initialized_behaviour_operations_store_on_scripted_process_execute_executing_0_guard(self, parameters):
     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.expect_response_partial('Enacting ModelTransformation', pop=False)
     
     
+    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):
     def _initialized_behaviour_operations_store_on_scripted_process_execute_executing_1_guard(self, parameters):
         return self.expect_response_partial('Enacting ActionLanguage', pop=False)
         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):
     def _initialized_behaviour_operations_store_on_scripted_process_execute_executing_2_guard(self, parameters):
         return self.expect_response_partial('Enacting ManualOperation', pop=False)
         return self.expect_response_partial('Enacting ManualOperation', pop=False)
     
     
@@ -2594,7 +2616,7 @@ class Modelverse(RuntimeClassBase):
     def _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_sc_init_0_exec(self, parameters):
     def _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_sc_init_0_exec(self, parameters):
         self.input_context = str(uuid.uuid4())
         self.input_context = str(uuid.uuid4())
         self.inputs[self.input_context] = []
         self.inputs[self.input_context] = []
-        self.raiseInternalEvent(Event("result", None, [['SC', self.responses.pop(0).split(': ', 1)[1], 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):
     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)]))
         self.raiseInternalEvent(Event("data_output", None, [self.responses.pop(0)]))
@@ -2611,7 +2633,10 @@ class Modelverse(RuntimeClassBase):
     def _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_op_init_0_exec(self, parameters):
     def _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_op_init_0_exec(self, parameters):
         self.context = str(uuid.uuid4())
         self.context = str(uuid.uuid4())
         self.actions[self.context] = []
         self.actions[self.context] = []
-        self.raiseInternalEvent(Event("result", None, [['OP', self.responses.pop(0).split(': ', 1)[1], self.context]]))
+        self.raiseInternalEvent(Event("result", None, [['OP', self.op_name, self.context]]))
+    
+    def _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_op_init_0_guard(self, parameters):
+        return True
     
     
     def _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_op_processing_0_guard(self, parameters):
     def _initialized_behaviour_operations_store_on_scripted_process_execute_enacting_op_processing_0_guard(self, parameters):
         return self.expect_response_partial('Please perform manual operation ', pop=True)
         return self.expect_response_partial('Please perform manual operation ', pop=True)