Bläddra i källkod

New structure for the modelverse client SCCD model + implemented operation calls

Yentl Van Tendeloo 8 år sedan
förälder
incheckning
4cb634ddec
2 ändrade filer med 538 tillägg och 13 borttagningar
  1. 3 0
      bootstrap/core_algorithm.alc
  2. 535 13
      wrappers/classes/modelverse.xml

+ 3 - 0
bootstrap/core_algorithm.alc

@@ -2165,6 +2165,9 @@ Void function user_function_skip_init(user_id : String):
 			// Delete user from Core Formalism
 			model_delete_element(core, user_id)
 			return !
+		elif (cmd == "user_logout"):
+			// TODO
+			cmd = "FAIL"
 		elif (cmd == "exit"):
 			// Exit by actually removing the user and decoupling it from all of its models
 			// Restarting with the same user name will NOT grant you access to anything of the previous user with that same name

+ 535 - 13
wrappers/classes/modelverse.xml

@@ -6,7 +6,7 @@
     <method name="load_action">
         <parameter name="context"/>
         <body>
-            action = self.actions[None].pop(0)
+            action = self.actions[context].pop(0)
             self.parameters = action["parameters"]
             self.current_ID = action["ID"]
         </body>
@@ -248,18 +248,220 @@
                     </state>
                 </state>
 
-                <state id="model_list">
-                    <onentry>
-                        <raise event="request">
-                            <parameter expr="['model_list', self.parameters[0]]"/>
-                        </raise>
-                    </onentry>
+                <state id="operations">
+                    <state id="model_list">
+                        <onentry>
+                            <raise event="request">
+                                <parameter expr="['model_list', self.parameters[0]]"/>
+                            </raise>
+                        </onentry>
 
