jueves, junio 30, 2005

Modelo de Datos de OpenACS Primera Parte

Modelo de Datos en OpenACS 5.1.....

(Primera Parte Creación de tipos y atributos)

OpenAcs dispone de una API para la creación de nuevos tipos de Objetos ya que la orientación a objetos dentro de sistemas de Bases relacionales está implementada en estos momentos mediante lenguajes embebidos en el sistema gestor de bases de datos.

Al tener un sistema propio de objetos aseguramos asi una independencia de la base de datos que queramos utilizar ya que internamente el sistema base de openacs utilizará las llamadas al gestor de base de datos adecuado...

No entraremos en detalle en las tablas que utiliza openacs para almacenar los datos de tipo y atributos, baste como curiosidad el nombrar aqui las tablas acs_object_types (para los tipos) ,
acs_attributes (para los atributos de los tipos).

Veamos las operaciones basicas que podemos realizar con objetos con este API utilizando el paquete acs_object_type:

Creacion de nuevos tipos de objeto:
Haremos un pequeño ejemplo.
Supongamos que deseamos desarrollar un paquete en openacs que nos permita gestionar un conjunto de amigos.Llamaremos a nuestro paquete "amigos".
Deberemos crear las tablar con sus columnas etc, para ello en el fichero amigos-create.sql que pondremos en la carpeta sql de nuestro paquete haremos las siguientes llamadas al API:

Utilizaremos la funcion create type para crear el tipo "Amigo" e indicar la columna que hará de clave primaria (amigo_id) en la Tabla donde almacenaremos los amigos , una cosa importante a destacar es que OpenAcs al crear el tipo crea automaticamente la tabla con solo 1 columna que sera su clave primaria.Por lo tanto deberemos añadir el resto de columnas correspondientes al resto de información creando atributos para el tipo Amigo.

veamos mas claramente el contenido del fichero:

select content_type__create_type(
'amigo', -- nombre del tipo
'content_revision', -- tipo del que hereda
'Amigo', -- nombre para mostrar
'Amigos', -- nombre para mostrar en plural
'amigos', -- nombre de la tabla
'amigo_id', -- nombre de la clave primaria de la tabla
null -- metodo de nombrado (podemos omitirlo de momento)
);

Comentarios: vemos que nuestro tipo hereda de un tipo llamado content_revision pero tambien podiamos haber heredado de acs_object, para nuestro proposito inicial este tipo que hemos utilizado nos vale.

Con esta llamada tendriamos creadas todas las referencias necesarias para que OpenAcs tenga constancia de nuestro tipo y ademas una tabla llamada amigos con una clave primaria numerica (la clave primaria debe ser siempre numerica en openacs) llamada amigo_id.

Vamos ahora dentro del mismo fichero a añadir las llamadas necesarias para poder almacenar el nombre y apellidos de nuestros amigos dentro del sistema de openacs:
Haremos una llamada a la funcion content_type__create_attibute.

select content_type__create_attribute(
'amigo', --tipo
'nombre', --nombre del atributo
'string', --tipo del atributo
'Nombre', --nombre para mostrar
'Nombres', --nombre para mostrar en plural
null, --orden de ordenacion
'', --valor por defecto (tb podriamos haber puesto null)
'text' --tipo de dato en la base de datos
);


select content_type__create_attribute(
'amigo',
'apellidos',
'string',
'Apellidos',
'Apellidos',
null,
'',
'text'
);

Con esto ya tendriamos creado nuestro tipo amigo con sus dos atributos Nombre y Apellidos

lunes, junio 20, 2005

First Post & Objetives

Primer mensaje en el blog /First Message in blog
This site is mainly used to centralize all the documentation possible concerning the development in OpenACS/dotLRN.
You can notice that there is a lack of information about APIs in dotLRN, so we wish to change this fact but we need some help in order to begin with its development.