AnsweredAssumed Answered

Mini-Guía: AMPs

Question asked by ajv on Jun 3, 2008
Hola a todos,
Como lo prometido es deuda y hace unas semanas me ofrecí a dejar algo de documentación sobre AMPs…pues allá va. La mayoría está basado del wiki de Alfresco, pero además de traducirlo he añadido algunos retoques, y lo he adaptado a la problemática que tenían algunos usuarios para poder crear plantillas o cualquier otro tipo de contenido por defecto en Alfresco…
Tenía preparado un documento con toda la explicación, pero como no he encontrado la forma de subirlo al foro, pues escribiré un par de mensajes….espero que de esta forma, la lectura no resulte pesada… :?
Espero que os resulte útil, por lo menos un par de miembros ya me lo pidieron hace unos días…así que ya me contareis si cumple con sus espectativas  :D
A disfrutar!

[size=150]Antes de empezar…[/size]
Este documento no es una guía exhaustiva (ni mucho menos!) de las capacidades que puede ofrecer un AMP. Más bien es una guía de toma de contacto para que los usuarios-desarrolladores que quieran comenzar a desarrollar sus propios AMP no encuentren tantas trabas en sus inicios.
De esta forma, espero que las trabas y problemas con las que se pueda topar alguien que ya ha leído este documento sean muchísimo más fáciles de superar que cuando me encontré en la situación de desarrollar mis primeros AMPs y no existía apenas documentación.

[size=150]AMP - Alfresco Module Package. Un poco de teoría…[/size]

Introducción

Un archivo AMP o paquete de módulo de Alfresco es una colección de código, XML, imágenes, css, etc. que de forma conjunta extienden la funcionalidad o datos provistos por el repositorio estándar de Alfresco.
Puede contener plantillas personalizadas, nuevas categorías, modelos de contenido propios, conjunto de funcionalidades nuevas, etc.
Como regla general, todo lo que se considere una extensión instalable al repositorio de
Alfresco, debería estar incluido en un módulo e incluido en un fichero AMP.
Los ficheros AMP pueden instalarse en el WAR de Alfresco usando la herramienta de gestión de módulos (Module Management Tool). Una vez se ha mapeado el contenido del fichero AMP en el WAR de Alfresco mediante la herramienta de gestión de módulos, el WAR puede desplegarse en el servidor de aplicaciones. Cuando el repositorio arranca de nuevo, se detectarán los nuevos módulos instalados y el repositorio se inicializará incluyendo la nueva funcionalidad y datos de los módulos.

Estructura básica básica de un fichero AMP
Un fichero AMP es un fichero ZIP y tiene la siguiente estructura:

  /
  |
  |- /config
  |
  |- module.properties

[size=85]/config[/size]
Este directorio se mapeará dentro del directorio /WEB-INF/classes dentro del fichero WAR. Generalmente las configuraciones de interfaz de usuario y Spring residirán dentro de este directorio.
Será necesario proveer un fichero module-context.xml en el paquete alfresco.module.<moduloID>, que residirá en el directorio /config (Ver el apartado Contexto del Módulo para más detalles).
Los recursos que se utilicen en la extensión, tales como ficheros de importación xml o ACP’s, pueden residir en este directorio y a menudo es conveniente ubicarlos en el classpath para que sean cargados desde Spring.


[size=85]Fichero de propiedades de un Módulo[/size]
En todo módulo de extensión de Alfresco es obligatorio la existencia de un fichero module.properties. Éste contiene metadatos sobre el módulo, como su identificador, la versión del módulo, un título y una breve descripción de éste.

Ejemplo de fichero module.properties

# Ejemplo de un AMP (Alfresco Module Package)
module.id=org.alfresco.module.miAMP
module.aliases=miAMP
module.version=1.0
module.title=Titulo para miAMP
module.description=Esto es un ejemplo de AMP

module.repo.version.min=2.0

[size=70]module.id [obligatorio][/size]
Especifica el identificador único del módulo. Es importante que este identificador sea globalmente único para que no colisione con instalaciones de otros módulos.
Un identificador de módulo puede contener los siguientes caracteres: a-z, A-Z, punto, espacio, guión y subrayado.

[size=70]module.aliases [opcional][/size]
A partir de la versión 2.1 de Alfresco, el renombrado de módulos está soportado mediante el mecanismo de alias.

[size=70]module.version [obligatorio][/size]
Indica la versión actual del módulo. El número de versión se tiene en cuenta cuando se instalan módulos en el WAR. Determinará si es una instalación nueva o una actualización de una instalación previa.
El número de versión se contruye mediante valores numéricos separados por puntos. Por ejemplo, 2.1.79 es un número de versión válido, pero 2.3.4c no lo es.

[size=70]module.title [obligatorio][/size]
Representa el título del módulo.

[size=70]module.description [obligatorio][/size]
Representa la descripción del módulo.

[size=70]module.depends.* [opcional][/size]
Es una característica introducida desde la versión 2.1 de Alfresco para controlar las dependencias con otros módulos. Cuando se instala un módulo, puede requerir que otro módulo se encuentre ya instalado. Puede requerir que una versión específica del módulo del que depende, que el módulo previamente instalado sea de un rango de versiones en concreto o no requerir una versión en particular.

Algunos ejemplos de dependencias:
# Indicamos que requiere tener instalada cualquier versión del módulo 
# org.alfresco.module.ModuloA
module.depends.org.alfresco.module.ModuloA=*
# Indicamos que requiere tener instalada entre las versiones 1.4 y 2.0
# del módulo org.alfresco.module.ModuloB
module.depends.org.alfresco.module.ModuloB=1.4-2.0
# Indicamos que requiere tener instalada la versión 1.0 o posterior
# del módulo org.alfresco.module.ModuloC
module.depends.org.alfresco.module.ModuloC=1.0-*
# Indicamos que requiere tener las versiones 1.0, 1.5 o 2.0 instalada
# del módulo org.alfresco.module.ModuloD module.depends.org.alfresco.module.ModuloD=1.0, 1.5, 2.0
# Indicamos que requiere tener cualquier versión instalada del módulo # org.alfresco.module.ModuloE inferior a la 1.0
module.depends.org.alfresco.module.ModuloE=*-0.9.9

Contexto del Módulo
Un módulo es inicializado cuando el repositorio de Alfresco carga la configuración de Spring de dicho módulo.
La configuración Spring de un módulo debe estar ubicada en el paquete alfresco.module.<moduleId> y debería llamarse module-context-xml.
Cuando el servicio de módulos se arranca, todos los ficheros module-context.xml encontradas se cargan, dejando listos para usar los módulos instalados.
El fichero module-context.xml es un fichero estándar de configuración Spring y típicamente define nuevos beans, nuevos modelos de contenido, configuraciones del cliente web y nuevos datos a incluir en el repositorio.
En los módulos grandes, la configuración suele dividirse en varias configuraciones más reducidas con el fin de estructurar mejor la configuración del módulo.

************************************
Bueno, hasta aquí la primera parte…
Ahora voy con el ejemplo.  :mrgreen:

Outcomes