Está en la página 1de 297

Alfresco.

La gestin de contenidos
empresarial
Ponente

Jess Salinas Revelles


21 octubre 2014
Hotel VP Jardn Metropolitano
Av. de la Reina Victoria, 12. Madrid
ndice del seminario

Introduccin a ECM.
Alfresco ECM de un vistazo.
Profundizando en la plataforma.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin a ECM

Qu es la gestin de contenidos
empresarial?
Situacin actual.
Tendencias del mercado.
Qu es la gestin de contenidos
empresarial?
En los ltimos aos, se ha producido un gran
crecimiento en el volumen de informacin que las
empresas generan y almacenan diariamente.
El almacenamiento desmedido de facturas, informes,
albaranes, mails, ... , nos obliga a implantar
plataformas capaces de procesar toda esta
documentacin, organizarla y poder extraer de ella el
valor adicional que nos ofrece.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Qu es la gestin de contenidos
empresarial?
Enterprise Content Management (ECM).
Tecnologa capaz de capturar, crear, almacenar,
gestionar, buscar y distribuir la informacin sobre la
que trabaja.
Una herramienta de este tipo debe posibilitar la
integracin entre los diferentes procesos de negocio,
incluyendo repositorios heterogneos, por tanto,
permitir el almacenamiento y gestin de herramientas
ofimticas, informacin procedente de plataformas
web, etc.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Qu es la gestin de contenidos
empresarial?
Ms all de lo comentado anteriormente, ECM se puede
analizar desde dos perspectivas:
Planteamiento estratgico: ECM ayuda a las empresas a
controlar sus contenidos y, de esa forma, mejorar su eficiencia,
colaboracin y hacer que su informacin sea ms fcil de
compartir.
Herramienta software: ECM es un conjunto de funcionalidades
y/o aplicaciones para gestionar el ciclo de vida de los contenidos
que fluyen dentro de la organizacin.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Situacin actual

Las empresas, instituciones y organismos pblicos


acumulan cada vez un mayor nmero de documentos.
El entramado de necesidades y obligaciones al que se
enfrentan las empresas hace muy costoso todo el
proceso de guardia y custodia de textos, as que lo ms
efectivo y rentable es contratar a compaas dedicadas
a la gestin documental.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Tendencias del mercado

La gestin documental, debido a la gran cantidad de


contenidos y fuentes de informacin ha evolucionado
hacia la gestin de contenidos empresariales.
Las necesidades que solicita el mercado obligan a los
proveedores a que sus productos sean cada vez ms
flexibles e integrados. Es por esto que se tiende a
estandarizar la arquitectura y las tecnologas.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Tendencias del mercado

Nos encontramos con dos tipos de solucin:


Suite muy amplia de productos con funcionalidades muy escalables
y que abarquen todas las actividades de la empresa.
Productos con funcionalidad ms limitadas de gestin documental,
de un precio significativamente menor, que cubran todas las
necesidades de gestin documental de una pequea o mediana
empresa.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Tendencias del mercado

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Alfresco ECM de un vistazo

Qu es Alfresco?
Su arquitectura.
Conceptos importantes:
Tipos personalizados.
Java Foundation services y WebScripts
en Alfresco.
Otros.
Qu es Alfresco?

Es un sistema de Gestin de Contenidos Empresarial


(ECM).
Normalmente utilizado para Gestin de Documentos
Digitales en entornos exigentes (sometidos a
importantes requisitos de escalabilidad, alta
disponibilidad, capacidades de integracin,
auditabilidad, etc.).

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Qu es Alfresco?

Open Source: Tenemos el cdigo disponible.


Fcilmente extensible y basado en tecnologas JavaEE
estndares y proyectos Open Source de xito como
Apache Lucene, OpenOffice, Spring Framework,
SWFTools, Quartz Scheduler, etc.
Maduro y con multitud de casos de xito
documentados.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Qu es Alfresco?

Dos versiones: Community y Enterprise. Esta ltima


con un soporte profesional, con procesos de QA
estrictos, SLA, etc.
La versin Community es suficientemente buena para
ponerla en produccin en proyectos. Es gratuita.
La versin Enterprise es de pago (aunque se puede
probar gratuitamente) y se recomienda para entornos
crticos.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Qu es Alfresco?

Alfresco gestiona todos los contenidos en nuestra


empresa: documentos, imgenes, fotos, pginas web,
registros, documentos xml y cualquier otro fichero
semiestructurado o no estructurado.
Los servicios que ofrece Alfresco son una de sus
grandes ventajas. Permiten gestionar el contenido de
los documentos y caractersticas, tales como, gestin
de metadatos, control de versiones, gestin del ciclo
de vida, flujo de trabajo, bsquedas, asociaciones a
otros contenidos, etiquetado, comentarios.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Qu es Alfresco?

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Una aplicacin web?

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Unidad accesible va ftp?

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Una carpeta compartida?

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Qu es Alfresco?

Para los usuarios finales, Alfresco se presenta como


un conjunto de aplicaciones o extensiones de sus
propias aplicaciones que gestionan sus contenidos.
Alfresco puede aparecer como una unidad compartida
con protocolo CIFS, WebDAV, IMAP y SharePoint.
Tambin proporciona por defecto un conjunto de
aplicaciones para navegar por los contenidos, buscar,
gestionar, etc.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Qu es Alfresco?

Durante mucho tiempo el usuario final ha asociado


Alfresco con Alfresco Explorer, una de las aplicaciones
web que nos permite interactuar con la solucin:

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Qu es Alfresco para el desarrollador?

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Qu es Alfresco para el desarrollador?

Para el desarrolllador, Alfresco ECM es una plataforma


que se despliega en un servidor JavaEE y que tiene
asociada una base de datos.
Alfresco nos ofrece documentacin relacionada con el
Stack de Tecnologas que soporta. Por ejemplo, puede
ejecutarse sobre:
Tomcat.
JBoss.
Oracle Weblogic.
Websphere.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Qu es Alfresco para el desarrollador?

Para el desarrolllador, Alfresco ECM proporciona un


repositorio escalable y una plataforma de gestin que
simplifica el desarrollo.
Expone infinidad de capacidades de gestin en forma
de servicios.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Qu es Alfresco para el desarrollador?

Entornos de desarrollo:
Alfresco SDK.
Alfresco Maven SDK.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Qu es Alfresco para el negocio?

Para el negocio, Alfresco ha sido diseado para


soportar todo tipo de requisitos relacionados con los
contenidos: herramientas para la gestin de
documentos, aplicaciones, interfaces para trabajo de
oficina.
La gestin de flujos de trabajo soporta diferentes
procesos de negocio.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Qu es Alfresco?

El ncleo de Alfresco es un repositorio gestionado


por un servidor.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Qu es Alfresco?

Alfresco incorpora una arquitectura moderna. El


sistema ha crecido como una aplicacin Java, eso
significa que se puede ejecutar en cualquier plataforma
donde corre JavaEE.
El ncleo se basa en la plataforma Spring,
proporcionando a Alfresco la capacidad de modularizar
los diferentes elementos del sistema: versionado,
seguridad, reglas, etc.
Alfresco utiliza estrategias de scripting para
simplificar la incorporacin de nuevas funcionalidades
dentro del sistema. Esto se conoce como Web scripts y
puede utilizarse para la gestin de datos o servicios de
presentacin.
Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles
Qu es Alfresco?

Entre sus caractersticas de base ms significativas


podemos destacar:
Definicin de modelos de contenidos personalizados.
Facilidad a la hora de extender las funcionalidades de la
plataforma.
Facilidad de integracin con sistemas externos.
No debemos olvidar su gestin de flujos de trabajo y
motor de bsqueda.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Qu es Alfresco?

NODO DE ALFRESCO DE TIPO "INFORME TCNICO"

INFORME TCNICO
INFORMACIN ESTRUCTURADA
MANEJADA POR EL GESTOR DOCUMENTAL

Nmero de informe : INF000XXX


Ttulo : XXXXX
Autor : XXXXXXX
Etiquetas o palabras clave: XXX , YYY, ZZZ
Responsables: <Lista de usuarios del sistema o lista de
nombres>
InformeTecnico.doc Proceso: XXXX
<<CUALQUIER OTRO METADATO QUE QUIERA
DEFINIR EL CLIENTE>>

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Qu es Alfresco?

El desarrollador puede aadir nuevas funcionalidades


dentro de Alfresco mediante:
Diseo de acciones: es una unidad de trabajo que se ejecuta
sobre un nodo, por ejemplo, mover un nodo, borrar un nodo, etc.
Alfresco incorpora un conjunto de acciones predefinidas: check-
out, check-in, Aadir aspecto, borrar aspecto, enviar mail, etc.
Diseo de webscripts.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Qu es Alfresco?

Facilidad de integracin con sistemas externos:


Webservices de Alfresco.
Estndar CMIS.
...

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Su arquitectura

Introduccin.
Servidor de contenidos de Alfresco.
Protocolos.
Los servicios de Alfresco.
Conclusin.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin

La gestin de contenidos empresarial cubre un


amplio rango de aplicaciones: gestin de documental,
gestin de contenidos web, gestin de registros,
bsqueda, etc.
La arquitectura de Alfresco ha sido diseada para ser
capaz de soportar los requisitos asociados a todas
estas aplicaciones.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin

Cada una de estas disciplinas tiene una serie de


caractersticas nicas y otras que se solapan, de tal
forma que, el diseo de cada capacidad no se ha
realizado de forma aislada sino en el contexto del
sistema completo.
Alfresco pretende ser lo ms simple posible en todos
los mbitos: desarrollo, personalizacin, despliegue y
uso.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin

La solucin ms simple y extendida de una solucin


ECM es una unidad compartida. La arquitectura
Alfresco tiene como objetivo ser tan simple como una
unidad compartida.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin

La arquitectura de Alfresco puede resumirse en este


esquema:

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin

El almacenamiento de contenidos, por defecto, se


realiza de forma combinada en base de datos y en el
sistema de ficheros.
Por defecto, los documentos fsicos se almacenan en el
sistema de ficheros y sus metadatos asociados en la
base de datos relacional.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin

Servidor de contenidos de Alfresco:


Agrupa un repositorio de contenidos y un conjunto de
servicios adicionales para construir la solucin.
El repositorio de contenidos ha sido definido siguiendo los
siguientes estndares:
CMIS (Content Management Interoperability Services).
JCR (Java Content Repository / JSR-170/286).
Estos estndares proporcionan una especificacin para la
definicin de contenidos y su almacenamiento, recuperacin de
contenidos, versionado, etc.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin

Servidor de contenidos de Alfresco (cont.):


