Просмотр исходного кода

Fix the SC to allow PM enactment

Yentl Van Tendeloo 7 лет назад
Родитель
Сommit
76e826c4b6
2 измененных файлов с 63 добавлено и 10 удалено
  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 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">
                                     <raise event="result">
@@ -783,7 +808,7 @@
                                             </script>
 
                                             <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>
                                         </transition>
                                     </state>
@@ -805,14 +830,14 @@
 
                                 <state id="op" initial="init">
                                     <state id="init">
-                                        <transition target="../processing">
+                                        <transition cond="True" target="../processing">
                                             <script>
                                                 self.context = str(uuid.uuid4())
                                                 self.actions[self.context] = []
                                             </script>
 
                                             <raise event="result">
-                                                <parameter expr="['OP', self.responses.pop(0).split(': ', 1)[1], self.context]"/>
+                                                <parameter expr="['OP', self.op_name, self.context]"/>
                                             </raise>
                                         </transition>
                                     </state>
@@ -1443,6 +1468,9 @@
                     </transition>
 
                     <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">
                             <parameter expr="'UnknownError'"/>
                             <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)
 
-Date:   Fri Oct 20 11:37:16 2017
+Date:   Fri Oct 20 14:58:39 2017
 
 Model author: Yentl Van Tendeloo
 Model name:   MvK Server
@@ -328,6 +328,8 @@ 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(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
         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
         _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.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.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)
@@ -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.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.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)
         
         # 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):
         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):
         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)
     
     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)]))
     
     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):
         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):
         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):
         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):
         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):
         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)
     
@@ -2594,7 +2616,7 @@ class Modelverse(RuntimeClassBase):
     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.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):
         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):
         self.context = str(uuid.uuid4())
         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):
         return self.expect_response_partial('Please perform manual operation ', pop=True)