mvc.rst 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. Modelverse Core
  2. ===============
  3. The Modelverse Core (MvC) is an example (meta-)modelling interface that can be used with a plethora of tools.
  4. 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.
  5. For example, a simple call to instantiate a specific class requires several XML/HTTPRequest calls back and forth.
  6. A simple wrapper can abstract from this complexity, while retaining the elegance of the versatile interface.
  7. 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.
  8. For example, requests and replies can make use of IDs to distinguish or identify the information being passed around, or perform context switches.
  9. The MvC manages the Modelverse information visible to all users.
  10. 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.
  11. The core model is a mega-model that provides links to all other models stored in the Modelverse (including itself!).
  12. For each of these models, additional meta-information is stored within the Core model.
  13. Only admin users have read and write permission to the Core model by default: this model is used for all other operations.
  14. 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.
  15. 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.
  16. An overview of the MvC interface is shown below.
  17. A complete overview of the code is shown in the :download:`MvC core algorithm <../core/core_algorithm.alc>`
  18. 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.
  19. A detailed explanation of its operations is shown later.
  20. Model operations
  21. ----------------
  22. The first set of operations are basic model management operations.
  23. model_add
  24. ^^^^^^^^^
  25. Adds a new model to the Modelverse.
  26. Model content is specified using model constructors, which can be generated with the model compiler.
  27. model_modify
  28. ^^^^^^^^^^^^
  29. Switches the interface to model-scope operations of a specific model.
  30. model_list
  31. ^^^^^^^^^^
  32. Give an overview list of all models, showing their name and type.
  33. model_list_full
  34. ^^^^^^^^^^^^^^^
  35. Give a detailed overview list of all models, showing their name, type, permissions, owner, and group.
  36. model_overwrite
  37. ^^^^^^^^^^^^^^^
  38. Overwrite an existing model. Similar to *model_add*, but keeps existing meta-information to the model intact.
  39. verify
  40. ^^^^^^
  41. Verify whether a model conforms to the specified metamodels.
  42. Transformation-specific operations
  43. ----------------------------------
  44. The second set of operations are specific to model transformations.
  45. transformation_add_MT_language
  46. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  47. Create a new RAMified metamodel out of several existing metamodels.
  48. The generated metamodel can be used to instantiate a model transformation.
  49. transformation_add_MT
  50. ^^^^^^^^^^^^^^^^^^^^^
  51. Add a new model transformation schedule, including the rules.
  52. transformation_add_AL
  53. ^^^^^^^^^^^^^^^^^^^^^
  54. Add a new action language model that operates on models.
  55. transformation_add_MANUAL
  56. ^^^^^^^^^^^^^^^^^^^^^^^^^
  57. Add a new manual model transformation.
  58. transformation_execute
  59. ^^^^^^^^^^^^^^^^^^^^^^
  60. Execute an existing transformation. Automatically finds out the type and executes the relevant interface.
  61. transformation_list
  62. ^^^^^^^^^^^^^^^^^^^
  63. List known transformations and their type.
  64. transformation_list_full
  65. ^^^^^^^^^^^^^^^^^^^^^^^^
  66. List known transformations and their type, as well as permissions, owner, and group.
  67. transformation_detail
  68. ^^^^^^^^^^^^^^^^^^^^^
  69. Give details on a single transformation, such as the source and target formalisms.
  70. transformation_RAMify
  71. ^^^^^^^^^^^^^^^^^^^^^
  72. RAMify an existing metamodel again.
  73. Useful if the related metamodel has changed.
  74. Process operations
  75. ------------------
  76. The third set of operations is related to the execution and operation on an FTG+PM.
  77. process_execute
  78. ^^^^^^^^^^^^^^^
  79. Execute an existing process model.
  80. Model permission operations
  81. ---------------------------
  82. The fourth set of operations is related to model access control management.
  83. permission_modify
  84. ^^^^^^^^^^^^^^^^^
  85. Modifies the permission of a specified model.
  86. permission_owner
  87. ^^^^^^^^^^^^^^^^
  88. Modifies the owner of a specified model.
  89. permission_group
  90. ^^^^^^^^^^^^^^^^
  91. Modifies the group of a specified model.
  92. Group operations
  93. ----------------
  94. The fifth set of operations is related to the management of groups.
  95. group_create
  96. ^^^^^^^^^^^^
  97. Create a new group, and become its administrator.
  98. group_delete
  99. ^^^^^^^^^^^^
  100. Delete a group for which you are administrator.
  101. group_owner_add
  102. ^^^^^^^^^^^^^^^
  103. Add a new user as administrator to a group of which you are an administrator.
  104. group_owner_delete
  105. ^^^^^^^^^^^^^^^^^^
  106. Remove a user as administrator from a group of which you are an administrator.
  107. group_join
  108. ^^^^^^^^^^
  109. Add a new user to a group of which you are an administrator.
  110. group_kick
  111. ^^^^^^^^^^
  112. Remove a user from a group of which you are an administrator.
  113. group_list
  114. ^^^^^^^^^^
  115. List all known groups.
  116. Admin operations
  117. ----------------
  118. The sixth set of operations is related to administrator operations.
  119. admin_promote
  120. ^^^^^^^^^^^^^
  121. Promote another user as administrator as well.
  122. admin_demote
  123. ^^^^^^^^^^^^
  124. Demote another user from administrator status.
  125. General operations
  126. ------------------
  127. The final set of operations consists of miscellaneous operations.
  128. self-destruct
  129. ^^^^^^^^^^^^^
  130. Destroy the current user, revoking all permissions of owning models.
  131. exit
  132. ^^^^
  133. Exit the current task, while keeping the user intact.