Modelverse Core =============== The Modelverse Core (MvC) is an example (meta-)modelling interface that can be used with a plethora of tools. While the MvC itself is rather simple and its interface is kind of hard to use, wrappers can be put in front of it to make the behaviour much friendlier. For example, a simple call to instantiate a specific class requires several XML/HTTPRequest calls back and forth. A simple wrapper can abstract from this complexity, while retaining the elegance of the versatile interface. The MvC at the moment is written for a simple textual interface, but can easily be augmented with additional information to make it more computer-readable. For example, requests and replies can make use of IDs to distinguish or identify the information being passed around, or perform context switches. The MvC manages the Modelverse information visible to all users. Since all information in the Modelverse is stored as a model, this user and model management information is stored as a model as well: the Core model. The core model is a mega-model that provides links to all other models stored in the Modelverse (including itself!). For each of these models, additional meta-information is stored within the Core model. Only admin users have read and write permission to the Core model by default: this model is used for all other operations. While some operations are allowed for other users, such as modifying the permissions of your own file, this write must be done with administrator permissions. Therefore, this MvC interface provides some specialized operations which check for the necessary permissions (*e.g.*, owner of the model), and then apply the requested operation with admin permissions. An overview of the MvC interface is shown below. A complete overview of the code is shown in the :download:`MvC core algorithm <../core/core_algorithm.alc>` None of these operations manipulate the model at a finer granularity: for that we use the :download:`Mini-Modify <../core/mini_modify.alc>` code, which is sometimes called. A detailed explanation of its operations is shown later. Model operations ---------------- The first set of operations are basic model management operations. model_add ^^^^^^^^^ Adds a new model to the Modelverse. Model content is specified using model constructors, which can be generated with the model compiler. model_modify ^^^^^^^^^^^^ Switches the interface to model-scope operations of a specific model. model_list ^^^^^^^^^^ Give an overview list of all models, showing their name and type. model_list_full ^^^^^^^^^^^^^^^ Give a detailed overview list of all models, showing their name, type, permissions, owner, and group. model_overwrite ^^^^^^^^^^^^^^^ Overwrite an existing model. Similar to *model_add*, but keeps existing meta-information to the model intact. verify ^^^^^^ Verify whether a model conforms to the specified metamodels. Transformation-specific operations ---------------------------------- The second set of operations are specific to model transformations. transformation_add_MT_language ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Create a new RAMified metamodel out of several existing metamodels. The generated metamodel can be used to instantiate a model transformation. transformation_add_MT ^^^^^^^^^^^^^^^^^^^^^ Add a new model transformation schedule, including the rules. transformation_add_AL ^^^^^^^^^^^^^^^^^^^^^ Add a new action language model that operates on models. transformation_add_MANUAL ^^^^^^^^^^^^^^^^^^^^^^^^^ Add a new manual model transformation. transformation_execute ^^^^^^^^^^^^^^^^^^^^^^ Execute an existing transformation. Automatically finds out the type and executes the relevant interface. transformation_list ^^^^^^^^^^^^^^^^^^^ List known transformations and their type. transformation_list_full ^^^^^^^^^^^^^^^^^^^^^^^^ List known transformations and their type, as well as permissions, owner, and group. transformation_detail ^^^^^^^^^^^^^^^^^^^^^ Give details on a single transformation, such as the source and target formalisms. transformation_RAMify ^^^^^^^^^^^^^^^^^^^^^ RAMify an existing metamodel again. Useful if the related metamodel has changed. Process operations ------------------ The third set of operations is related to the execution and operation on an FTG+PM. process_execute ^^^^^^^^^^^^^^^ Execute an existing process model. Model permission operations --------------------------- The fourth set of operations is related to model access control management. permission_modify ^^^^^^^^^^^^^^^^^ Modifies the permission of a specified model. permission_owner ^^^^^^^^^^^^^^^^ Modifies the owner of a specified model. permission_group ^^^^^^^^^^^^^^^^ Modifies the group of a specified model. Group operations ---------------- The fifth set of operations is related to the management of groups. group_create ^^^^^^^^^^^^ Create a new group, and become its administrator. group_delete ^^^^^^^^^^^^ Delete a group for which you are administrator. group_owner_add ^^^^^^^^^^^^^^^ Add a new user as administrator to a group of which you are an administrator. group_owner_delete ^^^^^^^^^^^^^^^^^^ Remove a user as administrator from a group of which you are an administrator. group_join ^^^^^^^^^^ Add a new user to a group of which you are an administrator. group_kick ^^^^^^^^^^ Remove a user from a group of which you are an administrator. group_list ^^^^^^^^^^ List all known groups. Admin operations ---------------- The sixth set of operations is related to administrator operations. admin_promote ^^^^^^^^^^^^^ Promote another user as administrator as well. admin_demote ^^^^^^^^^^^^ Demote another user from administrator status. General operations ------------------ The final set of operations consists of miscellaneous operations. self-destruct ^^^^^^^^^^^^^ Destroy the current user, revoking all permissions of owning models. exit ^^^^ Exit the current task, while keeping the user intact.