lunes, 12 de abril de 2010

Alfresco Web Scripts

Alfresco incluyó en su versión 2.1 el framework de web scripts, una API basada en tecnología RESTful que proporcionó una forma fácil, rápida y potente de interactuar con el repositorio de contenidos y de integrar Alfresco con otros sistemas. Desde entonces Alfresco ha seguido apostanto por esta solución y la ha convertido en la principal herramienta de desarrollo e integración de su última versión.

Cada web script está vinculado a un método HTTP y a una URL y puede devolver resultados en múltiples formatos, desde HTML hasta JSON, pasando por XML o RSS.

Tipos de web scripts

Hay dos tipos de web scripts:

  • Web scripts de datos: que devuelven información en cualquier formato, como CSV, XML u objetos JS. Estos web scripts permiten hacer llamadas a Alfresco desde otras aplicaciones u otras extensiones de Alfresco. Por ejemplo, el componente de OpenSearch está construido como una serie de web scripts.
  • Web scripts de interfaz de usuario: permiten construir dinámicamente interfaces de usuario dentro del cliente de Alfresco o en otras aplicaciones. Se pueden crear componentes ricos, cada uno con su propia apariencia. Estos web scripts pueden funcionar de forma independiente o combinados con web scripts de datos.
Componentes de un web script

Los componentes básicos de los web scripts son tres, aunque no son todos obligatorios:

  • Descripción: es un fichero XML que describe la URL que iniciará el script. Entre los datos que se pueden informar están el nombre, la descripción y las necesidades de autentiación y transaccionalidad del script. Este componente es obligatorio.
  • Script de ejecución: es un fichero Javascript que será el encargado de ejecutar la lógica del script. El script tiene acceso a todos los argumentos de la URL, los servicios del repositorio y la mayoría de los objetos de la API Javascript de Alfresco. Esto es posible porque ALfresco utiliza Mozilla Rhino para Java que permite a los fichero JS acceder a los objetos java utilizando una notación simple de beans. Este componente no es obligatorio.
  • Plantillas de salida: pueden ser varias, para diferentes formatos de salida. Son plantillas de freemaker que construyen la salida del script en los formatos deseados. La respuesta de la URL se construye a partir de una de las plantillas proporcionadas al web scripts y se escoge la adecuada en función de tipo de contenido especificado en la petición. Las plantillas tienen acceso a todos los argumentos de la URL y los puntos de acceso habituales al repositorio de Alfresco. Cómo mínimo ha de existir una plantilla por web script.
La forma que tienen estos componentes de interactuar es la siguiente:


  1. La URL con la petición llega al Web Script REST dispatcher.
  2. El dispathcer localiza el Web Script adecuado para la URL, se autentica si es necesario y ejecuta el script. En caso de no localizar el web script o no conseguir autenticarse, devuelve un código de error HTTP.
  3. Desde el script se tiene acceso a todos los servicios del repositorio de contenidos para buscar, modificar, borra y crear información.
  4. El resultado del script se renderiza utilizando las plantillas freemaker proporcionadas al Web Script y según el tipo de respuesta solicitado o con el formato por defecto en caso de que no se indique el tipo de respuesta preferido.
  5. El dispatcher envía la respuesta renderizada utilizando el mismo protocolo de la petición.
  6. El cliente del web script recibe la respuesta en el formato de la petición.
Java-backed web scripts

En ocasiones los scripts y las plantillas no son suficiente para implementar la funcionalidad requerida. En estos casos es posible recurrir a un bean de Java definido en el contexto de Spring de Alfresco. Estos beans pueden tomar el control de la ejecución o trabajar conjuntamente con el script y las plantillas.

La definición de estos beans en el contexto de Spring está estrechamente ligada con el fichero de descripción del Web Script y, como cualquier otro bean de Spring de Alfresco, otros servicios del nucleo de Alfresco pueden utilizarse en el bean mediante inyección de dependecias.

En definitiva, este framework supone una herramienta muy potente y flexible para abrir el repositorio de Alfresco utilizando estándares al alcance de cualquier equipo de desarrollo

No hay comentarios: