Diferencia entre revisiones de «Contenedores»

De Egeasy
Saltar a: navegación, buscar
(Propiedades de un contenedor)
Línea 100: Línea 100:
  
 
  {{PR|tipo}} [Libro] {{PR|es}} {{RE|contenedor}}
 
  {{PR|tipo}} [Libro] {{PR|es}} {{RE|contenedor}}
     -{{AT|nombre}} = {{STR|"Libros de la biblioteca"}}  
+
     -{{AT|nombre}} = {{STR|"Libros de la biblioteca"}};
     .
+
     ...
     .
+
     ...
     .
+
     ...

Revisión del 11:35 26 dic 2008

¿Qué es un contenedor?

Un contenedor es un recurso fundamental que ofrece ODL y que nos permite crear objetos en un sistema de información. ¿Qué podemos entender por objeto? Pues aquellos elementos o conceptos físicos que intervienen en el sistema de información de una organización. Elementos como fichas, ficheros, informes, registros, documentación, etc., son ejemplos de elementos que puede generar y necesitar un sistema de información.

¿Qué definiciones podemos realizar?

En ODL, existen dos formas de definir un contenedor:

Definiciones de tipo

Una definición de tipo nos permite crear objetos en un sistema de información. Es un concepto basado en POO, donde se define una clase con su posterior creación de objetos u otras clases derivadas.

La estructura del objeto vendrá definida, valga la redundancia, en la definición de tipo. Formularios, secciones o campos son algunos de los componentes que podremos incluir en la definición y que nos permitirán introducir la información que almacenará el objeto. Una vez creado el objeto, podrá ser editado o eliminado por el usuario, siempre y cuando tenga los permisos necesarios para poder realizar dichas operaciones.

Definiciones de sistema

Una definición de sistema permite crear objetos al crear un centro. Los objetos creados en la instalación de un centro los denominaremos objetos de sistema.

Aunque en ODL se puede definir cualquier componente en un contenedor, en los objetos de sistema normalmente se suele utilizar la componente colección para realizar visualizaciones de objetos, ó, en su defecto, catálogos. Estos componentes nos permitirán realizar visualizaciones personalizadas de los tipos de objetos que se quiera, especificando la información a mostrar. A diferencia de las definiciones de tipo, el usuario no podrá crear, modificar o eliminar los objetos de sistema; será una tarea exclusiva del programador.

Veamos un ejemplo

Vamos a realizar un sencillo ejemplo de forma que podamos reflejar los conceptos anteriormente explicados en un caso práctico.

Imaginemos que tenemos una estantería vacía. Y en esa estantería iremos insertando libros con el transcurso del tiempo. Veamos pues como podemos trasladar este caso a lenguaje ODL usando contenedores.

¿Cómo implementamos una definición de tipo?

Como ya hemos dicho, ODL nos ofrece una serie de componentes que podremos utilizar para la definición de un tipo. Los componentes más comunes son formularios, secciones y campos. Un campo es la unidad más básica para la introducción de datos. Una sección es un cojunto de campos y un formulario es un conjunto de secciones y campos.

Por tanto, para el concepto de "Libro" realizaremos una definición de tipo, usando los componentes antes mencionados, que nos permitirá crear un objeto por cada libro que insertemos en la estantería:
tipo [Libro] es contenedor
   [Datos] es formulario
      [Código] es timbre
         -certificado.valor = [&Valor_secuencia];
         -certificado.secuencia.nombre = "STR$LIBRO";
         -certificado.secuencia.longitud = 4;
      [Título] es texto
      [Autor] es texto
      [Edición] es texto
      [Editorial] es texto
      [Contenido] es seccion
         [Tipo] es texto
            -edicion.valores = $Matriz("Literario","Biografía","Científico","Infantil");
            -apariencia.desplegable = verdadero;
         [Sinopsis] es texto
            -edicion.longitud = 1000;
      fin
   fin