El servidor de aplicaciones de contenido de Alfresco proporciona la
siguiente categora de servicios sobre el repositorio de contenidos:
Servicios de contenidos (por ejemplo, transformacin,
etiquetados, extraccin de metadatos).
Servicios de control (por ejemplo, flujos de trabajo, gestin de
registros).
Servicios de colaboracin (por ejemplo, actividades, wiki).

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin

Clientes de Alfresco:
Clientes web de Alfresco.
Clientes web externos.
...

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin

Alfresco Explorer aparece desde la primera versin de Alfresco. Ha


sido implementado mediante Java Server Faces (JSF) y es altamente
personalizable, pero y muy IMPORTANTE, slo puede desplegarse
como parte del servidor de aplicaciones de contenidos de Alfresco.
Alfresco Share es un cliente algo ms joven, centrado en aspectos
de colaboracin. El concepto principal de Alfresco Share es la
nocin de sitio web: un lugar donde los usuarios colaboran en la
generacin de contenidos. Ha sido desarrollado usando Spring Surf.
Alfresco Share puede desplegarse de forma independiente al
servidor de aplicaciones de contenidos de Alfresco. Durante los
ltimos aos, ha evolucionado y ahora soporta todas las
funcionalidades que ofrece Alfresco Explorer.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Servidor de contenidos de Alfresco

La responsabilidad ms importante del servidor es


proveer de un conjunto de servicios para ser usados
en soluciones ECM. Se puede entender como una caja
negra donde almacenamos y gestionamos contenidos.
Alfresco Content Application Server expone un
conjunto de interfaces remotas y pblicas para permitir
la comunicacin con clientes.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Servidor de contenidos de Alfresco

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Servidor de contenidos de Alfresco

El servidor est formado por un conjunto de capas. Los


elementos sobre los que se contruye el sistema son:
La base del sistema es un conjunto de elementos de
infraestructura: configuracin, autenticacin, permisos y
transacciones que afectan a cualquier funcionalidad. Esta
infraestructura tambin protege al servidor de atarse a una
implementacin especfica (gestores de transacciones o
mecanismos de cach).
El repositorio de contenidos de Alfresco se construye sobre
la base de esta infraestructura. Cada funcionalidad del repositorio
se mapea a un mdulo con su propia especificacin e
implementacin.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Servidor de contenidos de Alfresco

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Servidor de contenidos de Alfresco

El repositorio de contenidos es el sistema que se


encarga de manejar los contenidos dentro de Alfresco.
Sus responsabilidades son:
Definicin de la estructura de los contenidos.
Creacin, actualizacin y borrado de contenidos, metadatos
asociados y relaciones.
Consultas a los contenidos, control de acceso (permisos) y
versionado.
Renderizado de contenidos, locking, eventos, auditora.
Importacin y exportacin.
Multi-idioma.
Reglas y acciones.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Servidor de contenidos de Alfresco

Content Repository

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Servidor de contenidos de Alfresco

El repositorio de contenidos proporciona una


implementacin de estos servicios y los expone
mediante:
API de Alfresco,
CMIS y
API Java JSR-170.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Servidor de contenidos de Alfresco

El ncleo del repositorio es un motor de


almacenamiento, responsable de almacenar y
recuperar los contenidos que se gestionan.
Este motor trabaja sobre dos conceptos:
Nodo: esta entidad maneja los metadatos y estructura de un
contenido. Un nodo soporta propiedades y relaciones con otros
nodos.
Contenido: contenido a guardar, por ejemplo, documento Excel y
ODT.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Servidor de contenidos de Alfresco

Como ya se ha comentado anteriormente, Alfresco


expone intefaces pblicas y remotas como nico
elemento visible desde el cliente. Existen dos tipos:
APIs remotas: permiten interaccin programtica con los
servicios del servidor.
Protocolos que ofrecen esos mismos servicios a los usuarios
mediante un protocolo asociado al cliente.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Servidor de contenidos de Alfresco

Intefaces pblicas y remotas:

Remote APIs

Protocols

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Protocolos

Para permitir el uso de Alfresco en diferentes mbitos,


el servidor de contenidos de Alfresco soporta
diferentes protocolos para la gestin de carpetas y
documentos.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Protocolos

CIFS (Common Internet File System)


Es un protocolo que permite la proyeccin de Alfresco como una
unidad de ficheros compartida nativa.
Cualquier cliente puede leer y escribir en las unidades en las que
puede leer y escribir en Alfresco, permitiendo el uso de unidades
compartidas en vez del ECM sin que el usuario se entere.
Alfresco adquiri la nica implementacin de servidor CIFS basada
en Java, JLAN.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Protocolos

WebDAV (Web-based Distributed Authoring and


Versioning):
Es un conjunto de extensiones de HTTP que permite gestionar
ficheros mediante servidores web.
Muchas herramientas de contenidos ofrecen soporte a WebDAV.
Tambin existe herramientas que permite montar servidores
WebDAV como unidad de red.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Protocolos

FTP (File Transfer Protocol):


Es un protoloco estndar de red para el intercambio y
manipulacin de ficheros a travs de la red.
Este protocolo es particularmente til en los procesos de carga
masiva de carpetas y ficheros en el repositorio de contenidos de
Alfresco.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Protocolos

IMAP (Internet Message Access Protocol) es un


estndar que permite acceder a email mediante un
servidor de mail remoto. Alfresco se comporta como
servidor de correo, permitiendo a clientes de correo
como Microsoft Outlook, Apple Mail, y Thunderbird
conectar e interactuar con carpetas y ficheros dentro
del repositorio de contenidos de Alfresco.
Microsoft SharePoint, protocolo que permite Alfresco
actuar como servidor SharePoint, creando integracin
con la suite Microsoft Office. Permite al usuario
familiarizado con esta suite trabajar sobre documentos
dentro de Alfresco.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Los servicios de Alfresco

Introduccin.
Servicios del repositorio de contenidos.
Servicios de aplicacin de contenidos.
Las APIs de Alfresco.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin

El servidor de contenidos de Alfresco proporciona


funcionalidades para capturar, gestionar y colaborar
sobre contenidos usando servicios. Estos servicios son
la base de la funcionalidad proporcionada por Alfresco.
Alfresco expone estos servicios en varios niveles,
incluyendo Java, scripting, REST, y servicios web.
Algunos servicios son internos y otros son pblicos.
Por ejemplo, los servicios Java son internos.
Los servicios se dividen en dos categoras.
Servicios del repositorio de contenidos.
Servicios de aplicacin de contenidos.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin

La mayora de los servicios en Alfresco se construyen


en tres capas: ncleo Java, servicio de script pblico y
API RESTful.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Servicios del repositorio de contenidos

Los servicios del repositorio de contenidos estn


escritos en Java y son los servicios fundamentales
para la gestin de contenidos.
Son los servicios Java internos.
Gestin de ficheros y carpetas.
Versionado y checkin/checkout.
Auditora.
Autenticacin, autorizacin y permisos.
Modelado.
Bsqueda.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Servicios de aplicacin de contenidos

Los servicios de aplicacin de contenidos extienden


los servicios del repositorio para proporcionar
capacidades evolucionadas necesarias para las
aplicaciones colaborativas que manejan contenidos
ricos. Se organizan como:
Servicios de contenidos: reglas y acciones, transformaciones,
extraccin de metadatos.
Servicios de control: flujos de trabajo, proyectos web, etc.
Servicios de colaboracin: comentarios, etiquetado, actividades,
etc.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Las APIs de Alfresco

El servidor de contenidos de Alfresco ofrece dos tipos


de APIs:
APIs remotas: usadas por clientes que se comunican con el
servidor de contenidos de Alfresco de forma remota.
APIs embebidas: usadas por extensiones que han sido
desplegadas y se ejecutan dentro del servidor de contenidos de
Alfresco.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Las APIs de Alfresco

Remote APIs

Embeddeb APIs

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Las APIs de Alfresco

Las APIs embebidas son usadas por extensiones de


Alfresco que se ejecutan directamente contra el
Servidor de contenidos de Alfresco. Existen tres APIs
principales:
Alfresco Java Foundation API: proporciona un conjunto de
interfaces Java para el acceso a los servicios del repositorio.
API JavaScript: javascript que nos permite acceder a los
servicios de base.
API Template: API de slo lectura diseada para renderizar
salidas HTML, XML, JSON, y texto usando el motor de plantillas
FreeMarker. Esta API usa una vista orientada a objetos del
repositorio de contenidos combinndola con las plantillas.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Las APIs de Alfresco

Las APIs remotas permiten a clientes conectarse desde


una capa independiente para comunicarse con el
servidor de aplicaciones de contenidos de Alfresco.
Estas APIs se basan en servicios web basados en
protocolos RESTful y CMIS, permitiendo as el
desarrollo contra estas APIs usando un rango de
lenguajes amplio (Java, PHP, Ruby, and .NET).

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Las APIs de Alfresco

APIs remotas:

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Conclusin

Alfresco ECM, gracias a su potente arquitectura, nos


ofrece infinidad de alternativas de integracin.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Como usuario final accediendo a la
informacin de forma directa

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Como usuario final accediendo a
documentacin a travs de Alfresco Share

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Integracin con Alfresco totalmente
transparente para el usuario

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Tipos personalizados

Introduccin.
Diccionario de datos.
Creacin de un nuevo modelo de contenidos.
Despliegue de modelo de contenidos.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin

Alfresco trabaja con el concepto de MODELO DE


CONTENIDOS para gestionar los contenidos que maneja.
Alfresco incorpora un metamodelo en su estructura, es
decir, la capacidad para que nosotros declaremos nuevos
modelos de contenido.
Un modelo de contenido define la estructura de
informacin que acompaar a nuestros documentos
digitales.
Esta definicin nos permite dotar de semntica al
documento para que posteriormente se puedan
implementar bsquedas y procesos ms eficientes e
inteligentes.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin

Un modelo de contenidos es un conjunto de tipos de


contenido y aspectos. Los modelos de contenidos
definidos son identificados de forma unvoca mediante
espacios de nombre (namespaces).

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin

El modelo de contenidos por defecto se conoce en


Alfresco como Diccionario de Datos o Data
Dictionary y soporta ser extendido para que el
repositorio pueda manejar nuevos modelos de
contenido.
El Diccionario de Datos describe las estructuras del
contenido a travs de propiedades, asociaciones y
reglas o restricciones.
El Diccionario de Datos es un metamodelo que
permite describir uno o ms modelos de contenido
especficos.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Diccionario de datos

Define dos clases de estructuras: tipos de contenido y


