« Atrás

Entendiendo los modelos de contenido de Alfresco

Nota: Si no conoces Alfresco te recomiendo que te pases antes por este post de introducción a Alfresco .

Alfresco incorpora un metamodelo en su estructura, es decir, la capacidad para que nosotros declaremos nuevos modelos de contenido. ¿Pero qué es un modelo? Básicamente es la estructura que define qué información acompañará a nuestros documentos digitales.

Podrás preguntarte porqué tenemos que acompañar nuestros documentos digitales (los PDFs, Word, etc.) con más información. La razón básica consiste en dotar de semántica al documento para que posteriormente se puedan implementar búsquedas más eficientes e “inteligentes”. Por ejemplo, imagina que quieres localizar en un gran almacén de documentos (¡¡¡piensa en miles o cientos de miles de documentos!!!) aquellos que representen a facturas digitales y en concreto aquellos que representen facturas con un importe mayor a 10.000€. Inicialmente sólo tendremos “contenido”, es decir, en Alfresco por defecto todo documento es un “contenido” o “nodo de contenido” sin más. Por tanto, los PDFs, imágenes, documentos de Word, documentos de OpenOffice, etc. que tengamos en el sistema serán simplemente “contenido”. No es posible por tanto filtrarlo por su naturaleza, es decir, diferenciar aquellos que representan a una factura y a los que no. Si lanzamos una búsqueda directamente por la palabra “factura” el buscador de Alfresco nos devolverá todos los documentos donde aparezca este token, independientemente de que realmente represente una factura o no. Por ejemplo, si en el sistema existe un artículo periodístico que habla de corrupción y facturas falsas, este documento será devuelto en la búsqueda.

Salta a la vista que necesitamos en primer lugar poder diferenciar la naturaleza de nuestros documentos digitales. Esto es lo que en el metamodelo de Alfresco se conoce como “tipo de contenido”. En un sistema de gestión documental aplicada a un hospital los tipos de contenido podrían ser Receta, Radiografía, Historial Clínico. En un sistema de gestión documental aplicado a un despacho de abogados los tipos de contenido serán completamente distintos : Recurso, Demanda, etc.

Los tipos que diseñamos para nuestros modelos son absolutamente dependientes de nuestro negocio y es por ello que Alfresco incorpora el metamodelo que nos permite definir tantos como queramos. Para ello bastará con declararlos en un documento XML, lo veremos más adelante.

Un tipo de contenido no es únicamente un nombre o literal. Un tipo de contenido define la estructura de información que sus nodos tendrán. Esta estructura está compuesta fundamentalmente por 3 elementos: propiedades, asociaciones y restricciones.

Si recuperamos el ejemplo del sistema de gestión documental médico, el tipo de contenido “Receta” definirá propiedades. Por ejemplo una receta tiene un médico, un paciente, una fecha de expedición de la receta, un número de receta y unos medicamentos recetados. Todos estos “campos” que he listado son las propiedades que tendrán un tipo de dato, por ejemplo tipo cadena, tipo fecha, tipo numérico, etc. Algunos de estos campos estarán sometidos a restricciones: el número de receta no podrá ser negativo, el nombre del paciente no puede tener más de 255 caracteres y los medicamentos recetados serán única y exclusivamente los que están en una lista.

En el tipo de contenido “Factura” que presentábamos al comienzo, el importe de la factura sería una propiedad de tipo numérico y sujeta a la restricción de que el importe fuera positivo. Sólo de esta forma podríamos filtrar los documentos por esta característica.
Por último nuestros tipos pueden definir relaciones con otros nodos. Esto será útil cuando queremos modelar la relación entre dos o más documentos. Por ejemplo, la Receta podría estar relacionada con los documentos de Indicaciones y Contraindicaciones de cada uno de los medicamentos recetados.

En resumen, un modelo de contenidos recoge a través de tipos de contenido la naturaleza de nuestros documentos digitales que vamos a almacenar. Estos a su vez definen cada uno de los campos o las informaciones que se registrarán como metadatos (al estar como metadato podremos hacer búsquedas más inteligentes filtrando por los mismos gracias al motor Apache Lucene que integra Alfresco) y sobre los cuales aplicaremos constraints para que los valores de los mismos sigan nuestras restricciones. Por último las asociaciones nos permitirán recoger las relaciones que hay entre distintos nodos del sistema.

Comentarios
URL de Trackback:

comments powered by Disqus