-                    <transition cond="self.expect_response_partial('Success: ', pop=False)" target="../wait_for_action/history">
-                        <raise event="result">
-                            <parameter expr="self.split_response(self.responses.pop(0))"/>
-                        </raise>
-                    </transition>
+                        <transition cond="self.expect_response_partial('Success: ', pop=False)" target="../../wait_for_action/history">
+                            <raise event="result">
+                                <parameter expr="self.split_response(self.responses.pop(0))"/>
+                            </raise>
+                        </transition>
+                    </state>
+
+                    <state id="model_add" initial="send_metadata">
+                        <state id="send_metadata">
+                            <onentry>
+                                <raise event="request">
+                                    <parameter expr="['model_add', self.parameters[1], self.parameters[0]]"/>
+                                </raise>
+                            </onentry>
+
+                            <transition cond="self.expect_response('Waiting for model constructors...')" target="../send_model"/>
+                        </state>
+
+                        <state id="send_model">
+                            <onentry>
+                                <raise event="request">
+                                    <parameter expr="self.parameters[2]"/>
+                                </raise>
+                            </onentry>
+
+                            <transition cond="self.expect_response('Success')" target="../../wait_for_action/history">
+                                <raise event="result">
+                                    <parameter expr="None"/>
+                                </raise>
+                            </transition>
+                        </state>
+                    </state>
+
+                    <state id="model_delete">
+                        <onentry>
+                            <raise event="request">
+                                <parameter expr="['model_delete', self.parameters[0]]"/>
+                            </raise>
+                        </onentry>
+
+                        <transition cond="self.expect_response('Success')" target="../../wait_for_action/history">
+                            <raise event="result">
+                                <parameter expr="None"/>
+                            </raise>
+                        </transition>
+                    </state>
+
+                    <state id="model_list_full">
+                        <onentry>
+                            <raise event="request">
+                                <parameter expr="['model_list_full', self.parameters[0]]"/>
+                            </raise>
+                        </onentry>
+
+                        <transition cond="self.expect_response_partial('Success: ', pop=False)" target="../../wait_for_action/history">
+                            <raise event="result">
+                                <parameter expr="self.split_response(self.responses.pop(0))"/>
+                            </raise>
+                        </transition>
+                    </state>
+
+                    <state id="verify">
+                        <onentry>
+                            <raise event="request">
+                                <parameter expr="['verify', self.parameters[0], self.parameters[1]]"/>
+                            </raise>
+                        </onentry>
+
+                        <transition cond="self.expect_response_partial('Success: ', pop=False)" target="../../wait_for_action/history">
+                            <raise event="result">
+                                <parameter expr="self.split_response(self.responses.pop(0))"/>
+                            </raise>
+                        </transition>
+                    </state>
+
+                    <state id="model_overwrite" initial="send_metadata">
+                        <state id="send_metadata">
+                            <onentry>
+                                <raise event="request">
+                                    <parameter expr="['model_overwrite', self.parameters[1]]"/>
+                                </raise>
+                            </onentry>
+
+                            <transition cond="self.expect_response('Waiting for model constructors...')" target="../send_model"/>
+                        </state>
+
+                        <state id="send_model">
+                            <onentry>
+                                <raise event="request">
+                                    <parameter expr="self.parameters[2]"/>
+                                </raise>
+                            </onentry>
+
+                            <transition cond="self.expect_response('Success')" target="../../wait_for_action/history">
+                                <raise event="result">
+                                    <parameter expr="None"/>
+                                </raise>
+                            </transition>
+                        </state>
+                    </state>
+
+                    <state id="disconnect">
+                        <onentry>
+                            <raise event="request">
+                                <parameter expr="'exit'"/>
+                            </raise>
+                        </onentry>
+
+                        <transition cond="self.expect_response('Success')" target="../../wait_for_action/finished">
+                            <raise event="result">
+                                <parameter expr="None"/>
+                            </raise>
+                        </transition>
+                    </state>
+
+                    <state id="user_logout">
+                        <onentry>
+                            <raise event="request">
+                                <parameter expr="'user_logout'"/>
+                            </raise>
+                        </onentry>
+
+                        <transition cond="self.expect_response('Success')" target="../../wait_for_action/connected">
+                            <raise event="result">
+                                <parameter expr="None"/>
+                            </raise>
+                        </transition>
+                    </state>
+
+                    <state id="user_delete">
+                        <onentry>
+                            <raise event="request">
+                                <parameter expr="'self-destruct'"/>
+                            </raise>
+                        </onentry>
+
+                        <transition cond="self.expect_response('Success')" target="../../wait_for_action/finished">
+                            <raise event="result">
+                                <parameter expr="None"/>
+                            </raise>
+                        </transition>
+                    </state>
+
+                    <state id="model_render">
+                        <onentry>
+                            <raise event="request">
+                                <parameter expr="['model_render', self.parameters[0], self.parameters[1]]"/>
+                            </raise>
+                        </onentry>
+
+                        <transition cond="self.expect_response_partial('Success: ', pop=False)" target="../../wait_for_action/history">
+                            <raise event="result">
+                                <parameter expr="self.split_response(self.responses.pop(0))"/>
+                            </raise>
+                        </transition>
+                    </state>
+
+                    <state id="transformation_between">
+                        <onentry>
+                            <raise event="request">
+                                <parameter expr="['transformation_between', self.parameters[0], self.parameters[1]]"/>
+                            </raise>
+                        </onentry>
+
+                        <transition cond="self.expect_response_partial('Success: ', pop=False)" target="../../wait_for_action/history">
+                            <raise event="result">
+                                <parameter expr="self.split_response(self.responses.pop(0))"/>
+                            </raise>
+                        </transition>
+                    </state>
+
+                    <state id="transformation_add_MT" initial="send_metadata">
+                        <state id="send_metadata">
+                            <onentry>
+                                <raise event="request">
+                                    <parameter expr="['transformation_add_MT', self.dict_to_list(self.parameters[0]), self.dict_to_list(self.parameters[1]), self.parameters[2]]"/>
+                                </raise>
+
+                                <script>
+                                    self.context = str(uuid.uuid4())
+                                </script>
+
+                                <raise event="result">
+                                    <parameter expr="self.context">
+                                </raise>
+                            </onentry>
+
+                            <transition target="../edit_metamodel"/>
+
+                        </state>
+
+                        <state id="edit_metamodel">
+                            <transition cond="self.expect_response('Model loaded, ready for commands!')" target="../../wait_for_action/modelling/scripted"/>
+                            <transition cond="self.expect_response('Waiting for model constructors...)" target="../send_model"/>
+                        </state>
+
+                        <state id="send_model">
+                            <onentry>
+                                <raise event="request">
+                                    <parameter expr="self.parameters[3]"/>
+                                </raise>
+                            </onentry>
+
+                            <transition cond="self.expect_response('Success')" target="../../wait_for_action/history"/>
+                        </state>
+                    </state>
                 </state>
 
                 <state id="wait_for_action" initial="disconnected">
