El pasado viernes comencé una serie de posts relativos al modelado
de contenidos en Alfresco ECM. Como empecé por el final voy a
definir algo de terminología y conceptos clave en el lenguaje
documental de Alfresco, ara los que empiezan. Lo que sigue es una
traducción parcial basada en el excelente tutorial de Jeff Potts sobre
tipos documentales en Alfresco y que referencio más abajo.
de contenidos en Alfresco ECM. Como empecé por el final voy a
definir algo de terminología y conceptos clave en el lenguaje
documental de Alfresco, ara los que empiezan. Lo que sigue es una
traducción parcial basada en el excelente tutorial de Jeff Potts sobre
tipos documentales en Alfresco y que referencio más abajo.
Un modelo de contenido describe los datos que se están guardando en
el repositorio. Conforma una parte esencial y crítica, ya que sin él
Alfresco sería algo más que un sistema de ficheros. Un modelo de
contenido presenta la siguiente información clave:
el repositorio. Conforma una parte esencial y crítica, ya que sin él
Alfresco sería algo más que un sistema de ficheros. Un modelo de
contenido presenta la siguiente información clave:
- Los tipos de datos fundamentales y como deben persistirse en base
de datos. Sin un modelo de contenido, Alfresco no sabría la
diferencia entre un literal y una fecha. - Los tipos documentales (tipos de datos de alto
nivel) como carpetas y contenidos, así como los tipos documentales
personalizados (procedimiento, factura, contrato…). -
Aspectos como “auditable” o “clasificable” o
aspectos personalizados como “Datos de factura” o “Datos de empresa”… - Propiedades (o metadatos) específicos de cada
tipo de contenidos. - Ligaduras (constraints) de ciertas propiedades,
por ejemplo, una lista restringida de datos. - Como indexar el contenido para las búsquedas.
- Las relaciones (asociaciones) entre los tipos documentales.
Los modelos de contenido de Alfresco están construidos en un
conjunto de bloques relativos a:
conjunto de bloques relativos a:
- Tipos (types)
- Propiedades (properties)
- Asociaciones (associations)
- Ligaduras (constraints)
- Aspectos (aspects)
Tipos documentales
Los tipos documentales son como las clases en el mundo de la
programación orientada a objetos. Se utilizan dentro de los diferentes
modelos documentales, tienen propiedades asociadas (que usualmente
llamamos metadatos) y pueden heredar características y propiedades de
otros tipos documentales base de Alfresco, como por ejemplo persona
(cm:person), carpeta (cm:folder) o contenido (cm:content). Hablamos
normalmente de extender tipos documentales base, basados en un
documento (por ejemplo, una factura, un registro o un documento
electrónico) o una carpeta (por ejemplo, un expediente), es decir, que
heredan las propiedades fundamentales de esos tipos base. La herencia
de los tipos documentales es un concepto muy importante en el modelado
de contenidos. Cabe notar que los tipos, propiedades, constraints,
asociaciones y aspectos tienen nombres únicos dentro de un modelo. Un
modelo utiliza un espacio de nombres con una abreviatura como prefijo.
programación orientada a objetos. Se utilizan dentro de los diferentes
modelos documentales, tienen propiedades asociadas (que usualmente
llamamos metadatos) y pueden heredar características y propiedades de
otros tipos documentales base de Alfresco, como por ejemplo persona
(cm:person), carpeta (cm:folder) o contenido (cm:content). Hablamos
normalmente de extender tipos documentales base, basados en un
documento (por ejemplo, una factura, un registro o un documento
electrónico) o una carpeta (por ejemplo, un expediente), es decir, que
heredan las propiedades fundamentales de esos tipos base. La herencia
de los tipos documentales es un concepto muy importante en el modelado
de contenidos. Cabe notar que los tipos, propiedades, constraints,
asociaciones y aspectos tienen nombres únicos dentro de un modelo. Un
modelo utiliza un espacio de nombres con una abreviatura como prefijo.
Propiedades (metadatos)
Las propiedades son metadatos asociados con un tipo particular. En
estas se definen el tipo de dato que manejamos y que incluye los tipos
básicos fundamentales como literales (strings), fechas (dates) o
booleanos. Los tipos fundamentales básicos están definidos por defecto.
estas se definen el tipo de dato que manejamos y que incluye los tipos
básicos fundamentales como literales (strings), fechas (dates) o
booleanos. Los tipos fundamentales básicos están definidos por defecto.
Ligaduras (constraints)
Las constraints pueden ser usadas para restringir el valor de un
valor en Alfresco cuando este se almacena en Alfresco. Hay de cuatro tipos:
valor en Alfresco cuando este se almacena en Alfresco. Hay de cuatro tipos:
-
REGEX: Se usa para restringir en base a una
expresión regular (por ejemplo un CIF) -
LIST: Se utiliza para restringir en base a una
lista de valores (por ejemplo, entre los idiomas disponibles de un documento) -
MINMAX: Se utiliza para restringir las cotas
superior e inferior de un valor numérico. Por ejemplo una propiedad
de año valida entre 1970 y 2014. -
LENGTH: Se utiliza para restringir la longitud de
un literal.
Las constraints pueden definirse una vez y ser reutilizadas. Por
ejemplo, para el nombre de fichero el modelo de contenido de Alfresco
define una constraint denominada cm:filename que define una expresión
regular. No todos los nombres son posibles, por ejemplo el nombre no
puede acabar con un . o no puede utilizarse la /.
ejemplo, para el nombre de fichero el modelo de contenido de Alfresco
define una constraint denominada cm:filename que define una expresión
regular. No todos los nombres son posibles, por ejemplo el nombre no
puede acabar con un . o no puede utilizarse la /.
Como alternativa a la constraints de tipo lista a veces se utilizan
listas de datos.Os dejo el link de un artículo previo aquí.
listas de datos.Os dejo el link de un artículo previo aquí.
Asociaciones
Las asociaciones definen las relaciones entre tipos. Existen de dos tipos:
- Relaciones (peer association) entre dos objetos, sin subordinación.
- Relaciones hijo-padre (child association): Relación subordinada
padre – hijo de tal manera que si se borra al padre, los hijos son
borrados (borrados en cascada).
Un ejemplo por defecto en el modelo de contenidos de Alfresco, de
esto ultimo es cm:contains. La asociación cm:contains relaciona una
carpeta cm:folder con cada documento en su interior. Os dejo también
un ejemplo práctico aquí.
esto ultimo es cm:contains. La asociación cm:contains relaciona una
carpeta cm:folder con cada documento en su interior. Os dejo también
un ejemplo práctico aquí.
Aspectos
La herencia de propiedades tiene muchas implicaciones en el modelo
de contenidos. En ciertos casos, los modelos planteados no son
especialmente jerárquicos si no que necesitan de estructuras más
flexibles, transversales y planas. Los aspectos son características de
Alfresco (cm:versionable, cm:auditable o cm:taggable son algunos de
los aspectos por defecto de Alfresco) y contienen en general conjuntos
de propiedades dinámicas que pueden aplicarse a diferentes tipos
documentales. Es un concepto en sí, mucho más dinámico que una clase o
tipo documental, ya que sus propiedades se pueden asignar en cualquier
momento, mientras que las propiedades del tipo son asignadas en la
inicialización de la clase. En ciertos contextos, se puede hablar de
ellos como tipos documentales de segundo orden.
de contenidos. En ciertos casos, los modelos planteados no son
especialmente jerárquicos si no que necesitan de estructuras más
flexibles, transversales y planas. Los aspectos son características de
Alfresco (cm:versionable, cm:auditable o cm:taggable son algunos de
los aspectos por defecto de Alfresco) y contienen en general conjuntos
de propiedades dinámicas que pueden aplicarse a diferentes tipos
documentales. Es un concepto en sí, mucho más dinámico que una clase o
tipo documental, ya que sus propiedades se pueden asignar en cualquier
momento, mientras que las propiedades del tipo son asignadas en la
inicialización de la clase. En ciertos contextos, se puede hablar de
ellos como tipos documentales de segundo orden.
Enlaces:
- Un tutorial excelente para iniciarse en Alfresco de la mano de
Jeff Potts y entre ellos el relativo a Working with Content Types” →
http://ecmarchitect.com/alfresco-developer-series - Training de Alfresco via blog de zylk.net → http://www.zylk.net/actualidad/training-en-alfresco-ecm-via-blog-de-zylk
- Constraints de tipo lista y variantes en el modelo de contenidos
de Alfresco –> http://www.zylk.net/actualidad/constraints-de-tipo-lista-y-variantes-en-el-modelo-de-contenidos-de-alfresco - Asociaciones en Alfresco Share –> http://www.zylk.net/actualidad/asociaciones-en-alfresco-share