Desarrollo del modelo de contenidos

LIBP-0002 (Libro de pautas)

Cuando se esté desarrollando un modelo de contenidos no se debe cambiar el modelo original de Alfresco sino extenderlo con tipos personalizados. Los modelos de contenidos personalizados deben tener definido su propio espacio de nombres para evitar así conflictos entre extensiones distintas del modelo original.

Pautas

TítuloCarácter
Definir un tipo de contenido raizObligatoria
Dimensionamiento del modeloObligatoria
Uso de aspectosObligatoria
Segmentar los espaciosObligatoria
Implementaciones de clasesObligatoria

Definir un tipo de contenido raiz

Se debe definir un tipo de contenido raíz del cual hereden todos los demás tipos de nuestro modelo si es que los requerimientos obligan a tener diferentes tipos o solo porque esto proporciona a los gestores de contenidos de un tipo catch-all para usar cuando ningún otro tipo pueda ser usado. Se puede usar como tipo base el cm:content.

Dimensionamiento del modelo

Se debe dimensionar bien el modelo tanto en la profundidad del mismo como en los tipos y propiedades que incluimos en él. Ampliar un modelo será fácil pero reducirlo no. Reducir los modelos puede hacer que se caiga en errores y hacer inaccesibles algunos contenidos ya que su el tipo o sus propiedades no coincidan con la definición que de ellos se hace en el modelo,Se debe tener un plan para realizar cambios en el modelo.

No existe ninguna regla que indique cuál debe ser el nivel máximo de profundidad recomendable para los modelos, pero alcanzar un nivel alto conllevará un rendimiento pobre de la aplicación. Cuando en modelo alcance varios niveles de profundidad por debajo de cm:content se debería realizar una prueba del modelo con una cantidad realista de datos, software y hardware para asegurar que no se esté creando un problema de rendimiento.

Uso de aspectos

Existen algunos recursos de definición que no deben olvidarse mientras se esta realizando un modelo personalizado. Así si en el modelo dos o más tipos tienen propiedades comunes, y si esas propiedades están siendo utilizadas para describir alguna característica común de alto nivel para todos los tipos, es mejor modelarlas como un aspecto. Puede que merezca la pena definir contenidos que no tengan propiedades ni asociaciones para diferenciar contenidos de otros tipos a efectos de búsquedas o para definir algún comportamiento especial solamente aplicable a instancias de este tipo. Las carpetas son tipos que por tanto pueden ser extendidos como todo lo demás en modelo. No se deben desarrolla extensiones del modelo para realizar clasificaciones de tipos si esta se puede realizar usando categorias.

Segmentar los espacios

Si el modelo creado es muy extenso se debe segmentar el modelo en múltiples espacios de nombres y múltiples ficheros XML para hacer mas facil su gestión. En cualquier caso los nombres de estos últimos deben ser descriptivos. No se deben tener ficheros llamados miModelo.xml o customModel.xml.

Implementaciones de clases

Por último para facilitar el desarrollo, ya que frecuente referirse al Qname de estos elementos, es recomendable implementar una clase java que corresponda con cada modelo de contenido que definamos. En cada clase Java se definen constantes que correspondan a los espacios de nombres del modelo, los nombres de los tipos, de las propiedades, de los aspectos, etc.