Translate

jueves, 26 de mayo de 2011

Arquitectura de Alfresco (I)

La arquitectura de Alfresco es la típica de una aplicación web basada en JAVA:


 
Los usuarios acceden típicamente mediante un navegador a la interfaz de usuario de Alfresco (gestión documental) o Share (entorno colaborativo). Estas interfaces pueden variar en función de los componentes instalados (WCM,RM) para adecuarse a la lógica de estos.


Todos los documentos subidos al repositorio de Alfresco con toda su información adicional (Metadatos) se persisten en la capa de almacenamiento según su naturaleza:
  • Contenido -> Sistema de Ficheros
  • Metadatos -> Base de datos
Tal como muestra el diagrama vemos que Alfresco separa a nivel lógico el repositorio (lugar donde se almacenan nuestros documentos) de las aplicaciones que acceden a él (DM,RM,WCM,SHARE).

A nivel físico tenemos únicamente 2 ficheros war:
  •  Alfresco.war (DM + Repositorio)
  •  Share.war (SHARE)
A nivel lógico seria posible deshacernos de la interfaz de Alfresco y programar nuestra propia interfaz o acceder al repositorio a través de una tercera aplicación

Esto es posible gracias a los Foundation Services de Alfresco, los cuales nos permiten acceder al contenido del repositorio y realizar acciones sobre él. Se dispone entre otros de servicios de autenticación, búsquedas, permisos, contenido..etc). El listado completos de los servicios lo podemos obtener dentro del fichero public-services-context.xml

Estos servicios son la capa pública más baja de la API de Alfresco son publicados a través de una interfaz JAVA. Cada uno de ellos está mapeado a un componente que a modo de caja negra es capaz de ejecutar el código necesario para obtener los resultados de los servicios solicitados. Además disponemos de un registro de servicios que, a modo de listín, nos permite obtener los diferentes servicios disponibles.

Dado que Alfresco usa el framework de Spring, cada uno de estos servicios y componentes está configurado mediante ficheros XML. En este artículo podeis encontrar cual es la estructura de estos ficheros y como funciona spring dentro de Alfresco.

Las 3 acciones más típicas que realizaremos con Alfresco serán las de subir, bajar y buscar documentos. Estas acciones se realizan mediante 3 de estos servicios apoyandose también en otros elementos ya existentes y probados dentro del mundo Open Source como Hibernate o Lucene:
- NodeService: En alfresco todos los elementos son tratados como nodos pero con diferentes propiedades. Por ejemplo, un fichero es un nodo con ciertas propiedades o metadatos como son el título, autor, fecha de creación e incluso el propio contenido no es más que un metadato. A su vez un espacio es también un nodo que tiene una asociación del tipo "contiene a" con otros nodos.
El servicio encargado de trabajar con los nodos será el NodeService y toda la información sobre los nodos, se almacenará en base de datos.

- ContentService: El contenido suele estar referido a los ficheros binarios que subimos o creamos dentro de Alfresco, es decir nuestro fichero Power Point, Word o PDF o cualquier tipo MIME que se nos ocurra. Estos ficheros binarios se almacenarán en el sistema de ficheros del servidor (contentstore) siguiendo una estructura de directorios ordenada por fecha.
Este servicio se encargará de la leer o escribir el contenido en el repositorio asi como de transformarlo de un tipo MIME a otro.

- SearchService: Cada vez que se sube contenido a Alfresco este es indexado de forma automática, tanto sus metadatos como el contenido de forma que no solo podemos buscar mediante el nombre del fichero o su autor si no también por el contenido.
Este servicio utiliza por debajo Apache Lucene para el indexado y las consultas.
Los indices generados por Lucene se almacenan también en el sistema de ficheros

Parte de esta información se encuentra orginalmente en:
http://wiki.alfresco.com/wiki/Alfresco_Repository_Architecture

3 comentarios:

  1. Saludos! está muy interesante este post.
    Quisiera saber si cuentas con información acerca de cómo Alfresco almacena los documentos... es decir más o menos cómo es el proceso...

    tengo entendido que los cambia a un archivo .bin y los guarda en alf_data\contentstore\... pero me gustaría saber cómo los transforma a .bin, cómo le asigna el nombre y mas o menos en cuáles tablas de la BD se almacena la metadata

    ResponderEliminar