@@ -280,7 +482,217 @@
                     </state>
 
                     <state id="megamodelling">
-                        <transition cond="self.expect_action(None, 'model_list')" target="../../model_list">
+                        <transition cond="self.expect_action(None, 'model_list')" target="../../operations/model_list">
+                            <script>
+                                self.load_action(None)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(None, 'model_add')" target="../../operations/model_add">
+                            <script>
+                                self.load_action(None)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(None, 'model_delete')" target="../../operations/model_delete">
+                            <script>
+                                self.load_action(None)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(None, 'model_list_full')" target="../../operations/model_list_full">
+                            <script>
+                                self.load_action(None)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(None, 'verify')" target="../../operations/verify">
+                            <script>
+                                self.load_action(None)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(None, 'model_overwrite')" target="../../operations/model_overwrite">
+                            <script>
+                                self.load_action(None)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(None, 'disconnect')" target="../../operations/disconnect">
+                            <script>
+                                self.load_action(None)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(None, 'user_logout')" target="../../operations/user_logout">
+                            <script>
+                                self.load_action(None)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(None, 'user_delete')" target="../../operations/user_delete">
+                            <script>
+                                self.load_action(None)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(None, 'model_render')" target="../../operations/model_render">
+                            <script>
+                                self.load_action(None)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(None, 'transformation_between')" target="../../operations/transformation_between">
+                            <script>
+                                self.load_action(None)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(None, 'transformation_add_MT')" target="../../operations/transformation_add_MT">
+                            <script>
+                                self.load_action(None)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(None, 'transformation_add_AL')" target="../../operations/transformation_add_AL">
+                            <script>
+                                self.load_action(None)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(None, 'transformation_add_MANUAL')" target="../../operations/transformation_add_MANUAL">
+                            <script>
+                                self.load_action(None)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(None, 'transformation_execute_MT')" target="../../operations/transformation_execute_MT">
+                            <script>
+                                self.load_action(None)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(None, 'transformation_execute_AL')" target="../../operations/transformation_execute_AL">
+                            <script>
+                                self.load_action(None)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(None, 'transformation_execute_MANUAL')" target="../../operations/transformation_execute_MANUAL">
+                            <script>
+                                self.load_action(None)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(None, 'transformation_list')" target="../../operations/transformation_list">
+                            <script>
+                                self.load_action(None)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(None, 'process_execute')" target="../../operations/process_execute">
+                            <script>
+                                self.load_action(None)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(None, 'permission_modify')" target="../../operations/permission_modify">
+                            <script>
+                                self.load_action(None)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(None, 'permission_owner')" target="../../operations/permission_owner">
+                            <script>
+                                self.load_action(None)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(None, 'permission_group')" target="../../operations/permission_group">
+                            <script>
+                                self.load_action(None)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(None, 'group_create')" target="../../operations/group_create">
+                            <script>
+                                self.load_action(None)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(None, 'group_delete')" target="../../operations/group_delete">
+                            <script>
+                                self.load_action(None)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(None, 'group_owner_add')" target="../../operations/group_owner_add">
+                            <script>
+                                self.load_action(None)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(None, 'group_owner_delete')" target="../../operations/group_owner_delete">
+                            <script>
+                                self.load_action(None)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(None, 'group_join')" target="../../operations/group_join">
+                            <script>
+                                self.load_action(None)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(None, 'group_kick')" target="../../operations/group_kick">
+                            <script>
+                                self.load_action(None)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(None, 'group_list')" target="../../operations/group_list">
+                            <script>
+                                self.load_action(None)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(None, 'admin_promote')" target="../../operations/admin_promote">
+                            <script>
+                                self.load_action(None)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(None, 'admin_demote')" target="../../operations/admin_demote">
+                            <script>
+                                self.load_action(None)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(None, 'service_register')" target="../../operations/service_register">
+                            <script>
+                                self.load_action(None)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(None, 'conformance_delete')" target="../../operations/conformance_delete">
+                            <script>
+                                self.load_action(None)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(None, 'conformance_add')" target="../../operations/conformance_add">
+                            <script>
+                                self.load_action(None)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(None, 'folder_create')" target="../../operations/folder_create">
+                            <script>
+                                self.load_action(None)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(None, 'model_types')" target="../../operations/model_types">
                             <script>
                                 self.load_action(None)
                             </script>
@@ -289,12 +701,122 @@
 
                     <state id="modelling" initial="manual">
                         <state id="manual">
+                            <onentry>
+                                self.context = None
+                            </onentry>
+
+                            <transition cond="self.expect_action(self.context, 'exit')" target="../../wait_for_actions/megamodelling"/>
                         </state>
 
                         <state id="scripted">
+                            <transition cond="self.expect_action(self.context, 'exit')" target="../../operations/history"/>
                         </state>
+
+                        <transition cond="self.expect_action(self.context, 'element_list')" target="../../operations/element_list">
+                            <script>
+                                self.load_action(self.context)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(self.context, 'types')" target="../../operations/types">
+                            <script>
+                                self.load_action(self.context)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(self.context, 'types_full')" target="../../operations/types_full">
+                            <script>
+                                self.load_action(self.context)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(self.context, 'read')" target="../../operations/read">
+                            <script>
+                                self.load_action(self.context)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(self.context, 'read_attrs')" target="../../operations/read_attrs">
+                            <script>
+                                self.load_action(self.context)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(self.context, 'instantiate')" target="../../operations/instantiate">
+                            <script>
+                                self.load_action(self.context)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(self.context, 'delete_element')" target="../../operations/delete_element">
+                            <script>
+                                self.load_action(self.context)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(self.context, 'attr_assign')" target="../../operations/attr_assign">
+                            <script>
+                                self.load_action(self.context)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(self.context, 'attr_assign_code')" target="../../operations/attr_assign_code">
+                            <script>
+                                self.load_action(self.context)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(self.context, 'attr_delete')" target="../../operations/attr_delete">
+                            <script>
+                                self.load_action(self.context)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(self.context, 'read_outgoing')" target="../../operations/read_outgoing">
+                            <script>
+                                self.load_action(self.context)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(self.context, 'read_incoming')" target="../../operations/read_incoming">
+                            <script>
+                                self.load_action(self.context)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(self.context, 'read_association_source')" target="../../operations/read_association_source">
+                            <script>
+                                self.load_action(self.context)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(self.context, 'read_association_destination')" target="../../operations/read_association_destination">
+                            <script>
+                                self.load_action(self.context)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(self.context, 'connections_between')" target="../../operations/connections_between">
+                            <script>
+                                self.load_action(self.context)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(self.context, 'define_attribute')" target="../../operations/define_attribute">
+                            <script>
+                                self.load_action(self.context)
+                            </script>
+                        </transition>
+
+                        <transition cond="self.expect_action(self.context, 'all_instances')" target="../../operations/all_instances">
+                            <script>
+                                self.load_action(self.context)
+                            </script>
+                        </transition>
                     </state>
 
+                    <state id="finished"/>
+
                     <history id="history" type="deep"/>
                 </state>
             </state>