Exportaciones

De Egeasy
Saltar a: navegación, buscar

¿Qué es una exportación?

Las exportaciones son operaciones que se realizan en ODL para obtener datos de los objetos creados de una determinada definición. Esto nos permite deserializar los objetos, desglosarlos y obtener la información de los campos que nos interesen, para posteriormente crear una tabla en la base de datos con los datos obtenidos.

Cuando un objeto es almacenado, se ejecutan todas aquellas exportaciones en las que esté incluída la definición del objeto, para actualizar las tablas asociadas a cada exportación.

¿Cómo definimos una exportación?

Podemos definir exportaciones como una instancia, o como definiciones de tipo que utilizaremos para derivar nuevas definiciones a partir de ellas. Estas definiciones no se realizan en el ámbito de ninguna otra definición, es decir, que tendrán que realizarse de forma independiente a cualquier otro recurso de ODL.

La definición de una exportación es similar al de una colección, donde tendremos que especificar la tabla a crear en el atributo nombre_tabla, el universo sobre el que va a actuar la exportación en el atributo universo y las columnas que se crearán en la tabla especificando el origen del campo. En la declaración de columnas, el nombre de la columna que se creará en la tabla la especificaremos en el atributo columna_bd.nombre, y el campo origen en el atributo origen. Veamos un ejemplo a continuación:

tipo [Exportación base] es exportación
-nombre_tabla = "TR$NOMBRE_DE_LA_TABLA"; //Especificamos el nombre de la tabla a crear
-universo = [Definición de contenedor]; //El tipo de objetos sobre el que va a realizar la exportación de datos

//Y declaramos las columnas que se van a crear en la tabla con su nombre y origen columna [Nombre columna] -columna_bd.nombre = "NOMBRE_COLUMNA_BBDD"; -origen = [Formulario].[Campo1];
columna [Nombre columna] -columna_bd.nombre = "NOMBRE_COLUMNA_BBDD"; -origen = [Formulario].[Campo2];
fin
[Exportación derivada] es [Exportación base]
//Exportación derivada definida como una instancia a la que podremos acceder
fin

En las definiciones de exportación sólo es posible incluir un universo, es decir, una sola definición de contenedor sobre cuyos objetos creados se realizará la exportación. También hay que tener en cuenta el nombre de la tabla a crear, ya que siempre ha de ir con el prefijo TR$.

Ventajas de una exportación

Hasta ahora, lo visto en cuanto a las exportaciones tiene ciertas similitudes sobre lo que puede ser una colección, pero hay un aspecto importante en las exportaciones que las hace ser una herramienta más potente a la hora de obtener listados.

Imaginemos que tenemos una definición de contenedor cualquiera (por ejemplo Entrada), con su formulario y sus campos. Uno de esos campos, es una tabla, donde se recogen por filas todos los documentos que se han ido entregando en una entrada concreta. Si nuestro objetivo fuera listar todos los documentos entregados en todas las entradas, las colecciones no serían válidas para este tipo de operaciones.

Para ello, las exportaciones ofrecen la opción de crear una tabla adyacente a la tabla de la exportación, en donde se recogerían todos los documentos entregados. De tal manera, que cada fila de la tabla principal representará una entrada, y en la tabla adyacente cada fila representará un documento entregado.

¿Y qué conseguimos con esta estructura de tablas en la base de datos?

La tabla adyacente creada tiene una particularidad, y es que además de crear una columna con los datos que elijamos de cada documento, se crean dos columnas llamadas RRC y ROW_PATH, donde RRC corresponde al identificador de la entrada al que pertenece el documento, y la columna ROW_PATH establece el número de documento asociado a cada entrada. Para entenderlo mejor, veamos un ejemplo gráfico:

Tabla de la exportación de las ENTRADAS.
Tabla adyacente para exportar los documentos. Vemos que los valores que aparecen en la columna RRC corresponde con los de la columna anterior.

Con esta estructura, vemos que hay un enlace entre cada documento, y la entrada a la que pertenece. Ese enlace es el RRC de cada entrada. Haciendo uso de los catálogos, podemos hacer una petición SQL, haciendo un JOIN entre ambas tablas con las columnas RRC. De esta manera, conseguiríamos mostrar sólo los documentos entregados.

Si quisiéramos hacer esta operación con una sola tabla, cada fila representaría a un documento entregado con su entrada asociada, pero de este modo, estaríamos repitiendo las entradas exportadas, tantas veces como documentos tenga cada entrada. Además, la tabla estaría desvirtuada ya que existiría información sobre las entradas conjuntamente con información de los documentos.

Veamos entonces la forma de definir y crear la tabla adyacente de la que hemos hablado:

[Exportación de entradas] es exportacion
   -nombre_tabla = "TR$ENTRADAS";
   -universo = [Entrada];
columna [Remitente] -columna_bd.nombre = "REMITENTE"; -columna_bd.tipo = vinculo; -origen = [Datos generales].[Remitente]; columna [Fecha de presentación] -columna_bd.nombre = "FECHA_PRESENTACION"; -origen = [Datos generales].[Fecha]; columna [Documento] -columna_bd.nombre = "TR$ENTRADAS#DOCUMENTOS.NOMBRE"; Creación de la tabla adyacente -origen = [Datos generales].[Documentación presentada].[Documento]; fin

Una vez tenemos la exportación, definiremos un catálogo con su sentencia SQL para mostrar los documentos:

[Registro de documentación] es contenedor
   [Documentación] es catalogo
       -sentencia = "SELECT ENTRADAS.NAME, ENTRADAS.REMITENTE AS ""Remitente"", 
                            ENTRADAS.FECHA_PRESENTACION AS ""Fecha de presentación"",
                            DOCUMENTOS.NOMBRE AS ""Documento"" FROM TR$ENTRADAS ENTRADAS,
                            TR$ENTRADAS#DOCUMENTOS DOCUMENTOS WHERE ENTRADAS.RRC = DOCUMENTOS.RRC";
   fin
fin

Atributos

Definición de exportación


Atributo Tipo Observaciones
nombre_tabla Texto Nombre de la tabla en la base de datos. Deben llevar el prefijo TR$
universo Definición de contenedor Definición de aquellos objetos sobre los que se realizarán las exportaciones.


Declaración de columna


Atributo Tipo Observaciones
columna_bd.nombre Texto Nombre de la columna en la base de datos.
origen Expresión Expresión cuyo resultado almacenará en la columna.