Este documento presenta un resumen de la charla "Alfresco. La gestión de contenidos empresarial" impartida por Jesús Salinas Revelles. La charla introduce el concepto de gestión de contenidos empresarial y describe las características y arquitectura de la plataforma Alfresco, incluyendo su repositorio de contenidos, servicios y capacidad de integración con sistemas externos.
2. Ponente
Jesús Salinas Revelles
21 octubre 2014
Hotel VP Jardín Metropolitano
Av. de la Reina Victoria, 12. Madrid
3. Índice del seminario
✴ Introducción a ECM.
✴ Alfresco ECM de un vistazo.
✴ Profundizando en la plataforma.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
4. Introducción a ECM
✴¿Qué es la gestión de contenidos
empresarial?
✴Situación actual.
✴Tendencias del mercado.
5. ¿Qué es la gestión de contenidos
empresarial?
✴ En los últimos años, se ha producido un gran
crecimiento en el volumen de información 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
documentación, organizarla y poder extraer de ella el
valor adicional que nos ofrece.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
6. ¿Qué es la gestión de contenidos
empresarial?
✴ Enterprise Content Management (ECM).
✴ Tecnología capaz de capturar, crear, almacenar,
gestionar, buscar y distribuir la información sobre la
que trabaja.
✴ Una herramienta de este tipo debe posibilitar la
integración entre los diferentes procesos de negocio,
incluyendo repositorios heterogéneos, por tanto,
permitir el almacenamiento y gestión de herramientas
ofimáticas, información procedente de plataformas
web, etc.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
7. ¿Qué es la gestión de contenidos
empresarial?
✴ Más allá de lo comentado anteriormente, ECM se puede
analizar desde dos perspectivas:
✴ Planteamiento estratégico: ECM ayuda a las empresas a
controlar sus contenidos y, de esa forma, mejorar su eficiencia,
colaboración y hacer que su información sea más fácil 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 organización.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
8. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Situación actual
✴ Las empresas, instituciones y organismos públicos
acumulan cada vez un mayor número 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 más
efectivo y rentable es contratar a compañías dedicadas
a la gestión documental.
9. Tendencias del mercado
✴ La gestión documental, debido a la gran cantidad de
contenidos y fuentes de información ha evolucionado
hacia la gestión de contenidos empresariales.
✴ Las necesidades que solicita el mercado obligan a los
proveedores a que sus productos sean cada vez más
flexibles e integrados. Es por esto que se tiende a
estandarizar la arquitectura y las tecnologías.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
10. Tendencias del mercado
✴ Nos encontramos con dos tipos de solución:
✴ Suite muy amplia de productos con funcionalidades muy escalables
y que abarquen todas las actividades de la empresa.
✴ Productos con funcionalidad más limitadas de gestión documental,
de un precio significativamente menor, que cubran todas las
necesidades de gestión documental de una pequeña o mediana
empresa.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
11. Tendencias del mercado
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
12. Alfresco ECM de un vistazo
✴¿Qué es Alfresco?
✴Su arquitectura.
✴Conceptos importantes:
✴Tipos personalizados.
✴Java Foundation services y WebScripts
en Alfresco.
✴Otros.
13. ¿Qué es Alfresco?
✴ Es un sistema de Gestión de Contenidos Empresarial
(ECM).
✴ Normalmente utilizado para Gestión de Documentos
Digitales en entornos exigentes (sometidos a
importantes requisitos de escalabilidad, alta
disponibilidad, capacidades de integración,
auditabilidad, etc.).
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
14. ¿Qué es Alfresco?
✴ Open Source: Tenemos el código disponible.
✴ Fácilmente extensible y basado en tecnologías JavaEE
estándares 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 gestión de contenidos empresarial Jesús Salinas Revelles
15. ¿Qué es Alfresco?
✴ Dos versiones: Community y Enterprise. Esta última
con un soporte profesional, con procesos de QA
estrictos, SLA, etc.
✴ La versión Community es suficientemente buena para
ponerla en producción en proyectos. Es gratuita.
✴ La versión Enterprise es de pago (aunque se puede
probar gratuitamente) y se recomienda para entornos
críticos.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
16. ¿Qué es Alfresco?
✴ Alfresco gestiona todos los contenidos en nuestra
empresa: documentos, imágenes, fotos, páginas 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 características, tales como, gestión
de metadatos, control de versiones, gestión del ciclo
de vida, flujo de trabajo, búsquedas, asociaciones a
otros contenidos, etiquetado, comentarios.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
17. ¿Qué es Alfresco?
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
18. ¿Una aplicación web?
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
19. ¿Unidad accesible vía ftp?
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
21. ¿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.
✴ También proporciona por defecto un conjunto de
aplicaciones para navegar por los contenidos, buscar,
gestionar, etc.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
22. ¿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 solución:
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
23. ¿Qué es Alfresco para el desarrollador?
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
24. ¿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 documentación relacionada con el
Stack de Tecnologías que soporta. Por ejemplo, puede
ejecutarse sobre:
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
✴ Tomcat.
✴ JBoss.
✴ Oracle Weblogic.
✴ Websphere.
25. ¿Qué es Alfresco para el desarrollador?
✴ Para el desarrolllador, Alfresco ECM proporciona un
repositorio escalable y una plataforma de gestión que
simplifica el desarrollo.
✴ Expone infinidad de capacidades de gestión en forma
de servicios.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
26. ¿Qué es Alfresco para el desarrollador?
✴ Entornos de desarrollo:
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
✴ Alfresco SDK.
✴ Alfresco Maven SDK.
27. ¿Qué es Alfresco para el negocio?
✴ Para el negocio, Alfresco ha sido diseñado para
soportar todo tipo de requisitos relacionados con los
contenidos: herramientas para la gestión de
documentos, aplicaciones, interfaces para trabajo de
oficina.
✴ La gestión de flujos de trabajo soporta diferentes
procesos de negocio.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
28. ¿Qué es Alfresco?
✴ El núcleo de Alfresco es un repositorio gestionado
por un servidor.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
29. ¿Qué es Alfresco?
✴ Alfresco incorpora una arquitectura moderna. El
sistema ha crecido como una aplicación Java, eso
significa que se puede ejecutar en cualquier plataforma
donde corre JavaEE.
✴ El núcleo 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 incorporación de nuevas funcionalidades
dentro del sistema. Esto se conoce como Web scripts y
puede utilizarse para la gestión de datos o servicios de
presentación.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
30. ¿Qué es Alfresco?
✴ Entre sus características de base más significativas
podemos destacar:
✴ Definición de modelos de contenidos personalizados.
✴ Facilidad a la hora de extender las funcionalidades de la
plataforma.
✴ Facilidad de integración con sistemas externos.
✴ No debemos olvidar su gestión de flujos de trabajo y
motor de búsqueda.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
31. ¿Qué es Alfresco?
NODO DE ALFRESCO DE TIPO "INFORME TÉCNICO"
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
INFORME TÉCNICO
INFORMACIÓN ESTRUCTURADA
MANEJADA POR EL GESTOR DOCUMENTAL
Número de informe : INF000XXX
Título : XXXXX
Autor : XXXXXXX
Etiquetas o palabras clave: XXX , YYY, ZZZ
Responsables: <Lista de usuarios del sistema o lista de
nombres>
Proceso: XXXX
<<CUALQUIER OTRO METADATO QUE QUIERA
DEFINIR EL CLIENTE>>
InformeTecnico.doc
32. ¿Qué es Alfresco?
✴ El desarrollador puede añadir nuevas funcionalidades
dentro de Alfresco mediante:
✴ Diseño 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, Añadir aspecto, borrar aspecto, enviar mail, etc.
✴ Diseño de webscripts.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
33. ¿Qué es Alfresco?
✴ Facilidad de integración con sistemas externos:
✴ Webservices de Alfresco.
✴ Estándar CMIS.
✴ ...
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
34. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Su arquitectura
✴ Introducción.
✴ Servidor de contenidos de Alfresco.
✴ Protocolos.
✴ Los servicios de Alfresco.
✴ Conclusión.
35. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Introducción
✴ La gestión de contenidos empresarial cubre un
amplio rango de aplicaciones: gestión de documental,
gestión de contenidos web, gestión de registros,
búsqueda, etc.
✴ La arquitectura de Alfresco ha sido diseñada para ser
capaz de soportar los requisitos asociados a todas
estas aplicaciones.
36. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Introducción
✴ Cada una de estas disciplinas tiene una serie de
características únicas y otras que se solapan, de tal
forma que, el diseño de cada capacidad no se ha
realizado de forma aislada sino en el contexto del
sistema completo.
✴ Alfresco pretende ser lo más simple posible en todos
los ámbitos: desarrollo, personalización, despliegue y
uso.
37. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Introducción
✴ La solución más simple y extendida de una solución
ECM es una unidad compartida. La arquitectura
Alfresco tiene como objetivo ser tan simple como una
unidad compartida.
38. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Introducción
✴ La arquitectura de Alfresco puede resumirse en este
esquema:
39. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Introducción
✴ 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 físicos se almacenan en el
sistema de ficheros y sus metadatos asociados en la
base de datos relacional.
40. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Introducción
✴ Servidor de contenidos de Alfresco:
✴ Agrupa un repositorio de contenidos y un conjunto de
servicios adicionales para construir la solución.
✴ El repositorio de contenidos ha sido definido siguiendo los
siguientes estándares:
✴ CMIS (Content Management Interoperability Services).
✴ JCR (Java Content Repository / JSR-170/286).
✴ Estos estándares proporcionan una especificación para la
definición de contenidos y su almacenamiento, recuperación de
contenidos, versionado, etc.
41. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Introducción
✴ Servidor de contenidos de Alfresco (cont.):
✴ El servidor de aplicaciones de contenido de Alfresco proporciona la
siguiente categoría de servicios sobre el repositorio de contenidos:
✴ Servicios de contenidos (por ejemplo, transformación,
etiquetados, extracción de metadatos).
✴ Servicios de control (por ejemplo, flujos de trabajo, gestión de
registros).
✴ Servicios de colaboración (por ejemplo, actividades, wiki).
42. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Introducción
✴ Clientes de Alfresco:
✴ Clientes web de Alfresco.
✴ Clientes web externos.
✴ ...
43. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Introducción
✴ Alfresco Explorer aparece desde la primera versión de Alfresco. Ha
sido implementado mediante Java Server Faces (JSF) y es altamente
personalizable, pero y muy IMPORTANTE, sólo puede desplegarse
como parte del servidor de aplicaciones de contenidos de Alfresco.
✴ Alfresco Share es un cliente algo más joven, centrado en aspectos
de colaboración. El concepto principal de Alfresco Share es la
noción de sitio web: un lugar donde los usuarios colaboran en la
generación 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 años, ha evolucionado y ahora soporta todas las
funcionalidades que ofrece Alfresco Explorer.
44. Servidor de contenidos de Alfresco
✴ La responsabilidad más 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 públicas para permitir
la comunicación con clientes.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
45. Servidor de contenidos de Alfresco
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
46. 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: configuración, autenticación, permisos y
transacciones que afectan a cualquier funcionalidad. Esta
infraestructura también protege al servidor de atarse a una
implementación específica (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 módulo con su propia especificación e
implementación.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
47. Servidor de contenidos de Alfresco
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
48. 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:
✴ Definición de la estructura de los contenidos.
✴ Creación, actualización y borrado de contenidos, metadatos
asociados y relaciones.
✴ Consultas a los contenidos, control de acceso (permisos) y
versionado.
✴ Renderizado de contenidos, locking, eventos, auditoría.
✴ Importación y exportación.
✴ Multi-idioma.
✴ Reglas y acciones.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
49. Servidor de contenidos de Alfresco
Content Repository
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
50. Servidor de contenidos de Alfresco
✴ El repositorio de contenidos proporciona una
implementación de estos servicios y los expone
mediante:
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
✴ API de Alfresco,
✴ CMIS y
✴ API Java JSR-170.
51. Servidor de contenidos de Alfresco
✴ El núcleo 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 gestión de contenidos empresarial Jesús Salinas Revelles
52. Servidor de contenidos de Alfresco
✴ Como ya se ha comentado anteriormente, Alfresco
expone intefaces públicas y remotas como único
elemento visible desde el cliente. Existen dos tipos:
✴ APIs remotas: permiten interacción programática con los
servicios del servidor.
✴ Protocolos que ofrecen esos mismos servicios a los usuarios
mediante un protocolo asociado al cliente.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
53. Servidor de contenidos de Alfresco
✴ Intefaces públicas y remotas:
Remote APIs
Protocols
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
54. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Protocolos
✴ Para permitir el uso de Alfresco en diferentes ámbitos,
el servidor de contenidos de Alfresco soporta
diferentes protocolos para la gestión de carpetas y
documentos.
55. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Protocolos
✴ CIFS (Common Internet File System)
✴ Es un protocolo que permite la proyección 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 implementación de servidor CIFS basada
en Java, JLAN.
56. Alfresco. La gestión de contenidos empresarial Jesús 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.
También existe herramientas que permite montar servidores
WebDAV como unidad de red.
57. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Protocolos
✴ FTP (File Transfer Protocol):
✴ Es un protoloco estándar de red para el intercambio y
manipulación de ficheros a través 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.
58. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Protocolos
✴ IMAP (Internet Message Access Protocol) es un
estándar 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 integración
con la suite Microsoft Office. Permite al usuario
familiarizado con esta suite trabajar sobre documentos
dentro de Alfresco.
59. Los servicios de Alfresco
✴ Introducción.
✴ Servicios del repositorio de contenidos.
✴ Servicios de aplicación de contenidos.
✴ Las APIs de Alfresco.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
60. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Introducción
✴ 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 públicos.
Por ejemplo, los servicios Java son internos.
✴ Los servicios se dividen en dos categorías.
✴ Servicios del repositorio de contenidos.
✴ Servicios de aplicación de contenidos.
61. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Introducción
✴ La mayoría de los servicios en Alfresco se construyen
en tres capas: núcleo Java, servicio de script público y
API RESTful.
62. Servicios del repositorio de contenidos
✴ Los servicios del repositorio de contenidos están
escritos en Java y son los servicios fundamentales
para la gestión de contenidos.
✴ Son los servicios Java internos.
✴ Gestión de ficheros y carpetas.
✴ Versionado y checkin/checkout.
✴ Auditoría.
✴ Autenticación, autorización y permisos.
✴ Modelado.
✴ Búsqueda.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
63. Servicios de aplicación de contenidos
✴ Los servicios de aplicación 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,
extracción de metadatos.
✴ Servicios de control: flujos de trabajo, proyectos web, etc.
✴ Servicios de colaboración: comentarios, etiquetado, actividades,
etc.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
64. 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 gestión de contenidos empresarial Jesús Salinas Revelles
65. Las APIs de Alfresco
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Embeddeb APIs
Remote APIs
66. 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 sólo lectura diseñada 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 combinándola con las plantillas.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
67. 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 gestión de contenidos empresarial Jesús Salinas Revelles
68. Las APIs de Alfresco
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
✴ APIs remotas:
69. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Conclusión
✴ Alfresco ECM, gracias a su potente arquitectura, nos
ofrece infinidad de alternativas de integración.
70. Como usuario final accediendo a la
información de forma directa
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
71. Como usuario final accediendo a
documentación a través de Alfresco Share
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
72. Integración con Alfresco totalmente
transparente para el usuario
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
73. Tipos personalizados
✴ Introducción.
✴ Diccionario de datos.
✴ Creación de un nuevo modelo de contenidos.
✴ Despliegue de modelo de contenidos.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
74. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Introducción
✴ 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
información que acompañará a nuestros documentos
digitales.
✴ Esta definición nos permite dotar de semántica al
documento para que posteriormente se puedan
implementar búsquedas y procesos más eficientes e
“inteligentes”.
75. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Introducción
✴ Un modelo de contenidos es un conjunto de tipos de
contenido y aspectos. Los modelos de contenidos
definidos son identificados de forma unívoca mediante
espacios de nombre (namespaces).
76. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Introducción
✴ 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 través de propiedades, asociaciones y
reglas o restricciones.
✴ El Diccionario de Datos es un metamodelo que
permite describir uno o más modelos de contenido
específicos.
77. 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 sólo 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 gestión de contenidos empresarial Jesús Salinas Revelles
78. Diccionario de datos
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
79. 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 estándar (ej.
Carpeta, Fichero, Dublin-Core, ...). http://www.alfresco.org/
model/content/1.0. Prefijo cm.
✴ Application: describe el modelo de aplicación 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 gestión de contenidos empresarial Jesús Salinas Revelles
80. Diccionario de datos
✴ El diccionario define un conjunto de tipos de datos
soportados por defecto, es decir, vamos a poder
manejar textos, números, fechas, booleanos, etc, sin
necesidad de tener que definir nuevos tipos:
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
81. 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 gestión de contenidos empresarial Jesús Salinas Revelles
82. Diccionario de datos
✴ Alfresco almacena, por defecto, los documentos como
nodos de tipo cm:content que están formados por un
fichero binario y por los metadatos básicos (titulo,
autor, fecha de modificación, etc.)
✴ Podemos heredar de cm:content para hacer un nuevo
tipo “Informe Técnico”.
NODO DE ALFRESCO DE TIPO "INFORME TÉCNICO"
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
INFORME TÉCNICO
INFORMACIÓN ESTRUCTURADA
MANEJADA POR EL GESTOR DOCUMENTAL
Número de informe : INF000XXX
Título : XXXXX
Autor : XXXXXXX
Etiquetas o palabras clave: XXX , YYY, ZZZ
Responsables: <Lista de usuarios del sistema o lista de
nombres>
Proceso: XXXX
<<CUALQUIER OTRO METADATO QUE QUIERA
DEFINIR EL CLIENTE>>
InformeTecnico.doc
83. Diccionario de datos
✴ Los tipos presentan un gran parecido a las clases en el
mundo de orientación 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 están limitados únicamente por
nuestra imaginación y requerimientos de negocio.
✴ Factura, Receta médica o Película serían ejemplos de tipos personalizados.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
84. Creación 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 gestión de contenidos empresarial Jesús Salinas Revelles
85. 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 extensión
de Alfresco para despliegues estáticos y dentro del
espacio “Company Home -> Data Dictionary ->
Models”) para despliegues dinámicos.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
86. 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 gestión de contenidos empresarial Jesús Salinas Revelles
87. 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 sección de imports hace que los modelos de
contenido estándares así como el metamodelo y el
diccionario de datos estén disponible para su uso y
referencia en nuestro modelo.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
88. 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"/>
✴ uri: identificador único del espacio de nombres
✴ prefix: prefijo que se usará en el resto del documento (debe
coincidir también con el que usa el modelo en la transparencia
anterior).
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
</namespaces>
...
89. Declarar un nuevo tipo de contenido
✴ Los nuevos tipos de contenido se declaran dentro del
modelo:
✴ Generalmente querremos heredar de cm:content que
es el tipo de contenido estándar de Alfresco.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
<model ... >
...
<types>
<type ...>
...
</type>
</types>
</model>
90. 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 gestión de contenidos empresarial Jesús Salinas Revelles
91. Tipo de contenido: Documento de Agencia Tributaria
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
<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>
92. Declaración básica de propiedades
✴ La declaración básica de una propiedad (metadato) de
un tipo de contenido es :
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
...
<type ... >
<property name="prefijo:nombrePropiedad">
<title>Titulo del metadato</title>
<type>d:tipoDeDato</type>
</property>
...
</type>
...
Tipo de dato declarado por el
Data Dictionary de Alfresco
93. Tipos de datos para las propiedades
✴ Como ya hemos comentado antes, los tipos de datos
soportados en el esquema Dictionary son:
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
94. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Restricciones
✴ El concepto de restricción puede utilizarse
opcionalmente para restringir los valores que Alfresco
almacenará en nuestras propiedades.
✴ Están 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 restricción predefinida
“cm:filename” que define una expresión regular para
chequear que una cadena es un nombre de fichero
válido.
95. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Aspectos
✴ Introducción.
✴ Definición de aspecto.
✴ Aspectos por defecto.
96. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Introducción
✴ 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 diseñar buenos
modelos reutilizables, flexibles y con buen
rendimiento.
✴ Se pueden aplicar a un nodo y posteriormente quitarle
estas propiedades. Son de “quita y pon”.
97. Definición de aspecto
✴ El elemento aspect define un aspecto dentro del
modelo de contenidos.
<aspect name="prefix:aspectName">
✴ Se define de forma similar a un tipo de contenido.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
<title>aspectTitle</title>
<properties>
<property >
...
</property>
...
</aspect>
99. Aspectos por defecto
✴ Alfresco nos ofrece un conjunto de aspectos, por defecto,
que podemos utilizar en nuestros modelos de contenidos:
✴ Classifiable Aspect: activa la categorización, por lo tanto se puede
aplicar categorías sobre el documento.
✴ Complianceable Aspect: se añade la propiedad para indicar
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
cuándo debe borrarse.
✴ Dublin Core Aspect: añade los metadatos de Dublic Core:
publisher, Contributor, Subject y Rights.
✴ Effectivity Aspect: añade las propiedades From y To al
documento.
✴ Emailed Aspect: añade un conjunto de propiedades de Email Data al
documento.
✴ Localizable Aspect: añade la propiedad Locale to the document.
100. Aspectos por defecto
✴ Summarizable Aspect: añade la propiedad Summary al
documento.
✴ Templatable Aspect: añade la propiedad cm:template, que es la
referencia a otro nodo, que será la plantilla.
✴ Translatable Aspect: añade la propiedad Translations al
documento.
✴ Versionable Aspect: habilita el versionado de documentos.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
104. Despliegue de modelo de contenidos
✴ Introducción.
✴ Crear el fichero de contexto.
✴ Despliegue estático.
✴ Despliegue dinámico.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
105. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Introducción
✴ Una vez que el modelo de contenidos ha sido definido, es
decir, el fichero xml ha sido creado, tenemos que
desplegarlo en nuestra instalación de Alfresco.
✴ Para que Alfresco reconozca la definición de nuestro nuevo
modelo debemos crear un fichero de contexto que haga de
cargador de la definición.
✴ El fichero de contexto debe llamarse como
<nombreModelo>-context.xml y colocarse en el fichero de
extensión para que Alfresco lo localice automáticamente.
✴ Los modelos pueden instalarse en Alfresco de forma
estática o dinámica. La primera necesitará el reinicio del
sistema.
106. Crear el fichero de contexto
✴ El fichero de contexto contiene uno o más bean de
configuración de Spring.
✴ Dependiendo de la distribución de Alfresco que
hayamos descargado tendremos un conjunto de
ficheros de contexto de ejemplo en el directorio de
extensión que nos servirán como plantilla para los
nuestros.
✴ Nota: el directorio de extensión es ${alfresco}/tomcat/shared/
classes.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
107. Crear el fichero de contexto
✴ Para la versión 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">
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
<property name="models">
<list>
<value>alfresco/extension/customModel.xml</value>
</list>
</property>
</bean>
</beans>
108. Crear el fichero de contexto
✴ La ruta alfresco/extension/customModel.xml se define
en relación a la carpeta de extensión 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">
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
<property name="models">
<list>
<value>alfresco/extension/companyModel.xml</value>
</list>
</property>
</bean>
</beans>
109. Despliegue estático (Static model)
✴ El despliegue estático 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 gestión de contenidos empresarial Jesús Salinas Revelles
110. Despliegue dinámico (Dynamic Model)
✴ Con el método anterior (modelos estáticos) será necesario
reiniciar el sistema para que lea los cambios de la carpeta
de extensión.
✴ Existe la posibilidad de usar modelos dinámicos, 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 gestión de contenidos empresarial Jesús Salinas Revelles
111. WebScripts en Alfresco
✴ Introducción.
✴ Elementos importantes.
✴ Documento de descripción.
✴ Controller Script.
✴ Plantillas.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
112. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Introducción
✴ 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 fácilmente Servicios Web para
gestión de contenidos identificados por una URI y accesibles
vía HTTP, es decir, integraciones REST.
✴ Podemos acceder, manejar y enlazar nuestros contenidos a
través 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.
113. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Introducción
✴ Podemos diferenciar entre dos grandes familias de Web
Scripts:
✴ Web Scripts de datos:
✴ Encapsulan el acceso o modificación del contenido/datos del
repositorio, por lo tanto, son expuestos siempre y sólo 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:
añadir tags a los documentos, actividades, gestión del site, etc.
114. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Introducción
✴ Podemos diferenciar entre dos grandes familias de Web
Scripts (cont.):
✴ Web Scripts de presentación:
✴ Permiten construir interfaces de usuario como dashlets para Alfresco,
portlets para un portal que siga el estándar JSR-168, componentes UI
como Alfresco SURF, un sitio Web o una aplicación a medida.
Generalmente renderizan HTML.
✴ Pueden ser desplegados en un servidor Alfresco o en un servidor
independiente. Cuando se escoge esta última opción, interactuan con
los Data Web Scripts. Por defecto existen los Web Scripts para
Portlets, integración con Office, Componentes SURF, etc.
115. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Introducción
✴ La interfaz de un Web Script está formada por:
✴ URI,
✴ Métodos HTTP y
✴ Tipos de documento.
✴ Estos elementos son la única información que deben
conocer los clientes.
116. Elementos importantes
✴ Un Web Script está formado por:
✴ Un documento de descripción: identifica la URI que instancia
el script, un nombre corto, descripción y requisitos de
autenticación y transacciones.
✴ Un script que actúa 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 más plantillas de respuesta FreeMarker denominadas
vistas. Se encargan de renderizar la respuesta en el formato
adecuado: HTML, ATOM, XML, RSS, JSON, CSV, o cualquier
combinación de ellos.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
117. Documento de descripción
✴ Tiene que tener la extensión .desc.xml para informar a
Alfresco que dicho documento es una descripción de
Web Script.
✴ Por ejemplo org/alfresco/ejemplo/
holamundo.get.desc.xml define (configuración por
convención).
✴ Un paquete org/alfresco/ejemplo.
✴ Un id de servicio holamundo.
✴ Un enlace al método GET de HTTP.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
118. Documento de descripción
<webscript>
<shortname>Hello World</shortname>
<description>Greet a user</description>
<url>/holamundo?to={name?}</url>
<format default="html">extension</format>
<authentication>user</authentication>
</webscript>
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
✴ Ejemplo:
✴ Analizamos los diferentes elementos xml que nos
permiten definir este documento de descripción.
119. Documento de descripción
✴ shortname: nombre corto del Web Script.
✴ description: (opcional) es la documentación del Web
Script.
✴ url: URI asociada al Web Script.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
120. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Controlador
✴ Un Web Script puede opcionalmente ejecutar JavaScript
en la invocación de su URI. Este JavaScript puede lanzar
consultas o actualizar el repositorio. También 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 descripción:
helloworld.get.js
121. Alfresco. La gestión de contenidos empresarial Jesús 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.
122. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Controlador
✴ Usando esta API podemos:
✴ Encontrar nodos via XPath y directamente via NodeRef o path.
✴ Realizar búsquedas incluyendo búsquedas a texto completo con
resultados ordenados.
✴ Navegar por jerarquía de nodos, examinar y modificar el valor de
propiedades, aspectos y asociaciones.
✴ Transformar y manipular contenido.
✴ ...
123. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Controlador
✴ Ejemplo: se añade un aspecto. El método addAspect
realiza esta operación.
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);
124. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Controlador
✴ Ejemplo: se crea un documento en la carpeta de
usuario.
✴ El método createFile realiza esta operación.
var doc = userhome.createFile("checkmeout.txt");
doc.content = "original text";
125. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Controlador
✴ Ejemplo: se crean nodos mediante diferentes
estrategias.
✴ El método createFile realiza esta operación.
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");
126. Alfresco. La gestión de contenidos empresarial Jesús 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();
}
}
127. // find the backup folder - create if not already exists
var backupFolder = space.childByNamePath("Backup");
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Controlador
✴ Ejemplo: crear el backup de un documento:
✴ Se utilizar el objeto raíz space y apoyándose en el método
childByNamePath se recupera el nodo que representa a la carpeta
de backup.
✴ El método hasPermission comprueba si el usuario tiene
permisos para crear hijos. El método createFolder crea la carpeta
if (backupFolder == null && space.hasPermission("CreateChildren"))
{
// create the folder for the first time
backupFolder = space.createFolder("Backup");
}
128. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Plantillas
✴ Una plantilla es un documento que puede aplicarse a
uno o varios objetos (por ejemplo, uno o más
documentos de un repositorio) para generar otro
documento. FreeMarker o XSLT son plantillas.
✴ La plantilla se escribe en un lenguage de plantillas
específico.
✴ El modelo de datos será el conjunto de objetos
disponible en la plantilla.
✴ Plantilla + Modelo de datos = salida
129. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Plantillas
✴ El desarrollador necesita conocer el lenguaje de
plantillas que debemos utilizar y el modelo de datos
disponible.
130. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Plantillas
✴ Alfresco trabaja por defecto con Freemarker.
✴ La extensión 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>
131. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Plantillas
✴ FreeMarker es un motor de plantillas basado en Java.
✴ Se definen plantillas que no son más 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.
132. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Plantillas
✴ http://freemarker.org/docs/index.html
133. Alfresco. La gestión de contenidos empresarial Jesús 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
134. Registrar un Web Script
✴ Los Web Scripts nuevos o actualizados son refrescados
automáticamente cuando se reinicia el servicio de
Alfresco.
✴ También podemos registrarlos manualmente
accediendo a la URL
http://<host>:8080/alfresco/service/index y pulsando
Refresh list of Web Scripts.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
135. Web Scripts Home
✴ Pequeña utilidad para gestionar nuestros Web Scripts y
ver cuales están desplegados.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
136. Probando el script
✴ Nos dirigimos a http://<host>:8080/alfresco/service/
ejemplo/holaMundo?nombre=<tu nombre> y
deberíamos ver la respuesta HTML esperada.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
137. Java Foundation services
✴ Introducción.
✴ Acceso a la API.
✴ Los servicios disponibles.
✴ Conceptos importantes.
✴ Servicio de nodos NodeService.
✴ Inyección de servicios.
✴ Construir nuevos servicios.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
138. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Introducción
✴ 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
implementación adecuada del servicio.
139. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
¿Para qué?
✴ Desarrollo de acciones en Alfresco:
✴ Una acción 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, Añadir aspecto, borrar aspecto, enviar mail,
etc.
✴ A veces, el término Rule Action se usa para describir un tipo de
acción. Son acciones asociadas a reglas sobre una carpeta.
140. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
¿Para qué?
✴ Desarrollo de acciones en Alfresco (cont.):
✴ El desarrollador puede crear acciones personalizadas para resolver
problemas totalmente específicos.
✴ Esta acciones UTILIZAN los Alfresco Java Foundation services.
141. Alfresco. La gestión de contenidos empresarial Jesús 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.
142. Alfresco. La gestión de contenidos empresarial Jesús 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.
143. Alfresco. La gestión de contenidos empresarial Jesús 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);
...
144. Factory.getBean("AuthenticationService");
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Acceso a la API
✴ Existen tres estrategias para acceder a estas interfaces
en nuestro código:
✴ Mediante Inyección de dependencias.
✴ Acceso manual mediante el método Spring getBean() de Spring.
✴ Indirectamente mediante el servicio de Alfresco ServiceRegistry:
el servicio de registro mantiene un listado de todos los servicios
del repositorio disponibles.
serviceRegistry.getAuthenticationService();
145. Alfresco. La gestión de contenidos empresarial Jesús 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 gestión de transacciones
TransactionService transactionService = serviceRegistry.getTransactionService();
146. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Acceso a la API
✴ La interface ServiceRegistry se encuentra en el paquete
org.alfresco.service, representa los servicios públicos
del repositorio de Alfresco.
✴ Proporciona metadatos de cada servicio y acceso a cada
uno de ellos mediante su interface:
147. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Acceso a la API
✴ El servicio de registro proporciona diferentes métodos
para acceder a los servicios:
✴ getActionService.
✴ getPermissionService.
✴ getAuthorityService.
✴ getFileFolderService.
✴ getScriptService.
✴ getWorkflowService.
✴ getNotificationService
✴ getAuditService
✴ ...
148. 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 métodos
para acceder y transformar el contenido de los nodos.
✴ SearchService: servicio de búsqueda.
✴ Servicio AuthenticationService.
✴ Servicio TransactionService.
✴ ...
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
149. 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 gestión de contenidos empresarial Jesús Salinas Revelles
150. 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 más información en Alfresco Data
Model API.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
151. Los nodos en Alfresco
✴ El concepto StoreRef comprime dos elementos:
✴ Protocol del almacen: eso es el tipo de almacén.
✴ Store id: Idenficador del almacén.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
✴ Ejemplos:
workspace://SpacesStore
archive://SpacesStore
152. Los nodos en Alfresco
✴ El concepto NodeRef comprime tres elementos:
✴ Los dos primeros asociados al store ref:
✴ protocolo: tipo de almacen.
✴ storeid: identificador del almacén.
✴ El tercero es el identificador del nodo dentro del almacén.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
✴ UUID.
✴ Ejemplos:
workspace://SpacesStore/5af5a38b-e20a-4885-bbd1-4b3fde9b0dd3
153. Servicio de nodos NodeService
✴ Se encuentra en el paquete
org.alfresco.service.cmr.repository:
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
154. 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 métodos:
✴ addAspect: este método añade un nuevo aspecto a un nodo dado.
✴ createNode: crea un nodo.
✴ deleteNode: borra un nodo.
✴ exists: verifica si existe un nodo.
✴ ...
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
155. Servicio de nodos NodeService
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
✴ 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);
156. Servicio de contenido ContentService
✴ Como ya se ha comentado antes, este servicio
proporciona métodos para acceder y transformar el
contenido de los nodos.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
157. Servicio de contenido ContentService
✴ Alguno de sus métodos:
✴ 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 transformación.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
158. Servicio de contenido ContentService
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
✴ 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();
159. Servicio de contenido ContentService
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
✴ 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);
160. Inyección de servicios
✴ Si necesitamos utilizar alguno de estos servicios dentro
de cualquiera de la extensiones desarrolladas en
Alfresco, tendremos que aplicando Inyección de
Dependencias (gracias a Spring Framework), ponerlos a
disposición de nuestro código.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
161. Inyección 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 gestión de contenidos empresarial Jesús Salinas Revelles
162. Inyección 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 gestión de contenidos empresarial Jesús Salinas Revelles
163. Inyección de servicios
✴ Servicio de búsqueda: 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>
...
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
</bean>
164. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Otros
✴ Alfresco webservices
165. Profundizando en la
plataforma
✴Alfresco Explorer y Share.
✴Búsquedas en Alfresco: Lucene y Solr.
✴Flujos de trabajo con Activiti.
✴CMIS y Alfresco.
✴Otros.
166. Alfresco Explorer
✴ Alfresco Explorer es el primer cliente web desarrollado
desde Alfresco para acceder al repositorio:
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
167. Alfresco Explorer
✴ Se encuentra desarrollada mediante JSF y
obligatoriamente tiene que ejecutarse junto al core de
Alfresco, no puede trabajar en remoto.
✴ Es una aplicación muy antigua y va a desaparecer en
próximas versiones del producto.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
168. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Alfresco Share
✴ Introducción a Share.
✴ Share y los modelos.
✴ Share y los flujos de trabajo.
169. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Introducción
✴ Alfresco Share es un cliente web introducido en la
versión 3 de Alfresco que se basa en Spring Surf y
YUI.
✴ Permite establecer espacios colaborativos,
relacionados con la gestión documental y la gestión de
contenidos.
170. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Introducción
✴ Dashboard de Alfresco Share
171. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Introducción
✴ El nivel de personalización del entorno es muy grande:
172. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Introducción
✴ Alfresco Share ha sido concebido para la creación 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.
173. Creación de sitios web
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
174. Personalización del sitio web
✴ Se selecciona el botón Más seleccionando la opción
Configurar sitio:
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
175. Personalización del sitio web
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
176. Personalización del sitio web
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
✴ Look and feel:
177. Personalización del sitio web
✴ Wikis, Blogs, calendario, etc.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
178. Personalización del sitio web
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
✴ Links:
179. Personalización del sitio web
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
✴ Listas de datos
180. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Miembros
✴ La sección miembros permite gestionar los usuarios o
grupos de usuarios que pertenecen a un sitio web:
181. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Miembros
✴ Se pueden invitar a los usuarios:
182. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Biblioteca
✴ Es el gestor documental de Share:
183. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Biblioteca
✴ Crear carpetas:
184. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Biblioteca
✴ Subir y añadir documentos:
185. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Biblioteca
✴ Crear contenidos:
186. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Biblioteca
187. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Flujos de trabajo
✴ Los flujos de trabajo definidos dentro de Alfresco
pueden manejarse en Alfresco Share sobre cualquier
documento:
190. El repositorio de Alfresco
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
191. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Sección Más
192. Búsquedas en Alfresco: Lucene y Solr
✴ Introducción.
✴ Lucene vs Solr.
✴ Búsquedas Alfresco v.4.
✴ Solr en Alfresco.
✴ Configuración en Tomcat.
✴ Administración de Solr.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
193. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Introducción
✴ Los procesos de búsqueda en Alfresco son de vital
importancia.
✴ Hasta su versión 3.4 se realizaban mediante Lucene.
✴ A partir de la versión 4 de Alfresco, por defecto, se
trabaja con Solr aunque sigue estando preparado para
trabajar con Lucene.
194. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Introducción
✴ Para la versión 4 de Alfresco se pretende:
✴ Conseguir que el repositorio sea más robusto y escalable.
✴ Reducir la carga que implica el uso de Lucene en indexación
transaccional.
✴ Gracias a la arquitectura de Alfresco, la interface de
búsqueda sigue siendo la misma. Este cambio no
implica modificación alguna desde el punto de vista del
desarrollo.
195. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Introducción
✴ Ventajas:
✴ No se necesita indexación durante una transacción.
✴ No se necesita duplicar índices en cada servidor.
✴ Las búsquedas pueden ser escaladas.
✴ Se pueden usar herramientas de administración de Solr.
✴ Mejoras en el acierto de los resultados.
✴ Mejoras en el rendimiento.
196. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Lucene vs Solr
✴ Apache Lucene es una librería Java que implementa
un motor de búsqueda de alto rendimiento.
197. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Lucene vs Solr
✴ Solr es una aplicación web construida sobre Lucene.
✴ Podríamos decir que Solr es Lucene + extra.
198. Alfresco. La gestión de contenidos empresarial Jesús 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:
199. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Lucene vs Solr
200. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Lucene vs Solr
✴ Cuando se trabaja en cluster:
201. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Lucene vs Solr
✴ Dado que los índices deben encontrarse en cada
servidor, Alfresco debe gestionar procesos de
replicación de índices.
202. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Lucene vs Solr
✴ En cambio cuando se trabaja
con Solr, el proceso de
replicación de índices
desaparece.
203. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Lucene vs Solr
✴ Apache Solr es una plataforma de búsquedas basada en
Apache Lucene, que funciona como un servidor de
búsquedas.
✴ Sus principales características incluyen búsquedas de
texto completo, resaltado de resultados, clustering
dinámico, y manejo de documentos ricos (como Word y
PDF).
✴ Solr es escalable, permitiendo realizar búsquedas
distribuidas y replicación de índices, y actualmente se
está usando en muchos de los sitios más grandes de
Internet.
204. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Lucene vs Solr
✴ La principal característica de Solr (o al menos la más
útil) es su API REST, ya que en vez de usar drivers o
APIs programáticas 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 representación simple que viaja entre el cliente y el
servidor, sin ninguna encapsulación rara con SOAP u
otras pesadillas. Además, los XML son legibles por
personas, y JSON se puede usar para consumir con
JavaScript y realizar pruebas.
205. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Lucene vs Solr
✴ Si estamos buscando Escalabilidad, Solr será nuestra
respuesta. En general, como opción por defecto y para
la inmesa mayoría de los casos es Solr.
✴ Pero si estamos buscando transaccionalidad y sincronía
absoluta entre contenidos e índices Lucene será
nuestra mejor opción.
206. Búsquedas en Alfresco v.4
✴ Servicios que ofrece Lucene siguen estando activos.
Podemos seguir usando Lucene si así lo creemos
conveniente.
✴ El proceso de indexación con Solr es asíncrono.
✴ Soporte a los mismos lenguajes de consulta.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
207. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Solr en Alfresco
✴ Introducción.
✴ Índices de Solr.
✴ Configuración en Tomcat.
✴ Administración.
208. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Introducción
✴ Analizamos la estructura por defecto de Solr dentro del
bundle de Alfresco.
✴ Esto nos permitirá de forma rápida entender cómo se
encuentra configurado:
209. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Introducción
✴ Directorio keystore: almacena el material criptográfico
que permite asegurar su comunicación con Alfresco.
✴ ssl.keystore: pares de claves pública/privada
✴ ssl.truststore: certificado de confianza.
✴ browser.p12: contiene el certificado que tenemos que instalar en
el navegador para acceder a la herramienta de administración de
Solr.
210. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Introducción
✴ Directorio solr: directorio home de solr, encontramos
su instalación.
211. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Introducción
✴ Solr trabaja con dos cores (índice sobre contenidos con
un esquema específico):
✴ Dos índices diferentes, uno para nodos vivos y otro para nodos
borrados:
✴ archive: nodos eliminados (carpeta archive).
✴ alfresco: nodos vivos (carpeta workspace).
212. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Introducción
✴ Cada core tiene dos directorios asociados:
✴ Uno donde se guardan los índices.
✴ Otro donde se guarda la configuración:
✴ *-SpacesStore
+ archive
+ archive-SpacesStore
+ ...
+ workspace-SpacesStore
+ workspace
+ ...
213. <?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>
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Índices de Solr
✴ <SOLR-HOME> tiene un fichero de configuración
llamado solr.xml:
✴ Donde se definen los diferentes índices que maneja. En
este caso maneja dos: archive y alfresco.
214. Fichero solrconfig.xml
✴ Para cada core, el fichero solrconfig.xml define los
parámetros de configuración 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>
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
</requestHandler>
215. Alfresco. La gestión de contenidos empresarial Jesús 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 crearán
subdirectorios.
216. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Índices de Solr
✴ El fichero solrcore.properties será, en la mayoría 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
217. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Índices de Solr
✴ Propiedades para definir la sincronización 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
218. Alfresco. La gestión de contenidos empresarial Jesús 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.
219. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Índices de Solr
✴ Propiedad alfresco.cron:
✴ La indexación entre Solr y Alfresco siempre se inicia a petición del
primero.
✴ Se conecta periódicamente al repositorio y pregunta por si se han
producido cambios.
alfresco.cron=0/15 * * * * ? *
220. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Índices de Solr
✴ Propiedad alfresco.secureComms:
✴ Permite habilitar o no comunicaciones cifradas:
# none, https
alfresco.secureComms=https
221. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Índices de Solr
✴ Propiedades para definir la comunicación 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
222. Configuración en Tomcat
✴ Pasamos a describir el proceso de instalación 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 gestión de contenidos empresarial Jesús Salinas Revelles
223. Configuración 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 gestión de contenidos empresarial Jesús Salinas Revelles
224. Configuración 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 gestión de contenidos empresarial Jesús Salinas Revelles
225. Configuración en Tomcat
✴ Una vez definida la ruta donde se encuentra el home de
solr:
✴ Se parametrizan sus ficheros de configuración.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
...
<Environment name="solr/home" type="java.lang.String" value="/
Applications/Curso/alfresco-4.1-enterprise/alf_data/solr"
override="true"/>
</Context>
...
226. Administración de Solr
✴ Introducción.
✴ Acceso a la herramienta.
✴ Análisis.
✴ Navegar por esquema.
✴ Configuración de log.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
227. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Introducción
✴ El acceso a la herramienta de administración de Solr se
realiza mediante navegador y requiere autenticación
mediante certificado digital.
✴ La distribución de Solr, como ya se ha comentado
anteriormente, nos proporciona un .p12 para tal efecto.
✴ Por lo tanto, debemos instalarlo en nuestros
navegadores.
228. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Introducción
229. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Introducción
230. Acceso de herramienta
✴ https://<IP_MAQUINA>:8443/solr/
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
231. Acceso de herramienta
✴ https://<IP_MAQUINA>:8443/solr/
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
232. Acceso de herramienta
✴ Acceso a ambos cores:
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
233. Acceso de herramienta
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
234. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Análisis
✴ La herramienta Analysis se encarga de mostrar cómo
funciona el motor de búsqueda internamente.
✴ El analizador se utiliza en tiempo de indexación y en
tiempo de búsqueda.
✴ Sólo tenemos que seleccionar la opción Analysis:
235. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Análisis
✴ La consola nos permite realizar análisis de la misma
forma que lo hace la herramienta:
238. Navegar por esquema
✴ https://<IP>:8443/solr/alfresco/admin/
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
239. Navegar por esquema
✴ https://<IP>:8443/solr/alfresco/admin/luke?
wt=xslt&tr=luke.xsl
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
240. Configuración de log
✴ Modificamos el nivel de log:
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
241. Flujos de trabajo con Activiti
✴ Introducción.
✴ Activiti de un vistazo.
✴ Herramientas.
✴ Trabajando con Alfresco.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
242. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
Introducción
✴ Introducción a la gestión de procesos.
✴ ¿Qué es Activiti?
✴ BPMN 2.0
243. Introducción a la gestión de procesos
✴ El término workflow se traduce como flujo de trabajo,
hace referencia a la gestión 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 información entre los
distintos protagonistas, por ejemplo:
✴ Personas.
✴ Aplicaciones o servicios.
✴ Procesos de terceros.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
244. Introducción a la gestión de procesos
✴ En la práctica, un workflow puede describir:
✴ El circuito de validación.
✴ Las tareas que deben realizarse entre los distintos participantes
de un proceso.
✴ Los plazos que deben respetarse.
✴ Los modos de validación.
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
245. Introducción a la gestión 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 según el contexto.
✴ El propósito de los motores de workflow, o BPMS es acercar
personas, procesos y máquinas, con el objeto de reducir tiempo y
acelerar la realización de un trabajo.
✴ Estos sistemas permiten trabajar en equipo desde diferentes lugares
físicos, además 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 gestión de contenidos empresarial Jesús Salinas Revelles
246. Introducción a la gestión de procesos
Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
El diagrama representa la
secuencia de actividades y
asignaciones con una notación
estándar (BPMN)
247. Alfresco. La gestión de contenidos empresarial Jesús 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.
248. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
¿Qué es Activiti?
✴ Activiti es un proyecto de código abierto de gestión de
flujos de trabajo (Business Process Management, BPM)
desarrollada en Java.
✴ Es una plataforma de BPM de código abierto con licencia
Apache, que implementa BPMN 2.0 a partir del Object
Management Group (OMG).
✴ Ha sido creado por Alfresco. La versión 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 aplicación o dentro de Alfresco.
249. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
¿Qué es Activiti?
✴ Activiti básicamente es un framework que implementa
la especificación 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.
✴ Básicamente, Activiti es una máquina de estado:
250. Alfresco. La gestión de contenidos empresarial Jesús Salinas Revelles
¿Qué es Activiti?
✴ Algunos de sus competidores son:
✴ JBoss BPM o jBPM.
✴ BonitaSoft.