aspectos de contenido. Son conceptos que vamos a
manejar de forma intensiva: TIPO y ASPECTO.
La diferencia entre Content Type y Content Aspect es
que un contenido slo tiene un tipo que es el que
define su estructura fundamental. Sin embargo, un
mismo contenido puede tener muchos aspectos que
son conceptos transversales aplicables a cualquier tipo
de contenido.
Un mismo nodo puede tener un aspecto en un
momento temporal y posteriormente dejar de tenerlo.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Diccionario de datos

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Diccionario de datos

El diccionario de datos define los siguientes modelos:


System: describe conceptos a nivel del repositorio. http://
www.alfresco.org/model/system/1.0. Prefijo sys.
Content: describe el modelo de contenido del dominio estndar (ej.
Carpeta, Fichero, Dublin-Core, ...). http://www.alfresco.org/
model/content/1.0. Prefijo cm.
Application: describe el modelo de aplicacin de Alfresco (ej.
glosario, ...). http://www.alfresco.org/model/application/1.0.
Prefijo app.
Dictionary: describe el metamodelo del Diccionario de Datos
(enteros, flotantes, fechas...). http://www.alfresco.org/model/
dictionary/1.0. Prefijo d.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Diccionario de datos

El diccionario define un conjunto de tipos de datos


soportados por defecto, es decir, vamos a poder
manejar textos, nmeros, fechas, booleanos, etc, sin
necesidad de tener que definir nuevos tipos:

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Diccionario de datos

Los tipos de dato content, folder y person se encuentra


en el modelo Content, es por eso que al referenciarlos
se utiliza cm:content, cm:folder y cm:person.
Los tipos de dato int, boolean, double y date se
encuentra en el modelo Dictionary, es por eso que al
referenciarlos se utiliza d:int, d:boolean, d:double y
d:date.
Todos los detalles en la wiki de Alfresco:
http://wiki.alfresco.com/wiki/Data_Dictionary_Guide.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Diccionario de datos

Alfresco almacena, por defecto, los documentos como


nodos de tipo cm:content que estn formados por un
fichero binario y por los metadatos bsicos (titulo,
autor, fecha de modificacin, etc.)
Podemos heredar de cm:content para hacer un nuevo
tipo Informe Tcnico.
NODO DE ALFRESCO DE TIPO "INFORME TCNICO"

INFORME TCNICO
INFORMACIN ESTRUCTURADA
MANEJADA POR EL GESTOR DOCUMENTAL

Nmero de informe : INF000XXX


Ttulo : XXXXX
Autor : XXXXXXX
Etiquetas o palabras clave: XXX , YYY, ZZZ
Responsables: <Lista de usuarios del sistema o lista de
nombres>
InformeTecnico.doc Proceso: XXXX
<<CUALQUIER OTRO METADATO QUE QUIERA
DEFINIR EL CLIENTE>>

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Diccionario de datos

Los tipos presentan un gran parecido a las clases en el


mundo de orientacin a objetos.
Un modelo de contenidos puede definir N tipos de contenido
nuevos.
Pueden usarse para representar objetos de nuestro modelo
de negocio: Tienen propiedades y pueden heredar de un tipo
base. Contenido (cm:content) , Persona (cm:person) o
Carpeta (cm:folder) son tres tipos importantes definidos por
Alfresco.
Los tipos personalizados estn limitados nicamente por
nuestra imaginacin y requerimientos de negocio.
Factura, Receta mdica o Pelcula seran ejemplos de tipos personalizados.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Creacin de un nuevo modelo de
contenidos
Paso 1: Declarar un nuevo modelo y definir los tipos de
contenido personalizado.
Paso 2: Desplegar el nuevo modelo de contenidos.
Paso 3: Configurar el/los cliente(s) Web para que sea
capaz de reconocer los nuevos tipos de contenido.
Paso 4: Reiniciar Alfresco para que los cambios sean
efectivos. (en caso de que sea necesario).

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Crear un nuevo modelo

Se declara en un fichero XML cuyo nodo principal es el


elemento <model> del esquema Data Dictionary XML
Schema. Dicho esquema est en el espacio de
nombres referenciado por la URI
http://www.alfresco.org/model/dictionary/1.0
Este fichero debe colocarse en la carpeta de extensin
de Alfresco para despliegues estticos y dentro del
espacio Company Home -> Data Dictionary ->
Models) para despliegues dinmicos.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Declarar un nuevo modelo
<model name="prefijo:nuevoModelo"
xmlns="http://www.alfresco.org/model/dictionary/1.0">

<description>Modelo Contenido Nuevo</description>


<author>Formacion S.L.</author>
<published>2011-01-01</published>
<version>1.0</version>

<imports>
<!-- Importamos las definiciones del Diccionario de Datos -->
<import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d"/>

<!-- Importamos las definiciones del modelo de contenidos estandar -->


<import uri="http://www.alfresco.org/model/content/1.0" prefix="cm"/>
</imports>
...

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Declarar un nuevo modelo

El atributo name del elemento model define el nombre


nico del modelo. El prefijo debe usarse el que se
declare en el espacio de nombres (ver siguiente
transparencia).
xmlns declara el espacio de nombres del metamodelo
como espacio de nombres por defecto.
La seccin de imports hace que los modelos de
contenido estndares as como el metamodelo y el
diccionario de datos estn disponible para su uso y
referencia en nuestro modelo.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Declarar un nuevo modelo

Se define el espacio de nombres asociado al nuevo


modelo:
...
<!-- viene de la transparencia anterior -->
<namespaces>
<namespace
uri="http://www.formacion.com/xmlns/modelo/1.0/"
prefix="prefijo"/>
</namespaces>
...

uri: identificador nico del espacio de nombres


prefix: prefijo que se usar en el resto del documento (debe
coincidir tambin con el que usa el modelo en la transparencia
anterior).
Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles
Declarar un nuevo tipo de contenido

Los nuevos tipos de contenido se declaran dentro del


modelo:
<model ... >
...
<types>
<type ...>
...
</type>
</types>
</model>

Generalmente querremos heredar de cm:content que


es el tipo de contenido estndar de Alfresco.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Declarar un nuevo tipo de contenido

cm es el prefijo del espacio de nombres http://


www.alfresco.org/model/content/1.0 definido para el
esquema Content Domain Model.
Veamos un ejemplo: declarar un tipo de contenido
Documento de Agencia Tributaria que tenga las
propiedades (metadatos) MailResponsable, Proyecto,
EstaAprobadoPorDireccion.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Tipo de contenido: Documento de Agencia Tributaria

<types>
<type name="aeat:documento">
<title>Documento de Agencia Tributaria</title>
<parent>cm:content</parent>
<properties>
<property name="aeat:MailResponsable">
<title>eMail del responsable del documento</title>
<type>d:text</type>
</property>
<property name="aeat:Proyecto">
<title>Proyecto al que pertenece</title>
<type>d:text</type>
</property>
<property name="aeat:EstaAprobadoPorDireccion">
<title>Aprobado por direccion</title>
<type>d:boolean</type>
</property>
</properties>
</type>
</types>

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Declaracin bsica de propiedades

La declaracin bsica de una propiedad (metadato) de


un tipo de contenido es :
...
<type ... >
<property name="prefijo:nombrePropiedad">
<title>Titulo del metadato</title>
<type>d:tipoDeDato</type>
</property>

...
Tipo de dato declarado por el
</type> Data Dictionary de Alfresco
...

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Tipos de datos para las propiedades

Como ya hemos comentado antes, los tipos de datos


soportados en el esquema Dictionary son:

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Restricciones

El concepto de restriccin puede utilizarse


opcionalmente para restringir los valores que Alfresco
almacenar en nuestras propiedades.
Estn definidas 4 tipos de restricciones: REGEX, LIST,
MINMAX y LENGTH.
Las restricciones se definen una nica vez y se
reutilizan en todo el modelo.
Alfresco incorpora una restriccin predefinida
cm:filename que define una expresin regular para
chequear que una cadena es un nombre de fichero
vlido.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Aspectos

Introduccin.
Definicin de aspecto.
Aspectos por defecto.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin

Los aspectos nos permiten aplicar conceptos


transversales (propiedades o asociaciones) a cualquier
pieza de contenido (sea cual sea su tipo) y en cualquier
lugar.
Son fundamentales a la hora de disear buenos
modelos reutilizables, flexibles y con buen
rendimiento.
Se pueden aplicar a un nodo y posteriormente quitarle
estas propiedades. Son de quita y pon.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Definicin de aspecto

El elemento aspect define un aspecto dentro del


modelo de contenidos.
<aspect name="prefix:aspectName">
<title>aspectTitle</title>
<properties>
<property >
...
</property>
...
</aspect>

Se define de forma similar a un tipo de contenido.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Definicin de aspecto

Ejemplo:
<aspect name="cm:auditable">
<title>Auditable</title>
<properties>
<property name="cm:created">
<type>d:datetime</type>
</property>
<property name="cm:creator">
<type>d:text</type>
</property>
<property name="cm:modified">
<type>d:datetime</type>
</property>
...
</properties>
</aspect>
Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles
Aspectos por defecto

Alfresco nos ofrece un conjunto de aspectos, por defecto,


que podemos utilizar en nuestros modelos de contenidos:
Classifiable Aspect: activa la categorizacin, por lo tanto se puede
aplicar categoras sobre el documento.
Complianceable Aspect: se aade la propiedad para indicar
cundo debe borrarse.
Dublin Core Aspect: aade los metadatos de Dublic Core:
publisher, Contributor, Subject y Rights.
Effectivity Aspect: aade las propiedades From y To al
documento.
Emailed Aspect: aade un conjunto de propiedades de Email Data al
documento.
Localizable Aspect: aade la propiedad Locale to the document.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Aspectos por defecto

Summarizable Aspect: aade la propiedad Summary al


documento.
Templatable Aspect: aade la propiedad cm:template, que es la
referencia a otro nodo, que ser la plantilla.
Translatable Aspect: aade la propiedad Translations al
documento.
Versionable Aspect: habilita el versionado de documentos.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Aspectos por defecto

Complianceable Aspect:
<aspect name="cm:complianceable">
<title>Complianceable</title>
<properties>
<property name="cm:removeAfter">
<title>Remove After</title>
<type>d:datetime</type>
</property>
</properties>
<mandatory-aspects>
<aspect>cm:auditable</aspect>
</mandatory-aspects>
</aspect>

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Aspectos por defecto

Dublin Core Aspect:


<aspect name="cm:dublincore">
<title>Dublin Core</title>
<parent>cm:titled</parent>
<properties>
<property name="cm:publisher">
<title>Publisher</title>
<type>d:text</type>
<mandatory enforced="false">true</mandatory>
</property>
...
<mandatory-aspects>
<aspect>cm:auditable</aspect>
<aspect>cm:author</aspect>
</mandatory-aspects>
</aspect>

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Aspectos por defecto