fin
Nuestra definición de tipo ya está creada. Como podrás observar, hemos definido un formulario dentro del contenedor, que a su vez contiene varios campos y una sección que nos va a permitir introducir la información perteneciente a cada libro. Existe un campo timbre que se utiliza para autonumerar, en este caso, los libros que vayamos registrando. Los demás campos son todos de tipo texto.

Otro elemento que aparece en la definición que no hemos comentado son los atributos. Los atributos intervienen en todas las definiciones de ODL, y sirven para configurar el comportamiento de las definiciones. Los atributos que aquí se contemplan son relativos a campos y no nos detendremos en explicar su funcionamiento. En este mismo documento, abordaremos con mayor profundidad los atributos que afectan directamente a los contenedores.

Ahora, veamos cómo se refleja el código en la aplicación egExplorer de forma que nos permite crear objetos de tipo "Libro":
Crear un objeto en egExplorer

Una vez rellenado los campos, guardaremos el objeto. Pero, ¿cómo puedo obtener un listado de los libros que voy introduciendo? ¿Cómo puedo "ver mi estantería"?

¿Cómo implementamos una definición de sistema?

Nos disponemos a crear una instancia del sistema, un elemento estático en el que podremos visualizar los objetos que hemos creado. La forma de definir un objeto de sistema es similar a la definición de tipo pero sin incluir la palabra reservada tipo. Es decir, [nombre] es contenedor. Sin más preámbulos, veamos como se define nuestra "estantería":


[Estantería 1] es contenedor
   [Contenido] es coleccion
      -nombre_tabla = "TC$LIBROS";
      contiene [Libro]
      columna [Código]
         -columna_bd.nombre = "CÓDIGO";
         -origen = [Datos].[Código];
      columna [Título]
         -columna_bd.nombre = "TÍTULO";
         -origen = [Datos].[Título];
      columna [Autor]
         -columna_bd.nombre = "AUTOR";
         -origen = [Datos].[Autor];
      columna [Sinopsis]
         -columna_bd.nombre = "SINOPSIS";
         -origen = [Datos].[Contenido].[Sinopsis];
   fin
fin

Como ya hemos dicho, un contenedor puede almacenar componentes, además de otros contenedores. En este caso, se utiliza la componente colección para visualizar los objetos creados. En la colección especificamos los campos que queremos visualizar además de especificar el tipo de objetos. Por eso decimos que la definición puede contener componentes (una colección en este caso) u otros contenedores (contiene [Libro] dentro de la componente colección).

A continuación veremos el contenido de nuestra estantería:
Abrir un objeto de sistema

Al hacer clic en "Estantería 1" abrimos el objeto de sistema, y se visualiza el listado de objetos creados. Dentro de ella, podremos crear aquellos contenedores que estén en el dominio del objeto de sistema, en este caso, sólo podremos crear contenedores "Libro".

Crear un nuevo contenedor dentro de un objeto de sistema

Propiedades de un contenedor

En ODL, cada contenedor que sea crea en el sistema adquiere una serie de propiedades. Éstas almacenan información relativa a cada contenedor creado, que puede resultar útil en tareas de mantenimiento del sistema de información. Algunas de estas propiedades pueden ser asignables, y otras no, desde el punto de vista del programador, nunca del usuario:

  • Nombre: es el nombre que adquiere el objeto. Si no se especifica, adquiere el nombre de la definición.
  • ID: RRC del contenedor. Valor entero único para cada contenedor generado por el sistema.
  • Tipo: tipo del contenedor.
  • Dominio: informa de la ubicación del recurso.
  • Creado: fecha de creación del contenedor.
  • Creador: usuario que ha creado el contenedor.
  • Modificado: fecha de la última modificación del contenedor.
  • Modificador: usuario que ha realizado la última modificación del contenedor.
  • Protegido: evita que un objeto se pueda "mover", por ejemplo, a otras colecciones. Además, no permite la edición del objeto. Se puede asignar o desasignar.

Veamos la forma de modificar la propiedad Nombre:

tipo [Libro] es contenedor
   -nombre = "Libros de la biblioteca"; 
   ...
   ...
   ...