|
@@ -0,0 +1,288 @@
|
|
|
+Wrappers
|
|
|
+========
|
|
|
+
|
|
|
+Several wrappers can be defined for the Modelverse, as the Modelverse is merely a service running externally.
|
|
|
+To communicate effectively, and automatically, a programming language wrapper is recommended.
|
|
|
+Nonetheless, it is possible to communicatie manually as well.
|
|
|
+These are some of the implemented wrappers.
|
|
|
+
|
|
|
+Prompt
|
|
|
+------
|
|
|
+
|
|
|
+The simplest wrapper is the prompt wrapper, which merely sends the input and output directly to the user.
|
|
|
+This wrapper has almost no code, but requires users to manually decide which content to send next.
|
|
|
+It has no built-in integration with any model or action language compilers.
|
|
|
+Nonetheless, it is an easy way to test out the raw communication protocol manually.
|
|
|
+
|
|
|
+Python
|
|
|
+------
|
|
|
+
|
|
|
+The first real wrapper is the Python-based wrapper.
|
|
|
+It provides a set of functions for use by Python code.
|
|
|
+These functions wrap not only the interface, but also provides simple error handling through the use of Python exceptions and contains the model and action language compilers.
|
|
|
+An overview of all functions and associatied exceptions is provided below.
|
|
|
+All operations happen *synchronously*, meaning that they block until the Modelverse has performed the requested operation.
|
|
|
+
|
|
|
+Note that some functions are only applicable in a certain *context*.
|
|
|
+In practice, this means that you should first issue the *init* and *login* operations, as otherwise your connection with the Modelverse will not have started up yet.
|
|
|
+
|
|
|
+Functions
|
|
|
+^^^^^^^^^
|
|
|
+
|
|
|
+.. function:: init(address_param="http://127.0.0.1:8001", timeout=20.0)
|
|
|
+
|
|
|
+ Explanation of init.
|
|
|
+
|
|
|
+.. function:: login(username, password)
|
|
|
+
|
|
|
+ Explanation
|
|
|
+
|
|
|
+.. function:: model_add(model_name, metamodel_name, model_code=None)
|
|
|
+
|
|
|
+ Explanation
|
|
|
+
|
|
|
+.. function:: upload_code(code)
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. function:: model_delete(model_name)
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. function:: model_list()
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. function:: model_list_full()
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. function:: verify(model_name)
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. function:: model_overwrite(model_name, new_model_code=None)
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. function:: user_logout()
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. function:: user_delete()
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. function:: model_render(model_name, mapper_name)
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. function:: transformation_between(source, target)
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. function:: transformation_add_MT_language(metamodels, RAMified_name)
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. function:: transformation_add_MT(RAMified_metamodel, source_metamodels, target_metamodels, operation_name, code)
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. function:: transformation_add_AL(source_metamodels, target_metamodels, operation_name, code)
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. function:: transformation_add_MANUAL(source_metamodels, target_metamodels, operation_name)
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. function:: transformation_execute_AL(operation_name, input_models_dict, output_models_dict, callback=lambda i: None)
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. function:: transformation_execute_MANUAL(operation_name, input_models_dict, output_models_dict, callback=lambda i: None)
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. function:: transformation_execute_MT(operation_name, input_models_dict, output_models_dict, callback=lambda i: None)
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. function:: transformation_list()
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. function:: transformation_RAMify(metamodel_name, RAMified_metamodel_name)
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. function:: process_execute(process_name, prefix, callbacks)
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. function:: permission_modify()
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. function:: permission_owner()
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. function:: permission_group()
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. function:: group_create()
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. function:: group_delete()
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. function:: group_owner_add()
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. function:: group_owner_delete()
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. function:: group_join()
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. function:: group_kick()
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. function:: admin_promote()
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. function:: admin_demote()
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. function:: element_list(model_name)
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. function:: types(model_name)
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. function:: types_full(model_name)
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. function:: read(model_name, ID)
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. function:: read_attrs(model_name, ID)
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. function:: instantiate(model_name, typename, edge=None, ID="")
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. function:: delete_element(model_name, ID)
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. function:: attr_assign(model_name, ID, attr, value)
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. function:: attr_assign_code(model_name, ID, attr, code)
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. function:: attr_delete(model_name, ID, attr)
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. function:: read_outgoing(model_name, ID, typename)
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. function:: read_incoming(model_name, ID, typename)
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. function:: read_association_source(model_name, ID)
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. function:: read_association_destination(model_name, ID)
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+Exceptions
|
|
|
+^^^^^^^^^^
|
|
|
+
|
|
|
+.. exception:: ModelverseException
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. exception:: UnknownError
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. exception:: UnknownIdentifier
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. exception:: UnknownType
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. exception:: NotAnAssociation
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. exception:: UnsupportedValue
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. exception:: CompilationError
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. exception:: NoSuchAttribute
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. exception:: UnknownModel
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. exception:: ConnectionError
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. exception:: ModelExists
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. exception:: PermissionDenied
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. exception:: InvalidMode
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+.. exception:: InterfaceMismatch
|
|
|
+
|
|
|
+ Expl
|
|
|
+
|
|
|
+Custom
|
|
|
+------
|
|
|
+
|
|
|
+Other wrappers can be made as desired, in whatever language required.
|
|
|
+This is due to the fact that the Modelverse communicates only through XML/HTTPRequests.
|
|
|
+As such, all languages that support this, can simply mimic the interface used by any of the implemented wrappers.
|