Translatable Aspect:
<aspect name="cm:translatable">
<title>Translatable</title>
<parent>cm:localizable</parent>
<associations>
<association name="cm:translations"><title>Translations</title>
<source><role>cm:translationOf</role>
<mandatory>false</mandatory>
<many>false</many>
</source>
<target><class>cm:content</class>
<role>cm:hasTranslation</role>
<mandatory>false</mandatory>
<many>true</many>
</target>
</association>
</associations>
</aspect>

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Despliegue de modelo de contenidos

Introduccin.
Crear el fichero de contexto.
Despliegue esttico.
Despliegue dinmico.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin

Una vez que el modelo de contenidos ha sido definido, es


decir, el fichero xml ha sido creado, tenemos que
desplegarlo en nuestra instalacin de Alfresco.
Para que Alfresco reconozca la definicin de nuestro nuevo
modelo debemos crear un fichero de contexto que haga de
cargador de la definicin.
El fichero de contexto debe llamarse como
<nombreModelo>-context.xml y colocarse en el fichero de
extensin para que Alfresco lo localice automticamente.
Los modelos pueden instalarse en Alfresco de forma
esttica o dinmica. La primera necesitar el reinicio del
sistema.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Crear el fichero de contexto

El fichero de contexto contiene uno o ms bean de


configuracin de Spring.
Dependiendo de la distribucin de Alfresco que
hayamos descargado tendremos un conjunto de
ficheros de contexto de ejemplo en el directorio de
extensin que nos servirn como plantilla para los
nuestros.
Nota: el directorio de extensin es ${alfresco}/tomcat/shared/
classes.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Crear el fichero de contexto

Para la versin 4.2.c, la plantilla custom-model-


context.xml.sample es:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://
www.springframework.org/dtd/spring-beans.dtd'>

<beans>
<!-- Registration of new models -->
<bean id="extension.dictionaryBootstrap" parent="dictionaryModelBootstrap"
depends-on="dictionaryBootstrap">
<property name="models">
<list>
<value>alfresco/extension/customModel.xml</value>
</list>
</property>
</bean>
</beans>

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Crear el fichero de contexto

La ruta alfresco/extension/customModel.xml se define


en relacin a la carpeta de extensin de alfresco.
Resumiendo, si nuestro modelo se ha definido en un
fichero llamado companyModel.xml, el fichero de
contexto se llamar companyModel-context.xml
...
<beans>
<!-- Registration of new models -->
<bean id="extension.dictionaryBootstrap" parent="dictionaryModelBootstrap"
depends-on="dictionaryBootstrap">
<property name="models">
<list>
<value>alfresco/extension/companyModel.xml</value>
</list>
</property>
</bean>
</beans>
Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles
Despliegue esttico (Static model)

El despliegue esttico obligatoriamente implica un


reinicio del sistema para que los nuevos modelos de
contenidos sean tenidos en cuenta. Este despliegue
implica:
Copiar el fichero de contexto en la carpeta ${alfresco}/tomcat/
shared/classes/alfresco/extension.
Copiar el fichero del modelo de contenidos en la carpeta $
{alfresco}/tomcat/shared/classes/<rutaDefinidaFicheroContexto>
Reiniciar Alfresco.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Despliegue dinmico (Dynamic Model)

Con el mtodo anterior (modelos estticos) ser necesario


reiniciar el sistema para que lea los cambios de la carpeta
de extensin.
Existe la posibilidad de usar modelos dinmicos, que no
requieren parada del servicio.
Para ello, debemos subir el fichero con nuestro nuevo
modelo (el XML que lo define, NO el que termina en -
context.xml) al espacio Company Home -> Data
Dictionary -> Models.
Cuando hagamos el upload del modelo al espacio
previamente mencionado, nos saldr un check-box 'Model
Active' que debemos seleccionar si queremos desplegarlo.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


WebScripts en Alfresco

Introduccin.
Elementos importantes.
Documento de descripcin.
Controller Script.
Plantillas.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin

Un Web Script es algo tan simple como un servicio mapeado


a una URI que responde ante peticiones HTTP de tipo GET,
POST, PUT y DELETE. Es por eso, que el desarrollo de Web
Scripts nos permite construir fcilmente Servicios Web para
gestin de contenidos identificados por una URI y accesibles
va HTTP, es decir, integraciones REST.
Podemos acceder, manejar y enlazar nuestros contenidos a
travs de una API tipo REST.
No necesitamos herramientas especiales ni conocimientos
de Java. Todo lo que necesitamos es un editor de texto o el
cliente web Alfresco Explorer o Share: sin compilaciones,
paradas de servidor ni complejas instalaciones.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin

Podemos diferenciar entre dos grandes familias de Web


Scripts:
Web Scripts de datos:
Encapsulan el acceso o modificacin del contenido/datos del
repositorio, por lo tanto, son expuestos siempre y slo por el servidor
repositorio de Alfresco.
Proveen una interfaz del repositorio a aplicaciones cliente. Los
procesos suelen utilizar documentos en distintos formatos (XML,
JSON, etc.).
Alfresco incluye por defecto Web Scripts de datos que sirven para:
aadir tags a los documentos, actividades, gestin del site, etc.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin

Podemos diferenciar entre dos grandes familias de Web


Scripts (cont.):
Web Scripts de presentacin:
Permiten construir interfaces de usuario como dashlets para Alfresco,
portlets para un portal que siga el estndar JSR-168, componentes UI
como Alfresco SURF, un sitio Web o una aplicacin a medida.
Generalmente renderizan HTML.
Pueden ser desplegados en un servidor Alfresco o en un servidor
independiente. Cuando se escoge esta ltima opcin, interactuan con
los Data Web Scripts. Por defecto existen los Web Scripts para
Portlets, integracin con Office, Componentes SURF, etc.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin

La interfaz de un Web Script est formada por:


URI,
Mtodos HTTP y
Tipos de documento.
Estos elementos son la nica informacin que deben
conocer los clientes.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Elementos importantes

Un Web Script est formado por:


Un documento de descripcin: identifica la URI que instancia
el script, un nombre corto, descripcin y requisitos de
autenticacin y transacciones.
Un script que acta de controlador opcional. Escrito en
Javascript puede realizar tareas como consultas al repositorio de
Alfresco, actualizar el repositorio, etc. El script tiene acceso a todos
los argumentos de la URI, a los servicios de Alfresco y a los datos
del repositorio.
Una o ms plantillas de respuesta FreeMarker denominadas
vistas. Se encargan de renderizar la respuesta en el formato
adecuado: HTML, ATOM, XML, RSS, JSON, CSV, o cualquier
combinacin de ellos.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Documento de descripcin

Tiene que tener la extensin .desc.xml para informar a


Alfresco que dicho documento es una descripcin de
Web Script.
Por ejemplo org/alfresco/ejemplo/
holamundo.get.desc.xml define (configuracin por
convencin).
Un paquete org/alfresco/ejemplo.
Un id de servicio holamundo.
Un enlace al mtodo GET de HTTP.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Documento de descripcin

Ejemplo:

<webscript>
<shortname>Hello World</shortname>
<description>Greet a user</description>
<url>/holamundo?to={name?}</url>
<format default="html">extension</format>
<authentication>user</authentication>
</webscript>

Analizamos los diferentes elementos xml que nos


permiten definir este documento de descripcin.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Documento de descripcin

shortname: nombre corto del Web Script.


description: (opcional) es la documentacin del Web
Script.
url: URI asociada al Web Script.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Controlador

Un Web Script puede opcionalmente ejecutar JavaScript


en la invocacin de su URI. Este JavaScript puede lanzar
consultas o actualizar el repositorio. Tambin puede
construir un modelo de datos que, posteriormente,
podr ser utilizado por la plantilla que generar la
respuesta.
El nombre del fichero sigue la siguiente sintaxis:
<serviceId>.<httpMethod>.js

Por ejemplo, para el servicio Hello World podemos


crear un fichero en la misma carpeta que el documento
de descripcin:
helloworld.get.js

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Controlador

Estos ficheros se generan mediante la API Alfresco


JavaScript.
Permite a los desarrolladores crear ficheros JavaScript
para acceder, modificar y crear objetos en el
repositorio de Alfresco.
Proporciona un modelo orientado a objetos para
manejar conceptos como nodos, propiedades,
asociaciones y aspectos.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Controlador

Usando esta API podemos:


Encontrar nodos via XPath y directamente via NodeRef o path.
Realizar bsquedas incluyendo bsquedas a texto completo con
resultados ordenados.
Navegar por jerarqua de nodos, examinar y modificar el valor de
propiedades, aspectos y asociaciones.
Transformar y manipular contenido.
...

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Controlador

Ejemplo: se aade un aspecto. El mtodo addAspect


realiza esta operacin.
var props = new Array(1);
props["cm:template"] = document.nodeRef;
document.addAspect("cm:templatable", props);

props = new Array(1);


props["cm:lockIsDeep"] = true;
document.addAspect("cm:lockable", props);

props = new Array(1);


props["cm:hits"] = 1;
document.addAspect("cm:countable", props);

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Controlador

Ejemplo: se crea un documento en la carpeta de


usuario.
El mtodo createFile realiza esta operacin.

var doc = userhome.createFile("checkmeout.txt");


doc.content = "original text";

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Controlador

Ejemplo: se crean nodos mediante diferentes


estrategias.
El mtodo createFile realiza esta operacin.

var node1 = userhome.createNode("create test1.txt", "cm:content");


node1.content = "node1 content";

var node2 = userhome.createNode(null, "sys:base");

var props = new Array();


props["cm:name"] = "create test3.txt";
var node3 = userhome.createNode(null, "cm:content", props);

props["cm:name"] = "node name4.txt";


props["cm:title"] = "node title4";
var node4 = userhome.createNode(null, "cm:content", props, "cm:contains");

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Controlador

Ejemplo: crear el backup de un documento:


// find the backup folder - create if not already exists
var backupFolder = space.childByNamePath("Backup");
if (backupFolder == null && space.hasPermission("CreateChildren"))
{
// create the folder for the first time
backupFolder = space.createFolder("Backup");
}
if (backupFolder!= null && backupFolder.hasPermission("CreateChildren"))
{
// copy the doc into the backup folder
var copy = document.copy(backupFolder);
if (copy!= null)
{
// change the name so we know it's a backup
copy.name = "Backup of " + copy.name;
copy.save();
}
}
Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles
Controlador

Ejemplo: crear el backup de un documento:


Se utilizar el objeto raz space y apoyndose en el mtodo
childByNamePath se recupera el nodo que representa a la carpeta
de backup.
// find the backup folder - create if not already exists
var backupFolder = space.childByNamePath("Backup");

El mtodo hasPermission comprueba si el usuario tiene


permisos para crear hijos. El mtodo createFolder crea la carpeta

if (backupFolder == null && space.hasPermission("CreateChildren"))


{
// create the folder for the first time
backupFolder = space.createFolder("Backup");
}

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Plantillas

Una plantilla es un documento que puede aplicarse a


uno o varios objetos (por ejemplo, uno o ms
documentos de un repositorio) para generar otro
documento. FreeMarker o XSLT son plantillas.
La plantilla se escribe en un lenguage de plantillas
especfico.
El modelo de datos ser el conjunto de objetos
disponible en la plantilla.
Plantilla + Modelo de datos = salida

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Plantillas

El desarrollador necesita conocer el lenguaje de


plantillas que debemos utilizar y el modelo de datos
disponible.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Plantillas

Alfresco trabaja por defecto con Freemarker.


La extensin de los ficheros es ftl.
Debemos ser capaces de generar plantillas siguiendo
su sintaxis:

<html>
<head>
<title>Welcome!</title>
</head>
<body>
<h1>Welcome ${user}!</h1>
<p>Our latest product:
<a href="${latestProduct.url}">${latestProduct.name}</a>!
</body>
</html>

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Plantillas

FreeMarker es un motor de plantillas basado en Java.


Se definen plantillas que no son ms que ficheros de
texto que contienen la salida deseada, excepto
determinadas variables ${name}, y directivas (if,
bucles, etc).
El lenguaje de plantillas nos ofrece estructuras de
control, bucles, etc para construirla.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Plantillas

http://freemarker.org/docs/index.html

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Despliegue

Cuatro opciones, copiar los ficheros en:


Carpeta: /Company Home/Data Dictionary/Web Scripts
Extensions
Carpeta: /Company Home/Data Dictionary/Web Scripts
classpath: /alfresco/extension/templates/webscripts
classpath: /alfresco/templates/webscripts

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Registrar un Web Script

Los Web Scripts nuevos o actualizados son refrescados


automticamente cuando se reinicia el servicio de
Alfresco.
Tambin podemos registrarlos manualmente
accediendo a la URL
http://<host>:8080/alfresco/service/index y pulsando
Refresh list of Web Scripts.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Web Scripts Home

Pequea utilidad para gestionar nuestros Web Scripts y


ver cuales estn desplegados.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Probando el script

Nos dirigimos a http://<host>:8080/alfresco/service/


ejemplo/holaMundo?nombre=<tu nombre> y
deberamos ver la respuesta HTML esperada.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Java Foundation services

Introduccin.
Acceso a la API.
Los servicios disponibles.
Conceptos importantes.
Servicio de nodos NodeService.
Inyeccin de servicios.
Construir nuevos servicios.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin

Son el conjunto de servicios que propocionan acceso


completo a todas las capacidades del repositorio de
Alfresco.
Es una API in-process, que significa que el cliente que la
usa debe encontrarse en el mismo proceso que el
repositorio.
Por ejemplo, el cliente web Alfresco Explorer usa esta
API y se encuentra empaquetado con el repositorio en el
mismo war.
Cada servicio se maneja en forma de interface Java.
Spring Framework ser el responsable de inyectar la
implementacin adecuada del servicio.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Para qu?

Desarrollo de acciones en Alfresco:


Una accin es una unidad de trabajo que se realiza sobre un nodo,
por ejemplo, mover un nodo, borrar un nodo, etc.
Alfresco incorpora un conjunto de acciones predefinidas:
check-out, check-in, Aadir aspecto, borrar aspecto, enviar mail,
etc.
A veces, el trmino Rule Action se usa para describir un tipo de
accin. Son acciones asociadas a reglas sobre una carpeta.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Para qu?

Desarrollo de acciones en Alfresco (cont.):


El desarrollador puede crear acciones personalizadas para resolver
problemas totalmente especficos.
Esta acciones UTILIZAN los Alfresco Java Foundation services.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Para qu?

Webscripts en Java:
Hasta ahora hemos hablado de webscript desarrollados mediante
JavaScript, pero qu ocurre si necesitamos implementar
funcionalidades complejas?
Por ejemplo, acceso a una base de datos relacional o trabajar con
generadores de informes como JasperReports.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Para qu?

Webscripts en Java:

pero existe la posibilidad de crear webscripts en Java.


En estos casos, el uso de Alfresco Java Foundation services ser
muy til.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Para qu?

Webscripts en Java (cont.):


Para esas situaciones existe la posibilidad de crear webscripts en
Java. En estos casos, el uso de Alfresco Java Foundation
services ser muy til.
El controlador del webscript ser una clase Java que hereda de
DeclarativeWebScript:

...
public class MoveDocuments extends DeclarativeWebScript {

if(nodeService.exists(nodeRefCentro)){
String centroFolderName = (String)
nodeService.getProperty(nodeRefCentro, ContentModel.PROP_NAME);

...

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Acceso a la API

Existen tres estrategias para acceder a estas interfaces


en nuestro cdigo:
Mediante Inyeccin de dependencias.
Acceso manual mediante el mtodo Spring getBean() de Spring.

Factory.getBean("AuthenticationService");

Indirectamente mediante el servicio de Alfresco ServiceRegistry:


el servicio de registro mantiene un listado de todos los servicios
del repositorio disponibles.

serviceRegistry.getAuthenticationService();

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Acceso a la API

La interface ServiceRegistry nos proporciona acceso a


todos los servicios del core del repositorio:

// Inicializar el contexto
ApplicationContext ctx = ApplicationContextHelper.getApplicationContext();

// Se obtiene el servicio de registros


final ServiceRegistry serviceRegistry = (ServiceRegistry)
ctx.getBean(ServiceRegistry.SERVICE_REGISTRY);

// Se recupera el servicio de gestin de transacciones


TransactionService transactionService = serviceRegistry.getTransactionService();

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Acceso a la API

La interface ServiceRegistry se encuentra en el paquete


org.alfresco.service, representa los servicios pblicos
del repositorio de Alfresco.
Proporciona metadatos de cada servicio y acceso a cada
uno de ellos mediante su interface:

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Acceso a la API

El servicio de registro proporciona diferentes mtodos


para acceder a los servicios:
getActionService.
getPermissionService.
getAuthorityService.
getFileFolderService.
getScriptService.
getWorkflowService.
getNotificationService
getAuditService
...

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Los servicios disponibles

Existe un servicio para cada funcionalidad disponible:


NodeService: servicio de nodos. Nos permite crear, modificar,
recuperar y borrar nodos, asociaciones, aspectos y propiedades.
ContentService: servicio de contenidos. Proporciona mtodos
para acceder y transformar el contenido de los nodos.
SearchService: servicio de bsqueda.
Servicio AuthenticationService.
Servicio TransactionService.
...

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Conceptos importantes

Antes de seguir debemos tener en cuenta una series de


conceptos importantes:
Nodo y contenido.
Namespaces o espacio de nombre.
Los modelos de Alfresco.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Los nodos en Alfresco

Cualquier nodo en Alfresco se modela mediante la


clase NodeRef que se encuentra en el paquete
org.alfresco.service.cmr.repository.
Cualquier nodo de almacenamiento en Alfresco se
modela mediante la clase StoreRef que se encuentra en
el paquete org.alfresco.service.cmr.repository.
Podemos encontrar ms informacin en Alfresco Data
Model API.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Los nodos en Alfresco

El concepto StoreRef comprime dos elementos:


Protocol del almacen: eso es el tipo de almacn.
Store id: Idenficador del almacn.
Ejemplos:

workspace://SpacesStore

archive://SpacesStore

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Los nodos en Alfresco

El concepto NodeRef comprime tres elementos:


Los dos primeros asociados al store ref:
protocolo: tipo de almacen.
storeid: identificador del almacn.
El tercero es el identificador del nodo dentro del almacn.
UUID.
Ejemplos:

workspace://SpacesStore/5af5a38b-e20a-4885-bbd1-4b3fde9b0dd3

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Servicio de nodos NodeService

Se encuentra en el paquete
org.alfresco.service.cmr.repository:

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Servicio de nodos NodeService

Como ya se ha comentado anteriormente, este servicio


permite crear, modificar, recuperar y borrar nodos,
asociaciones, aspectos y propiedades.
Alguno de sus mtodos:
addAspect: este mtodo aade un nuevo aspecto a un nodo dado.
createNode: crea un nodo.
deleteNode: borra un nodo.
exists: verifica si existe un nodo.
...

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Servicio de nodos NodeService

Ejemplos:
// Se recupera el nombre del fichero asociado al nodo
String fileName = (String) nodeService.getProperty(
nodeRef, ContentModel.PROP_NAME);

// Se recupera el valor de una propiedad


QName PROP_QNAME_MY_PROPERTY = QName.createQName(
"custom.model", "myProperty");

value = nodeService.getProperty(nodeRef, PROP_QNAME_MY_PROPERTY);

// Actualizar el valor de una propiedad


QName PROP_QNAME_MY_PROPERTY = QName.createQName(
"custom.model", "myProperty");

nodeService.setProperty(nodeRef, PROP_QNAME_MY_PROPERTY, value);

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Servicio de contenido ContentService

Como ya se ha comentado antes, este servicio


proporciona mtodos para acceder y transformar el
contenido de los nodos.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Servicio de contenido ContentService

Alguno de sus mtodos:


getReader: recupera un lector para una determinada propiedad.
getWriter: recupera un escritor para trabajar sobre una
determinada propiedad.
getTransformer: se recupera un transformador para llevar a
cabo una transformacin.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Servicio de contenido ContentService

Ejemplos:
// Leer el contenido de un nodo
ContentReader reader = contentService.getReader(
nodeRef, ContentModel.PROP_CONTENT);
String content = reader.getContentString();

// Leer el contenido de un nodo en binario


ContentReader reader = contentService.getReader(nodeRef,
ContentModel.PROP_CONTENT);
InputStream originalInputStream = reader.getContentInputStream();
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
final int BUF_SIZE = 1 << 8; //1KiB buffer
byte[] buffer = new byte[BUF_SIZE];
int bytesRead = -1;
while((bytesRead = originalInputStream.read(buffer)) > -1) {
outputStream.write(buffer, 0, bytesRead);
}
originalInputStream.close();
byte[] binaryData = outputStream.toByteArray();
Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles
Servicio de contenido ContentService

Ejemplos:
// Escribir el contenido de un nodo
ContentWriter writer = contentService.getWriter(nodeRef,
ContentModel.PROP_CONTENT, true);
writer.putContent(new ByteArrayInputStream(content));

// Escribir el contenido de un fichero en un nodo


ContentWriter writer = contentService.getWriter(nodeRef,
ContentModel.PROP_CONTENT, true);
writer.setLocale(CONTENT_LOCALE);
File file = new File("c:/temp/images/BigCheese1.bmp");
writer.setMimetype("image/bmp");
writer.putContent(file);

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Inyeccin de servicios

Si necesitamos utilizar alguno de estos servicios dentro


de cualquiera de la extensiones desarrolladas en
Alfresco, tendremos que aplicando Inyeccin de
Dependencias (gracias a Spring Framework), ponerlos a
disposicin de nuestro cdigo.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Inyeccin de servicios

El fichero public-services-context.xml que se


encuentra en la carpeta ${tomcat}/webapps/alfresco/
WEB-INF/classes/alfresco define la mayor parte de los
servicios:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://
www.springframework.org/dtd/spring-beans.dtd'>

<beans>
<import
resource="classpath:alfresco/public-services-security-context.xml"/>

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Inyeccin de servicios

Servicio de registro: si queremos inyectar este servicio


en nuestras clases tendremos que usar el id
ServiceRegistry.

<?xml version='1.0' encoding='UTF-8'?>


<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/
dtd/spring-beans.dtd'>

<beans>
<import
resource="classpath:alfresco/public-services-security-context.xml"/>

<!-- Service Registry -->


<bean id="ServiceRegistry"
class="org.alfresco.repo.service.ServiceDescriptorRegistry" />

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Inyeccin de servicios

Servicio de bsqueda: si queremos hacer referencia a


este servicio tendremos que usar el id SearchService:
<!-- Search Service -->
<bean id="SearchService"
class="org.springframework.aop.framework.ProxyFactoryBean">

<property name="proxyInterfaces">
<value>org.alfresco.service.cmr.search.SearchService</value>
</property>
<property name="target">
<ref bean="searchService"/>
</property>
...
</bean>

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Otros

Alfresco webservices

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Profundizando en la
plataforma

Alfresco Explorer y Share.


Bsquedas en Alfresco: Lucene y Solr.
Flujos de trabajo con Activiti.
CMIS y Alfresco.
Otros.
Alfresco Explorer

Alfresco Explorer es el primer cliente web desarrollado


desde Alfresco para acceder al repositorio:

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Alfresco Explorer

Se encuentra desarrollada mediante JSF y


obligatoriamente tiene que ejecutarse junto al core de
Alfresco, no puede trabajar en remoto.
Es una aplicacin muy antigua y va a desaparecer en
prximas versiones del producto.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Alfresco Share

Introduccin a Share.
Share y los modelos.
Share y los flujos de trabajo.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin

Alfresco Share es un cliente web introducido en la


versin 3 de Alfresco que se basa en Spring Surf y
YUI.
Permite establecer espacios colaborativos,
relacionados con la gestin documental y la gestin de
contenidos.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin

Dashboard de Alfresco Share

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin

El nivel de personalizacin del entorno es muy grande:

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin

Alfresco Share ha sido concebido para la creacin de


portales colaborativos.
La unidad fundamental de Alfresco Share es el sitio
web.
Nos ofrece componentes para construir portales
siguiendo esta estrategia:
Blogs, wikis, calendarios, etc.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Creacin de sitios web

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Personalizacin del sitio web

Se selecciona el botn Ms seleccionando la opcin


Configurar sitio:

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Personalizacin del sitio web

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Personalizacin del sitio web

Look and feel:

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Personalizacin del sitio web

Wikis, Blogs, calendario, etc.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Personalizacin del sitio web

Links:

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Personalizacin del sitio web

Listas de datos

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Miembros

La seccin miembros permite gestionar los usuarios o


grupos de usuarios que pertenecen a un sitio web:

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Miembros

Se pueden invitar a los usuarios:

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Biblioteca

Es el gestor documental de Share:

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Biblioteca

Crear carpetas:

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Biblioteca

Subir y aadir documentos:

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Biblioteca

Crear contenidos:

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Biblioteca

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Flujos de trabajo

Los flujos de trabajo definidos dentro de Alfresco


pueden manejarse en Alfresco Share sobre cualquier
documento:

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Reglas

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Administracin de permisos

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


El repositorio de Alfresco

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Seccin Ms

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Bsquedas en Alfresco: Lucene y Solr

Introduccin.
Lucene vs Solr.
Bsquedas Alfresco v.4.
Solr en Alfresco.
Configuracin en Tomcat.
Administracin de Solr.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin

Los procesos de bsqueda en Alfresco son de vital


importancia.
Hasta su versin 3.4 se realizaban mediante Lucene.
A partir de la versin 4 de Alfresco, por defecto, se
trabaja con Solr aunque sigue estando preparado para
trabajar con Lucene.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin

Para la versin 4 de Alfresco se pretende:


Conseguir que el repositorio sea ms robusto y escalable.
Reducir la carga que implica el uso de Lucene en indexacin
transaccional.
Gracias a la arquitectura de Alfresco, la interface de
bsqueda sigue siendo la misma. Este cambio no
implica modificacin alguna desde el punto de vista del
desarrollo.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin

Ventajas:
No se necesita indexacin durante una transaccin.
No se necesita duplicar ndices en cada servidor.
Las bsquedas pueden ser escaladas.
Se pueden usar herramientas de administracin de Solr.
Mejoras en el acierto de los resultados.
Mejoras en el rendimiento.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Lucene vs Solr

Apache Lucene es una librera Java que implementa


un motor de bsqueda de alto rendimiento.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Lucene vs Solr

Solr es una aplicacin web construida sobre Lucene.


Podramos decir que Solr es Lucene + extra.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Lucene vs Solr

Cuando Alfresco se encuentra configurado para


trabajar con Lucene, por defecto, almacena en el
sistema de ficheros sus ndices asociados:

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Lucene vs Solr

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Lucene vs Solr

Cuando se trabaja en cluster:

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Lucene vs Solr

Dado que los ndices deben encontrarse en cada


servidor, Alfresco debe gestionar procesos de
replicacin de ndices.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Lucene vs Solr

En cambio cuando se trabaja


con Solr, el proceso de
replicacin de ndices
desaparece.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Lucene vs Solr

Apache Solr es una plataforma de bsquedas basada en


Apache Lucene, que funciona como un servidor de
bsquedas.
Sus principales caractersticas incluyen bsquedas de
texto completo, resaltado de resultados, clustering
dinmico, y manejo de documentos ricos (como Word y
PDF).
Solr es escalable, permitiendo realizar bsquedas
distribuidas y replicacin de ndices, y actualmente se
est usando en muchos de los sitios ms grandes de
Internet.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Lucene vs Solr

La principal caracterstica de Solr (o al menos la ms


til) es su API REST, ya que en vez de usar drivers o
APIs programticas para comunicarnos con Solr
podemos hacer peticiones HTTP y obtener resultados
en XML o JSON.
Solr no expone una interfaz REST "perfecta" (que use
todos los principios de HTTP 1.1), pero los datos tienen
una representacin simple que viaja entre el cliente y el
servidor, sin ninguna encapsulacin rara con SOAP u
otras pesadillas. Adems, los XML son legibles por
personas, y JSON se puede usar para consumir con
JavaScript y realizar pruebas.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Lucene vs Solr

Si estamos buscando Escalabilidad, Solr ser nuestra


respuesta. En general, como opcin por defecto y para
la inmesa mayora de los casos es Solr.
Pero si estamos buscando transaccionalidad y sincrona
absoluta entre contenidos e ndices Lucene ser
nuestra mejor opcin.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Bsquedas en Alfresco v.4

Servicios que ofrece Lucene siguen estando activos.


Podemos seguir usando Lucene si as lo creemos
conveniente.
El proceso de indexacin con Solr es asncrono.
Soporte a los mismos lenguajes de consulta.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Solr en Alfresco

Introduccin.
ndices de Solr.
Configuracin en Tomcat.
Administracin.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin

Analizamos la estructura por defecto de Solr dentro del


bundle de Alfresco.
Esto nos permitir de forma rpida entender cmo se
encuentra configurado:

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin

Directorio keystore: almacena el material criptogrfico


que permite asegurar su comunicacin con Alfresco.
ssl.keystore: pares de claves pblica/privada
ssl.truststore: certificado de confianza.
browser.p12: contiene el certificado que tenemos que instalar en
el navegador para acceder a la herramienta de administracin de
Solr.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin

Directorio solr: directorio home de solr, encontramos


su instalacin.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin

Solr trabaja con dos cores (ndice sobre contenidos con


un esquema especfico):
Dos ndices diferentes, uno para nodos vivos y otro para nodos
borrados:
archive: nodos eliminados (carpeta archive).
alfresco: nodos vivos (carpeta workspace).

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin

Cada core tiene dos directorios asociados:


Uno donde se guardan los ndices.
Otro donde se guarda la configuracin:
*-SpacesStore

+ archive
+ archive-SpacesStore
+ ...
+ workspace-SpacesStore
+ workspace
+ ...

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


ndices de Solr

<SOLR-HOME> tiene un fichero de configuracin


llamado solr.xml:
<?xml version='1.0' encoding='UTF-8'?><solr sharedLib="lib"
persistent="true">
<cores adminPath="/admin/cores"
adminHandler="org.alfresco.solr.AlfrescoCoreAdminHandler">
<core name="archive" instanceDir="archive-SpacesStore"/>
<core name="alfresco" instanceDir="workspace-SpacesStore"/>
</cores>
</solr>

Donde se definen los diferentes ndices que maneja. En


este caso maneja dos: archive y alfresco.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Fichero solrconfig.xml

Para cada core, el fichero solrconfig.xml define los


parmetros de configuracin de Solr.
<requestHandler name="/spell" class="solr.SearchHandler" lazy="true">
<lst name="defaults">
<!-- omp = Only More Popular -->
<str name="spellcheck.onlyMorePopular">false</str>
<!-- exr = Extended Results -->
<str name="spellcheck.extendedResults">false</str>
<!-- The number of suggestions to return -->
<str name="spellcheck.count">1</str>
</lst>
<arr name="last-components">
<str>spellcheck</str>
</arr>
</requestHandler>

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


ndices de Solr

Para cada core tiene su fichero solrcore.properties.


Por ejemplo, archive-SpacesStore/conf/
solrcore.properties y workspace-SpacesStore/conf/
solrcore.properties:
Editar la propiedad data.dir.root definiendo la ruta donde se
almacenan los ndices de solr.
Si se define la misma ruta para ambos cores, se crearn
subdirectorios.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


ndices de Solr

El fichero solrcore.properties ser, en la mayora de


los casos, nuestra herramienta para configurar el
sistema:

data.dir.root=/Applications/Curso/alfresco-4.1-enterprise/
alf_data/solr
data.dir.store=workspace/SpacesStore
enable.alfresco.tracking=true
cache.alfresco.size=100
max.field.length=2147483647

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


ndices de Solr

Propiedades para definir la sincronizacin con Alfresco:

#
# Properties loaded during alfresco tracking
#

alfresco.host=localhost
alfresco.port=8080
alfresco.port.ssl=8443
alfresco.baseUrl=/alfresco
alfresco.cron=0/15 * * * * ? *
alfresco.stores=workspace://SpacesStore

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


ndices de Solr

Propiedad alfresco.host:
url a la que apunta alfresco.
Esta url puede apuntar al balanceador de carga de un cluster de
Alfresco.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


ndices de Solr

Propiedad alfresco.cron:
La indexacin entre Solr y Alfresco siempre se inicia a peticin del
primero.
Se conecta peridicamente al repositorio y pregunta por si se han
producido cambios.

alfresco.cron=0/15 * * * * ? *

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


ndices de Solr

Propiedad alfresco.secureComms:
Permite habilitar o no comunicaciones cifradas:

# none, https
alfresco.secureComms=https

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


ndices de Solr

Propiedades para definir la comunicacin cifrada y


segura con Alfresco:

alfresco.encryption.ssl.keystore.type=JCEKS
alfresco.encryption.ssl.keystore.provider=
alfresco.encryption.ssl.keystore.location=ssl.repo.client.keystore
alfresco.encryption.ssl.keystore.passwordFileLocation=ssl-keystore-
passwords.properties
alfresco.encryption.ssl.truststore.type=JCEKS
alfresco.encryption.ssl.truststore.provider=
alfresco.encryption.ssl.truststore.location=ssl.repo.client.trustst
ore
alfresco.encryption.ssl.truststore.passwordFileLocation=ssl-
truststore-passwords.properties

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Configuracin en Tomcat

Pasamos a describir el proceso de instalacin de Solr en


Tomcat (NO TIENE QUE SER EL MISMO TOMCAT EN EL
QUE SE ENCUENTRA ALFRESCO):
Fichero solr-tomcat-context.xml.
ndices de Solr.
Supongamos que <SOLR_TOMCAT_HOME> es la ruta
del tomcat donde se quiere instalar Solr.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Configuracin en Tomcat

Copiar solr-tomcat-context.xml a
<SOLR_TOMCAT_HOME>/conf/Catalina/localhost/
solr.xml:
<?xml version="1.0" encoding="utf-8"?>
<Context docBase="@@ALFRESCO_SOLR_DIR@@/apache-solr-1.4.1.war"
debug="0" crossContext="true">
<Environment name="solr/home" type="java.lang.String"
value="@@ALFRESCO_SOLR_DIR@@" override="true"/>
</Context>

Actualizando a las rutas adecuadas.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Configuracin en Tomcat

Editar docBase in solr.xml para que apunte a <SOLR-


HOME>/apache-solr-1.4.1.war (se define la ruta
donde se encuentra el war de Solr).
Editar Environment solr/home para que apunte a
<SOLR-HOME>:
<?xml version="1.0" encoding="utf-8"?>
<Context docBase="/Applications/Curso/alfresco-4.1-enterprise/
alf_data/solr/apache-solr-1.4.1.war" debug="0"
crossContext="true">

<Environment name="solr/home" type="java.lang.String" value="/


Applications/Curso/alfresco-4.1-enterprise/alf_data/solr"
override="true"/>
</Context>

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Configuracin en Tomcat

Una vez definida la ruta donde se encuentra el home de


solr:

...

<Environment name="solr/home" type="java.lang.String" value="/


Applications/Curso/alfresco-4.1-enterprise/alf_data/solr"
override="true"/>
</Context>

...

Se parametrizan sus ficheros de configuracin.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Administracin de Solr

Introduccin.
Acceso a la herramienta.
Anlisis.
Navegar por esquema.
Configuracin de log.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin

El acceso a la herramienta de administracin de Solr se


realiza mediante navegador y requiere autenticacin
mediante certificado digital.
La distribucin de Solr, como ya se ha comentado
anteriormente, nos proporciona un .p12 para tal efecto.
Por lo tanto, debemos instalarlo en nuestros
navegadores.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Acceso de herramienta

https://<IP_MAQUINA>:8443/solr/

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Acceso de herramienta

https://<IP_MAQUINA>:8443/solr/

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Acceso de herramienta

Acceso a ambos cores:

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Acceso de herramienta

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Anlisis

La herramienta Analysis se encarga de mostrar cmo


funciona el motor de bsqueda internamente.
El analizador se utiliza en tiempo de indexacin y en
tiempo de bsqueda.
Slo tenemos que seleccionar la opcin Analysis:

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Anlisis

La consola nos permite realizar anlisis de la misma


forma que lo hace la herramienta:

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Anlisis

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Anlisis

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Navegar por esquema

https://<IP>:8443/solr/alfresco/admin/

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Navegar por esquema

https://<IP>:8443/solr/alfresco/admin/luke?
wt=xslt&tr=luke.xsl

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Configuracin de log

Modificamos el nivel de log:

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Flujos de trabajo con Activiti

Introduccin.
Activiti de un vistazo.
Herramientas.
Trabajando con Alfresco.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin

Introduccin a la gestin de procesos.


Qu es Activiti?
BPMN 2.0

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin a la gestin de procesos

El trmino workflow se traduce como flujo de trabajo,


hace referencia a la gestin modelada y computarizada
de todas las tareas que deben llevarse a cabo y de los
distintos protagonistas involucrados en realizar el
proceso de negocio.
Un proceso de negocio representa interacciones bajo
la forma de un intercambio de informacin entre los
distintos protagonistas, por ejemplo:
Personas.
Aplicaciones o servicios.
Procesos de terceros.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin a la gestin de procesos

En la prctica, un workflow puede describir:


El circuito de validacin.
Las tareas que deben realizarse entre los distintos participantes
de un proceso.
Los plazos que deben respetarse.
Los modos de validacin.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin a la gestin de procesos

El motor de workflow es una herramienta que permite dar forma a


y automatizar los procesos de negocios de la empresa.
Con este tipo de herramientas se pueden formalizar las reglas
comerciales de la empresa para automatizar el proceso de toma de
decisiones, es decir, qu rama de workflow elegir segn el contexto.
El propsito de los motores de workflow, o BPMS es acercar
personas, procesos y mquinas, con el objeto de reducir tiempo y
acelerar la realizacin de un trabajo.
Estos sistemas permiten trabajar en equipo desde diferentes lugares
fsicos, adems de disminuir la incertidumbre en los procesos (qu
hacer en en el paso siguiente?) ya que la herramienta, con el flujo de
trabajo implementado, informa de qu persona debe seguir
colaborando en el flujo o qu estado es al que ha pasado el
documento tras la etapa anterior.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin a la gestin de procesos

El diagrama representa la
secuencia de actividades y
asignaciones con una notacin
estndar (BPMN)

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Qu es Activiti?

En marzo de 2010, Tom Baeyens y Joram Barrez,


desarrolladores clave en el proyecto jBPM abandonan
Red Hat y se involucran en el proyecto Activiti
trabajando para Alfresco.
Por supuesto, Activiti se basa en su amplia experiencia
trabajando con jBPM.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Qu es Activiti?

Activiti es un proyecto de cdigo abierto de gestin de


flujos de trabajo (Business Process Management, BPM)
desarrollada en Java.
Es una plataforma de BPM de cdigo abierto con licencia
Apache, que implementa BPMN 2.0 a partir del Object
Management Group (OMG).
Ha sido creado por Alfresco. La versin 4 de Alfresco
utiliza Activiti como motor de workflow por defecto.
Aunque es importante resaltar que Activiti es un proyecto
OpenSource independiente.
Activiti puede ejecutarse como motor BPM independiente,
embebido en una aplicacin o dentro de Alfresco.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Qu es Activiti?

Activiti bsicamente es un framework que implementa


la especificacin BPMN 2.0. Es capaz de desplegar
definiciones de procesos, arrancar instancias de
estos, ejecutar tareas de usuarios e implementar otras
funcionalidades BPMN 2.0.
Bsicamente, Activiti es una mquina de estado:

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Qu es Activiti?

Algunos de sus competidores son:


JBoss BPM o jBPM.
BonitaSoft.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


BPMN 2.0

Business Process Model and Notation.


Es una notacin grfica que describe la lgica de los
pasos de un proceso de Negocio.
Esta notacin ha sido especialmente diseada para
coordinar la secuencia de los procesos y los mensajes
que fluyen entre los participantes de las diferentes
actividades.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


BPMN 2.0

BPMN proporciona un lenguaje comn para que las partes


involucradas puedan comunicar los procesos de forma
clara, completa y eficiente. De esta forma BPMN define la
notacin y semntica de un Diagrama de Procesos de
Negocio (Business Process Diagram, BPD).
BPD es un diagrama diseado para ser usado por los
analistas, quienes disean, controlan y gestionan procesos.
Dentro de un Diagrama de Procesos de Negocio BPD se
utiliza un conjunto de elementos grficos, agrupados en
categoras, que permite el fcil desarrollo de diagramas
simples y de fcil comprensin, pero que a su manejan la
complejidad inherente a los procesos de negocio.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


BPMN 2.0

BPMN es un estndar internacional de modelado de


procesos aceptado por la comunidad.
BPMN es independiente de cualquier metodologa de
modelado de procesos.
BPMN crea un puente estandarizado para disminuir la
brecha entre los procesos de negocio y la
implementacin de estos.
BPMN permite modelar los procesos de una manera
unificada y estandarizada permitiendo un
entendimiento a todas las personas de una
organizacin.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


BPMN 2.0

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


BPMN 2.0

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


BPMN 2.0

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


BPMN 2.0

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Activiti de un vistazo

Motor integrable.
Uso de APIs REST.
OpenSource y BPMN 2.0.
Suite BPM completa.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Activiti de un vistazo

Motor integrable:

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Activiti de un vistazo

Motor integrable:

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Herramientas

Activiti Explorer:

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Herramientas

Activiti Modeler:

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Herramientas

Activiti Modeler:

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Herramientas

Activiti Modeler:

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Herramientas

Activiti Designer:

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Trabajando con Alfresco

Introduccin.
Despliegue del workflow.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin

Se encuentra integrado en Alfresco desde la versin


3.4.e de la comunidad.
Antes de utilizar Activiti, Alfresco trabajaba con jBPM.
Se quera incorporar funcionalidades que jBPM no
soporta:
BPM portable, ligero y compatible BPMN 2.0.
Arquitectura REST.
Herramientas para usuario (modelado grfico, administracin, ...).
OpenSource.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Despliegue del workflow

Si estamos utilizando la versin empresarial, el


proceso de despliegue se podr realizar desde la
consola de despliegue de Activivi (Activiti Workflow
Console) situada en la URL:

http://localhost:8080/alfresco/activiti-admin
o tambin podemos desplegarlo utilizando para ello un
bean de Spring que se encarga de desplegarlos, el
llamado workflowDeployer.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Despliegue del workflow

Se define la propiedad workflowDefinitions:


Nos permite definir tantas definiciones de flujos de trabajo como
sea necesario.

<bean id="someco.workflowBootstrap" parent="workflowDeployer">


<property name="workflowDefinitions">
<list>
<props>
<prop key="engineId">activiti</prop>
<prop key="location">
alfresco/extension/workflows/helloWorld.bpmn20.xml
</prop>
<prop key="mimetype">text/xml</prop>
<prop key="redeploy">false</prop>
</props>

...

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Despliegue del workflow

Se define la propiedad workflowDefinitions (cont.):


<bean id="someco.workflowBootstrap" parent="workflowDeployer">
<property name="workflowDefinitions">
<list>

...
<props>
<prop key="engineId">activiti</prop>
<prop key="location">
alfresco/extension/workflows/helloWorldFork.bpmn20.xml
</prop>
<prop key="mimetype">text/xml</prop>
<prop key="redeploy">false</prop> </props>
</list>
</property>
</bean>

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Despliegue del workflow

Se definen tambin los modelos de tareas que


necesitemos:

...

<property name="models">
<list>
<value>alfresco/extension/model/scWorkflowModel.xml</value>
</list>
</property>

...

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Despliegue del workflow

Se definen los ficheros de propiedades:

...
<property name="labels">
<list>
<value>alfresco.extension.messages.scWorkflow</value>
</list>
</property>
</bean>

</beans>

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Paquete de recursos

Cada workflow tiene un ttulo y una descripcin. En el


fichero de recursos tendrn que aparecer como :
tituloWorkflowActiviti.workflow.title
tituloWorkflowActiviti.workflow.Description
Ejemplos:

holaMundo.workflow.title=Flujo de Hola Mundo


holaMundo.workflow.Description=Flujo de Hola Mundo

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Paquete de recursos

Para la informacin del modelo, se sustituye : por _,


se muestra un ejemplo a continuacin:

...

scwf_workflowmodel.type.scwf_submitHelloWorldTask.title=Start HW Workflow
scwf_workflowmodel.type.scwf_submitHelloWorldTask.description=Submit a workflow
that says hello in the log
scwf_workflowmodel.type.scwf_submitReviewTask.title=Start Someco Web Review

...

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


La consola de flujos de trabajo

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


La consola de flujos de trabajo

La URL http://localhost:8080/alfresco/faces/jsp/
admin/workflow-console.jsp nos permite acceder a la
consola.
Una vez dentro, podemos escribir comandos para
extraer informacin sobre flujos de trabajo.

> show workflows all

> show definitions all

> undeploy definition <workflow id>

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


CMIS y Alfresco

Introduccin.
Estndares de Comunicacin (JCR y CMIS).
Modelo de datos.
Servicios.
Consultas.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin

CMIS (Content Management Interoperability Services).


Estndar OASIS diseado por los principales fabricantes
de ECM y para la industria de ECM.
CMIS permite acceder a los sistemas de gestin de
contenidos que implementan CMIS, como Microsoft
SharePoint, IBM FileNet, Documentum de EMC, y
Alfresco en una forma normalizada e interoperable.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin

Con CMIS podemos crear aplicaciones que no tengan


que limitarse a un sistema de gestin de contenidos
concreto y permite asegurar el futuro de las
aplicaciones desarrolladas e integradas con los
repositorios con soporte CMIS.
El estndar ofrece un catlogo completo de
funcionalidades y es capaz de manejar una amplia
variedad de sistemas de gestin de contenidos.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin

Con CMIS podemos manejar los contenidos, metadatos


de contenidos, control de versiones, contenidos de
carpetas, asociaciones y transferencia de ficheros,
tambin contempla un lenguaje de consulta, muy
parecido a SQL, que permite hacer bsquedas por
contenidos, metadatos, contenido de un documento,
etc.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin

La implementacin CMIS que incorpora Alfresco es la


base para aplicaciones que se desarrollan e integran
con sta.
Esto significa que los desarrollos satlites de Alfresco
lo hacen mediante CMIS (Transfer Service, por ejemplo).
Las dos formas de integrar va CMIS son: usando la
interfaz CMIS RESTful AtomPub mediante WebScripts o
con mediante servicios web SOAP (ver abajo la URL de
cada una de ellas).

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Estndares de Comunicacin (JCR y CMIS)

Hasta este momento el estndar Java que se promova iba


liderado por el JCR 1.0 (Java Content Repository) con la
JSR-170 (desde 2005) y posteriormente el JCR 2.0 con la
JSR-283 (terminada en 2009).
En este momento se establece la discusin de si CMIS
terminar con dichos estndares, slo los dejar en segundo
plano siguiendo a CMIS o los dos convivirn.
De momento, Apache Chemistry, implementacin CMIS de
referencia, ha decidido integrarse con Apache JackRabbit,
implementacin JCR de referencia, sentando la convivencia
entre ambos estndares, y permitiendo a los proveedores de
CMS que implementan la JCR tambin puedan ofrecer
compatibilidad CMIS.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles
Introduccin

Los clientes de CMIS pueden ser de todo tipo de


orgenes y plataformas gracias a la comunicacin
independiente del lenguaje utilizada para comunicarse
con el servidor, como son SOAP o REST.
La API CMIS no se sita slo en el servidor, ya que el
cliente comparte el conocimiento de qu servicios le
proporciona el servidor, as como el modelo de datos
comn que intercambiar con l, definido por este
estndar.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin

El servidor CMIS deber implementar el API de CMIS


con la finalidad de proveer la capa de comunicacin
para las conexiones de los clientes,
Los CMS estn realizando la implementacin de esta
capa servidora dentro de s mismos, exponiendo as
una entrada ms a sus funcionalidades adems de las
propias.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Introduccin

Algunos CMS tienen ms de un repositorio donde


alojan la informacin, CMIS permite obtener la
informacin de qu repositorios utiliza permitiendo el
acceso a ellos, tanto por JCR como por el API de CMIS.
Para ello definir un modelo comn de datos con los
que trabajaran tanto la parte cliente como la parte
servidor en sus intercambios de informacin.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Modelo

El modelo de objetos CMIS es similar al modelo de


objetos de Alfresco excepto en cuanto a los aspectos.
CMIS soporta tipos de objetos que definen las
propiedades asociadas a cada tipo.
Cada objeto tiene un tipo de objeto, propiedades
definidas por ese tipo de objeto y un identificador de
objeto.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Modelo

Los tipos de objetos soportan herencia y pueden tener


subtipos tanto para documentos como para carpetas.
Los tipos de objetos de documento puede tener flujos
de contenido para almacenar y acceder a los datos
binarios.
Los tipos de objetos tambin puede estar relacionados
entre s con relaciones de tipos.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Modelo

Objeto Poltica o Directiva CMIS:


Un objeto de directiva representa una poltica administrativa que
puede aplicarse a un repositorio, como una poltica de gestin de
retencin de informacin.
Una lista de control de acceso es un tipo de objeto de directiva.
CMIS permite a las aplicaciones crear o aplicar ACLs. El
repositorio de Alfresco tambin utiliza objetos de directiva para
aplicar aspectos.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Modelo

Objeto documento CMIS:


Los objetos documento tienen propiedades y enlaces para acceder a
la informacin binaria que es el documento en si, pueden tener
propiedades multivaluadas y versiones.
Tambin pueden tener transformaciones que los representan como
por ejemplo un thumbnail.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Modelo

Versiones:
Las versiones en CMIS son sencillamente la forma de controlar
versiones de varios formas en diferentes implementaciones CMIS.
Cada versin es un objeto independiente con su propia
identificacin de objeto.
Con el identificador de un objeto determinado se puede obtener la
versin actual o todas las versiones del objeto, as como eliminar
una o varias versiones de un objeto.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Modelo

Objeto carpeta:
Los objetos documento se almacenan en una jerarqua de carpetas.
Al igual que en Alfresco, una carpeta puede estar dentro de otra
para crear la jerarqua.
La relacin entre carpeta y documento es de muchos a muchos, si
el repositorio soporta multi-presentacin (multifiling), un
documento puede estar presente en ms de una carpeta.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Servicios

Este estndar ofrece esta serie de servicios para


garantizar la interoperabilidad entre los sistemas:
Repository: Se usan para recabar informacin sobre los
repositorios, incluida informacin sobre un repositorio concreto y
sus tipos de objetos.
Navigation: Se utilizan para navegar a travs de la jerarqua de
carpetas y localizar documentos sobre los que se han hecho check-
out.
Object: Se utilizan como CRUD (Create, Retrieve, Update, Delete)
de objetos en el repositorio: Documentos, carpetas, relaciones,
politicas, objetos propiamente dichos, propiedades, streams,

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Servicios

Multi-filing: Se utilizan para aadir o eliminar archivos (ya


existentes) a una carpeta (puede que el repositorio no lo soporte, y
por tanto CMIS Servidor tampoco).
Discovery: Se utilizan para buscar objetos en el repositorio, se
utilizarn queries para ello.
Versioning: Se utilizan para navegar o actualizar las versiones de
los documentos.
Relationship: Se utilizan para obtener relaciones entre objetos.
Policy: Se utilizan para aplicar o eliminar polticas
ACL: Se utilizan para aplicar, eliminar u obtener listas de control
acceso sobre una carpeta o documento.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Consultas

Una consulta CMIS se basa en SQL-92.


La consulta es de slo lectura y no permite
manipulacin de datos.
En la sintaxis que se puede utilizar estn las siguientes
clusulas:
SELECT con una lista de objetos
FROM con los tipos de objeto que se consultan
JOIN para realizar una combinacin entre los tipos de objetos
(aspectos).

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles


Consultas

WHERE con especificar una condicin


IN y ANY para consultar propiedades multi-valuadas.
CONTAINS para especificar un texto concreto en la bsqueda.
IN_FOLDER y IN_TREE para buscar dentro de una jerarqua de
carpetas.
ORDERBY para ordenar los resultados.

Alfresco. La gestin de contenidos empresarial Jess Salinas Revelles