Browse Source

Return the model we are modifying in the transformation_add_* operations

Yentl Van Tendeloo 7 years ago
parent
commit
b5d56e0f7d

BIN
bootstrap/bootstrap.m.gz


+ 5 - 2
bootstrap/core_algorithm.alc

@@ -716,10 +716,11 @@ Element function execute_operation(operation_id : String, input_models : Element
 		model_name = ""
 		while (get_entry_id(model_name) != ""):
 			model_name = ".tmp/" + random_string(20)
-		output("Operating on: " + cast_string(model_name))
 		model_create(merged_model, model_name, merged_metamodel_id, "Model")
+		output("Operating on: " + cast_string(model_name))
+		// We want to modify, so modify
 		modify(merged_model, True)
-		model_delete(get_entry_id(model_name))
+		//model_delete(get_entry_id(model_name))
 		result = True
 	elif (exact_type == "ActionLanguage"):
 		Element func
@@ -1684,6 +1685,7 @@ String function transformation_add(source_models : Element, target_models : Elem
 		if (bool_not(bool_and(dict_len(source_models) == 0, dict_len(target_models) == 0))):
 			merged_formalism = model_fuse(formalism_map)
 			model_create(merged_formalism, "merged/" + operation_name, get_entry_id("formalisms/SimpleClassDiagrams"), "Model")
+			output("Operating on: merged/" + operation_name)
 			modify(merged_formalism, True)
 			model_overwrite(merged_formalism, get_entry_id("merged/" + operation_name), get_entry_id("formalisms/SimpleClassDiagrams"))
 
@@ -1826,6 +1828,7 @@ String function cmd_transformation_add_MT(source_models : Element, target_models
 
 	merged_formalism = model_fuse(to_ramify)
 	model_create(merged_formalism, "merged/" + operation_name, get_entry_id("formalisms/SimpleClassDiagrams"), "Model")
+	output("Operating on: merged/" + operation_name)
 	modify(merged_formalism, True)
 	model_overwrite(merged_formalism, get_entry_id("merged/" + operation_name), get_entry_id("formalisms/SimpleClassDiagrams"))
 

+ 27 - 21
wrappers/classes/modelverse.xml

@@ -593,16 +593,18 @@
 
                                 </onentry>
 
-                                <transition target="../edit_metamodel"/>
-
-                            </state>
-
-                            <state id="edit_metamodel">
-                                <transition cond="self.expect_response('Model loaded, ready for commands!')" target="../../../../going_scripted">
+                                <transition cond="self.expect_response_partial('Operating on: ')" target="../edit_metamodel">
+                                    <script>
+                                        print("Operating on received")
+                                    </script>
                                     <raise event="result">
-                                        <parameter expr="self.context"/>
+                                        <parameter expr="[self.context, self.responses.pop(0).split(': ', 1)[1]]"/>
                                     </raise>
                                 </transition>
+                            </state>
+
+                            <state id="edit_metamodel">
+                                <transition cond="self.expect_response('Model loaded, ready for commands!')" target="../../../../going_scripted"/>
                                 <transition cond="self.expect_response('Waiting for model constructors...')" target="../send_model"/>
                             </state>
 
@@ -641,16 +643,18 @@
                                     </script>
                                 </onentry>
 
-                                <transition target="../edit_metamodel"/>
-
-                            </state>
-
-                            <state id="edit_metamodel">
-                                <transition cond="self.expect_response('Model loaded, ready for commands!')" target="../../../../going_scripted">
+                                <transition cond="self.expect_response_partial('Operating on: ')" target="../edit_metamodel">
+                                    <script>
+                                        print("Got model we are operating on!")
+                                    </script>
                                     <raise event="result">
-                                        <parameter expr="self.context"/>
+                                        <parameter expr="[self.context, self.responses.pop(0).split(': ', 1)[1]]"/>
                                     </raise>
                                 </transition>
+                            </state>
+
+                            <state id="edit_metamodel">
+                                <transition cond="self.expect_response('Model loaded, ready for commands!')" target="../../../../going_scripted"/>
                                 <transition cond="self.expect_response('Waiting for code constructors...')" target="../send_model"/>
                             </state>
 
@@ -682,16 +686,18 @@
                                     </script>
                                 </onentry>
 
-                                <transition target="../edit_metamodel"/>
-
-                            </state>
-
-                            <state id="edit_metamodel">
-                                <transition cond="self.expect_response('Model loaded, ready for commands!')" target="../../../../going_scripted">
+                                <transition cond="self.expect_response_partial('Operating on: ')" target="../edit_metamodel">
+                                    <script>
+                                        print("Operating on received")
+                                    </script>
                                     <raise event="result">
-                                        <parameter expr="self.context"/>
+                                        <parameter expr="[self.context, self.responses.pop(0).split(': ', 1)[1]]"/>
                                     </raise>
                                 </transition>
+                            </state>
+
+                            <state id="edit_metamodel">
+                                <transition cond="self.expect_response('Model loaded, ready for commands!')" target="../../../../going_scripted"/>
                                 <transition cond="self.expect_response('Success')" target="../../../../wait_for_action/megamodelling">
                                     <raise event="result">
                                         <parameter expr="None"/>

+ 6 - 7
wrappers/modelverse.py

@@ -139,16 +139,16 @@ def transformation_between(sources, targets):
     return OUTPUT()
 
 def transformation_add_MT(source_metamodels, target_metamodels, operation_name, code, callback=None):
-    INPUT("transformation_add_MT", None, [source_metamodels, target_metamodels, operation_name, code])
-    context = OUTPUT()
+    INPUT("transformation_add_MT", None, [source_metamodels, target_metamodels, operation_name, code, True])
+    context, model = OUTPUT()
     if callback is not None:
         callback(context)
     INPUT("exit", context, [])
     return OUTPUT()
 
 def transformation_add_AL(source_metamodels, target_metamodels, operation_name, code, callback=None):
-    INPUT("transformation_add_AL", None, [source_metamodels, target_metamodels, operation_name, code])
-    context = OUTPUT()
+    INPUT("transformation_add_AL", None, [source_metamodels, target_metamodels, operation_name, code, True])
+    context, model = OUTPUT()
 
     if context is None:
         # In case the source and target metamodels are empty, the context will be None, indicating that we are finished already (no callbacks allowed)
@@ -160,14 +160,13 @@ def transformation_add_AL(source_metamodels, target_metamodels, operation_name,
     return OUTPUT()
 
 def transformation_add_MANUAL(source_metamodels, target_metamodels, operation_name, callback=None):
-    INPUT("transformation_add_MANUAL", None, [source_metamodels, target_metamodels, operation_name])
-    context = OUTPUT()
+    INPUT("transformation_add_MANUAL", None, [source_metamodels, target_metamodels, operation_name, True])
+    context, model = OUTPUT()
     if callback is not None:
         callback(context)
     INPUT("exit", context, [])
     return OUTPUT()
 
-
 def __transformation_execute(operation_name, input_models_dict, output_models_dict, statechart, tracability_model, fetch_output):
     if statechart is not None:
         port_sc = statechart[0].addOutputListener(statechart[2])

+ 25 - 10
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:   Wed Nov  8 13:20:59 2017
+Date:   Wed Nov  8 16:39:47 2017
 
 Model author: Yentl Van Tendeloo
 Model name:   MvK Server
@@ -973,12 +973,13 @@ class Modelverse(RuntimeClassBase):
         
         # transition /initialized/behaviour/operations/store_on_scripted/transformation_add_MT/send_metadata
         _initialized_behaviour_operations_store_on_scripted_transformation_add_MT_send_metadata_0 = Transition(self, self.states["/initialized/behaviour/operations/store_on_scripted/transformation_add_MT/send_metadata"], [self.states["/initialized/behaviour/operations/store_on_scripted/transformation_add_MT/edit_metamodel"]])
+        _initialized_behaviour_operations_store_on_scripted_transformation_add_MT_send_metadata_0.setAction(self._initialized_behaviour_operations_store_on_scripted_transformation_add_MT_send_metadata_0_exec)
         _initialized_behaviour_operations_store_on_scripted_transformation_add_MT_send_metadata_0.setTrigger(None)
+        _initialized_behaviour_operations_store_on_scripted_transformation_add_MT_send_metadata_0.setGuard(self._initialized_behaviour_operations_store_on_scripted_transformation_add_MT_send_metadata_0_guard)
         self.states["/initialized/behaviour/operations/store_on_scripted/transformation_add_MT/send_metadata"].addTransition(_initialized_behaviour_operations_store_on_scripted_transformation_add_MT_send_metadata_0)
         
         # transition /initialized/behaviour/operations/store_on_scripted/transformation_add_MT/edit_metamodel
         _initialized_behaviour_operations_store_on_scripted_transformation_add_MT_edit_metamodel_0 = Transition(self, self.states["/initialized/behaviour/operations/store_on_scripted/transformation_add_MT/edit_metamodel"], [self.states["/initialized/behaviour/going_scripted"]])
-        _initialized_behaviour_operations_store_on_scripted_transformation_add_MT_edit_metamodel_0.setAction(self._initialized_behaviour_operations_store_on_scripted_transformation_add_MT_edit_metamodel_0_exec)
         _initialized_behaviour_operations_store_on_scripted_transformation_add_MT_edit_metamodel_0.setTrigger(None)
         _initialized_behaviour_operations_store_on_scripted_transformation_add_MT_edit_metamodel_0.setGuard(self._initialized_behaviour_operations_store_on_scripted_transformation_add_MT_edit_metamodel_0_guard)
         self.states["/initialized/behaviour/operations/store_on_scripted/transformation_add_MT/edit_metamodel"].addTransition(_initialized_behaviour_operations_store_on_scripted_transformation_add_MT_edit_metamodel_0)
@@ -996,12 +997,13 @@ class Modelverse(RuntimeClassBase):
         
         # transition /initialized/behaviour/operations/store_on_scripted/transformation_add_AL/send_metadata
         _initialized_behaviour_operations_store_on_scripted_transformation_add_AL_send_metadata_0 = Transition(self, self.states["/initialized/behaviour/operations/store_on_scripted/transformation_add_AL/send_metadata"], [self.states["/initialized/behaviour/operations/store_on_scripted/transformation_add_AL/edit_metamodel"]])
+        _initialized_behaviour_operations_store_on_scripted_transformation_add_AL_send_metadata_0.setAction(self._initialized_behaviour_operations_store_on_scripted_transformation_add_AL_send_metadata_0_exec)
         _initialized_behaviour_operations_store_on_scripted_transformation_add_AL_send_metadata_0.setTrigger(None)
+        _initialized_behaviour_operations_store_on_scripted_transformation_add_AL_send_metadata_0.setGuard(self._initialized_behaviour_operations_store_on_scripted_transformation_add_AL_send_metadata_0_guard)
         self.states["/initialized/behaviour/operations/store_on_scripted/transformation_add_AL/send_metadata"].addTransition(_initialized_behaviour_operations_store_on_scripted_transformation_add_AL_send_metadata_0)
         
         # transition /initialized/behaviour/operations/store_on_scripted/transformation_add_AL/edit_metamodel
         _initialized_behaviour_operations_store_on_scripted_transformation_add_AL_edit_metamodel_0 = Transition(self, self.states["/initialized/behaviour/operations/store_on_scripted/transformation_add_AL/edit_metamodel"], [self.states["/initialized/behaviour/going_scripted"]])
-        _initialized_behaviour_operations_store_on_scripted_transformation_add_AL_edit_metamodel_0.setAction(self._initialized_behaviour_operations_store_on_scripted_transformation_add_AL_edit_metamodel_0_exec)
         _initialized_behaviour_operations_store_on_scripted_transformation_add_AL_edit_metamodel_0.setTrigger(None)
         _initialized_behaviour_operations_store_on_scripted_transformation_add_AL_edit_metamodel_0.setGuard(self._initialized_behaviour_operations_store_on_scripted_transformation_add_AL_edit_metamodel_0_guard)
         self.states["/initialized/behaviour/operations/store_on_scripted/transformation_add_AL/edit_metamodel"].addTransition(_initialized_behaviour_operations_store_on_scripted_transformation_add_AL_edit_metamodel_0)
@@ -1019,12 +1021,13 @@ class Modelverse(RuntimeClassBase):
         
         # transition /initialized/behaviour/operations/store_on_scripted/transformation_add_MANUAL/send_metadata
         _initialized_behaviour_operations_store_on_scripted_transformation_add_MANUAL_send_metadata_0 = Transition(self, self.states["/initialized/behaviour/operations/store_on_scripted/transformation_add_MANUAL/send_metadata"], [self.states["/initialized/behaviour/operations/store_on_scripted/transformation_add_MANUAL/edit_metamodel"]])
+        _initialized_behaviour_operations_store_on_scripted_transformation_add_MANUAL_send_metadata_0.setAction(self._initialized_behaviour_operations_store_on_scripted_transformation_add_MANUAL_send_metadata_0_exec)
         _initialized_behaviour_operations_store_on_scripted_transformation_add_MANUAL_send_metadata_0.setTrigger(None)
+        _initialized_behaviour_operations_store_on_scripted_transformation_add_MANUAL_send_metadata_0.setGuard(self._initialized_behaviour_operations_store_on_scripted_transformation_add_MANUAL_send_metadata_0_guard)
         self.states["/initialized/behaviour/operations/store_on_scripted/transformation_add_MANUAL/send_metadata"].addTransition(_initialized_behaviour_operations_store_on_scripted_transformation_add_MANUAL_send_metadata_0)
         
         # transition /initialized/behaviour/operations/store_on_scripted/transformation_add_MANUAL/edit_metamodel
         _initialized_behaviour_operations_store_on_scripted_transformation_add_MANUAL_edit_metamodel_0 = Transition(self, self.states["/initialized/behaviour/operations/store_on_scripted/transformation_add_MANUAL/edit_metamodel"], [self.states["/initialized/behaviour/going_scripted"]])
-        _initialized_behaviour_operations_store_on_scripted_transformation_add_MANUAL_edit_metamodel_0.setAction(self._initialized_behaviour_operations_store_on_scripted_transformation_add_MANUAL_edit_metamodel_0_exec)
         _initialized_behaviour_operations_store_on_scripted_transformation_add_MANUAL_edit_metamodel_0.setTrigger(None)
         _initialized_behaviour_operations_store_on_scripted_transformation_add_MANUAL_edit_metamodel_0.setGuard(self._initialized_behaviour_operations_store_on_scripted_transformation_add_MANUAL_edit_metamodel_0_guard)
         self.states["/initialized/behaviour/operations/store_on_scripted/transformation_add_MANUAL/edit_metamodel"].addTransition(_initialized_behaviour_operations_store_on_scripted_transformation_add_MANUAL_edit_metamodel_0)
@@ -2603,8 +2606,12 @@ class Modelverse(RuntimeClassBase):
     def _initialized_behaviour_operations_process_signature_0_guard(self, parameters):
         return self.expect_response_partial('Success: ', pop=False)
     
-    def _initialized_behaviour_operations_store_on_scripted_transformation_add_MT_edit_metamodel_0_exec(self, parameters):
-        self.raiseInternalEvent(Event("result", None, [self.context]))
+    def _initialized_behaviour_operations_store_on_scripted_transformation_add_MT_send_metadata_0_exec(self, parameters):
+        print("Operating on received")
+        self.raiseInternalEvent(Event("result", None, [[self.context, self.responses.pop(0).split(': ', 1)[1]]]))
+    
+    def _initialized_behaviour_operations_store_on_scripted_transformation_add_MT_send_metadata_0_guard(self, parameters):
+        return self.expect_response_partial('Operating on: ')
     
     def _initialized_behaviour_operations_store_on_scripted_transformation_add_MT_edit_metamodel_0_guard(self, parameters):
         return self.expect_response('Model loaded, ready for commands!')
@@ -2618,8 +2625,12 @@ class Modelverse(RuntimeClassBase):
     def _initialized_behaviour_operations_store_on_scripted_transformation_add_MT_send_model_0_guard(self, parameters):
         return self.expect_response('Success')
     
-    def _initialized_behaviour_operations_store_on_scripted_transformation_add_AL_edit_metamodel_0_exec(self, parameters):
-        self.raiseInternalEvent(Event("result", None, [self.context]))
+    def _initialized_behaviour_operations_store_on_scripted_transformation_add_AL_send_metadata_0_exec(self, parameters):
+        print("Got model we are operating on!")
+        self.raiseInternalEvent(Event("result", None, [[self.context, self.responses.pop(0).split(': ', 1)[1]]]))
+    
+    def _initialized_behaviour_operations_store_on_scripted_transformation_add_AL_send_metadata_0_guard(self, parameters):
+        return self.expect_response_partial('Operating on: ')
     
     def _initialized_behaviour_operations_store_on_scripted_transformation_add_AL_edit_metamodel_0_guard(self, parameters):
         return self.expect_response('Model loaded, ready for commands!')
@@ -2633,8 +2644,12 @@ class Modelverse(RuntimeClassBase):
     def _initialized_behaviour_operations_store_on_scripted_transformation_add_AL_send_model_0_guard(self, parameters):
         return self.expect_response('Success')
     
-    def _initialized_behaviour_operations_store_on_scripted_transformation_add_MANUAL_edit_metamodel_0_exec(self, parameters):
-        self.raiseInternalEvent(Event("result", None, [self.context]))
+    def _initialized_behaviour_operations_store_on_scripted_transformation_add_MANUAL_send_metadata_0_exec(self, parameters):
+        print("Operating on received")
+        self.raiseInternalEvent(Event("result", None, [[self.context, self.responses.pop(0).split(': ', 1)[1]]]))
+    
+    def _initialized_behaviour_operations_store_on_scripted_transformation_add_MANUAL_send_metadata_0_guard(self, parameters):
+        return self.expect_response_partial('Operating on: ')
     
     def _initialized_behaviour_operations_store_on_scripted_transformation_add_MANUAL_edit_metamodel_0_guard(self, parameters):
         return self.expect_response('Model loaded, ready for commands!')