Repositorios MMS
Objetos principales
MMS dispone de un conjunto de objetos que denominamos principales y que se caracterizan por su independencia, pudiéndose almacenar para su posterior uso.
Los objetos principales de MMS son:
- @DataSet: el conjuto de datos o dataset.
- @Model: el modelo.
- @Estimation: la estimación.
- @Forecast: la previsión.
- @Combination: la combinación de variables aleatorias.
- @Fit: el ajuste o resolución de la combinación.
Para almacenar un objeto principal basta con usar su método "Store":
Real @ObjectMain::Store(<filename>);
Este método guarda el objeto con la caché de datos y resultados que esté en uso. Si deseamos guardar el objeto sin datos utilizaremos "Store_Light". Si deseamos, sin embargo, forzar el almacenamiento de los datos usaremos "Store_Heavy".
Conexiones
MMS dispone de repositorios para el almacenamiento localizado de los objetos. Existen dos tipos de repositorios: los repositorios en carpeta (@RepositoryFolder) y los repositorios en base de datos (@RepositoryDatabase).
Para facilitar el acceso a los repositorios MMS se necesita definir (y posteriormente abrir) una conexión al repositorio.
La lista de conexiones se mantiene de una sesión TOL a otra.
La conexión no es otra cosa que un conjunto de información que nos ayuda a localizar un repositorio.
La conexión
Una conexión viene dada por el siguiente conjunto de datos o atributos:
Text name
: El nombre único utilizado para identificar tanto a la conexión como al repositorio al que apuntaText type
: El tipo del repositorio al que hace referencia la coneción que puede ser "folder" o el nombre de un sistema de gestión de base de datos (DBMS) como "MySQL".Text source
: La ruta de acceso al repositorio. Para los respositorios en carpete es la ruta del directorio. Para los repositorios en base de datos es la siguiente expresión: "odbc:schema:user:password".Text description
: La descripción de la conexión o del repositorio con el que conecta.
La conexión por defecto
MMS crea un repositorio local por defecto. Los datos de su conexión (que también se encuentra definida por defecto) son:
Text name = "Default"; Text type = "folder"; Text source = TolAppDataPath + "MMS/Repositories/Default"; Text description = "Repositorio local por defecto";
Lista de conexiones definidas
Para obtener la lista de conexiones definidas en MMS úsese:
Set MMS::Container::GetConnections(?);
Lista de conexiones disponibles (aún sin abrir)
Para la lista de conexiónes disponibles, es decir que aún están sin abrir, úsese:
Set MMS::Container::GetConnections_Avalaible(?);
Definir una conexión
Para definir una conexión úsese:
Real MMS::Container::DefineConnection(<name>, <type>, <source>, <description>);
Eliminar una conexión
Para eliminar una conexión existente úsese:
Real MMS::Container::RemoveConnection(name);
Repositorios
Los repositorios están representados en MMS por instancias de la clase: MMS::@Repository
.
El objeto repositorio una vez creado (abierta la conexión) ofrece entre sus métodos
mecanismos para el acceso a los objetos principales que contiene y el guardado de nuevos objetos.
Abrir un repositorio Para crear un objeto repositorio (abrirlo o abrir su conexión) se pueden utilizar alguno de estos dos métodos:
Real MMS::Container::OpenConnection(name); Real MMS::Container::OpenRepository(connectionName);
No ha de confundirse la apertura de la conexión de un repositorio (crear el objeto @Repository) con la creación del repositorio en sí misma.
Obtener un repositorio
Para obtener un repositorio abierto utilícese:
Real index = MMS::Container::FindRepository(connectionName);
para la obtención del índice de un repositorio en el contendor de repositorios abiertos, o
MMS::@Repository rep = MMS::Container::GetRepository(connectionName|index);
para la obtención del objeto repositorio.
Cerrar un repositorio
Para cerrar un repositorio o cerrar una conexión (destruir el objeto @Repository) utilícese:
Real MMS::Container::CloseRepository(connectionName|index);
Creación de nuevos repositorios
No hay que confundir la creación de un repositorio (creación de la estructura en archivos o base de datos) con la apertura de una conexión o repositorio (creación del objeto @Repository).
A continuación indicamos cómo crear un repositorio nuevo:
Crear un nuevo repositorio en carpeta
Para crear un nuevo repositorio en carpeta sólo necesitamos indicar la ruta de un directorio dónde colocar el repositorio. Para crear el repositorio nos apoyamos en la clase derivada de @Repository para repositorios en carpeta y usamos el método de clase siguiente:
Real MMS::@RepositoryFolder::Create([[ Text _.path = "<ruta_de_carpeta>" ]]);
Para utilizar este repositorio es necesario definir su conexión:
Real MMS::Container::DefineConnection(<name>, "folder", <ruta_de_carpeta>, <description>);
Recuérdese que la conexión sólo es necesaria definirla una vez ya que se recuerda de una sesión TOL a otra.
Eliminar un repositorio en carpeta
(Aún no operativo) Para destruir un repositorio creado (ojo, que no es reversible) hay que realizar los siguientes pasos:
- Cerrar el repositorio.
- Eliminar la conexión.
- Destruir el repostiorio.
Uso de los repositorios
Almacenar un objeto
Para almacenar un objeto en un repositorio utilícese:
Real <object>::Save_Repository(<repository>);
desde el objeto, indicando el repositorio como argumento, o:
Real <repository>::SaveObject(<object>);
desde el repositorio.
Nótese que el método "Save_Repository" ea algo como un "saveas" sin un objeto fue cargado desde un repositorio, se le introducen cambios y desea volver a guardarse basta con:
Real <object>::Save(?);
Objetos disponibles
Para la carga de un objeto debemos indicar el identificador del objeto que se desea cargar. Para conocer la lista de objetos disponibles podemos usar uno de estos dos métodos equivalentes:
Set listaA = <repository>::GetObjectList("[ObjectType]"); Set listaB = <repository>::Get[ObjectType]List(?);
donde [ObjectType]
es alguno de los tipos de objetos principales, como "DataSet", "Model", etc.
Cargar un objeto
Para la carga de un objeto úsese:
@[ObjectType] objetoA = LoadObject("[ObjectType]", identifier); @ObjectType] objetoB = Load[ObjectType](identifier);
donde identifier
es uno de los identificadores obtenidos.