Alfresco 5.0 and Liferay 6.2 CMIS integration

It is as easy as it sounds:
  1. Use same user and password in both servers, this can be done by having SSO or same LDAP on both applications. Also just use same user and password for both even with their internal DB.
  2. Add the two properties below to your Liferay configuration file and restart Liferay:

    [bash]
    $ vi /opt/liferay-6.2-6/apache-tomcat/webapps/liferay/WEB-INF/classes/portal-ext.properties
    session.store.password=true
    company.security.auth.type=screenName
    [/bash]

  3. 3rd: watch this 5 minutes screencast:

Thanks to my friends of Gobal Quark for the tips.

Revisión del libro “Intelligent Document Capture with Ephesoft” de PacktPub

Packt Publishing, la editorial que ha publicado varios libros sobre Alfresco, ha lanzado recientemente un nuevo libro llamado Intelligent Document Capture with Ephesoft. Ha sido escrito por Pat Myers, VP de Zia Consulting (partner de Alfresco) e  Ike Kavas fundador y CTO de Ephesoft que también fue empleado de Kofax antes de empezar este nuevo proyecto.

En blyx.com ya he escrito varias veces [1] , [2] sobre soluciones de digitalización y escaneo, incluso hicimos un webinar con Baratz sobre Alfresco y Ephesoft con demo incluida .

Este libro, basado en la versión 3 del producto, es estupendo para reforzar todo lo comentado anteriormente ya que Ephesoft es una herramienta que ha evolucionado mucho en los pocos años de vida que tiene.

Ephesoft es una solución para procesar documentos en papel, fax, correo electrónico, desde un ERP o cualquier otra herramienta corporativa que genere documentos gráficos o imágenes de los mismos, está hecha en Java (contiene Spring, Lucene, Hibernate, Jbpm, etc.) y es Open Source (con versión Community y Enterprise), clasifica, separa y extrae metadatos de forma inteligente implementando OCR desde una interfaz web bastante intuitiva y orientada tanto a administradores como a revisores u operadores. Además soporta interfaces de integración y exportación de los documentos con sus metadatos (personalizados o no) a diferentes soluciones de ECM mediante CMIS, como puede ser el caso de la integración con Alfresco que vimos en el webinar. Ephesoft es una alternativa a otras soluciones que hay en el mercado como Kofax o Athento.

  • El libro comienza con una introducción genérica pero completa sobre el mundo de la digitalización y ejemplos reales muy útiles para todos los perfiles involucrados a la hora de hacer un proyecto de digitalización (desde el comercial que lo vende, hasta el programador, administrador y  operador). Es una base esencial e ilustrativa para aprender bien  conceptos como los diferentes métodos de entrada, clasificación, extracción y exportación. También contempla tipos de documentos con ejemplos.
  • En el capitulo segundo se hace una descripción completa sobre todas las características de Ephesoft y muestra las interfaces web de administrador y operador.
  • En el tercer capítulo se va al grano y nos enseña a hacer cargas masivas y gestión de procesos batch para automatizar el procesamiento e ingesta de documentos escaneados (creación de batch, tipos documentales, clasificación, creación de nuevos campos, extracción de valores, expresiones regulares y exportación).
  • Tras esto, se pasa al procesado, revisión y verificación de toda la información en el capitulo cuatro.
  • El quinto capítulo es el clave desde mi punto de vista, ya que cubre características internas de Ephesoft y permite  comprender correctamente el funcionamiento del sistema en cuanto a clasificación, extracción y exportación. Cómo usar códigos de barras, imágenes, documentos complejos y clasificación automática o personalizada. Combinación con valores en BBDD externas, escáner web con origen TWAIN, exportación CMIS integrado con Alfresco (con un ejemplo de configuración paso a paso con Alfresco) y enumeración de otros ECM conocidos que también se pueden integrar.
  • En el capítulo seis se cubre todo lo relacionado con extender y personalizar la plataforma, añadir métodos de clasificación, extracción, scripts, integraciones, procesos automáticos para rellenar o extender datos concretos, gestión de digitalización distribuida geográficamente, aprendizaje automático del tipo clave/valor con expresiones regulares, etc.
  • Por último, el capítulo siete habla sobre algunos trucos, buenas prácticas y resolución de problemas comunes como gestión de logs, integración con Active Directory o LDAP y temas más variados.

Generalmente, los libros que comento en el blog y no me parecen medianamente provechosos no les dedico un post. Este libro es una referencia interesante y un punto inicial para hacer proyectos con Ephesoft. Si estás en este mundo de digitalización y ECM, y sea cual sea tu nivel de responsabilidad te recomiendo este libro, aunque hay capítulos muy específicos y orientados a desarrolladores, seguro que te aportará argumentos para tu día a día y mejorar o reforzar los conocimientos de captura inteligente. Si ya dominas totalmente la solución y has hecho proyectos con Ephesoft posiblemente aprendas poco leyendo el libro. Aunque muchos de los temas cubiertos en el libro se pueden encontrar por Internet, aquí lo tienes todo en el mismo sitio, explicado con fluidez y bien organizado. ¿Le falta algo? Si, parte de instalación, despliegue y arquitectura, pero también se encuentra por internet. ¿Lo recomiendo? Si.

Conoce el estándar CMIS: Trabajar con CMIS

CMIS soporta SOAP y también REST a través del protocolo AtomPub. Atom o AtomPub es un estándar del IETF para la creación y actualización de los recursos web. Está basado en REST y es muy flexible en la extensión de los metadatos que maneja. Este protocolo es la base para la API REST.
CMIS está hecho pensado en los sistemas existentes y para permitir casos uso básicos, tales como:
    • Permite a los usuarios la creación colaborativa de contenido, por ejemplo para hacer uno o más documentos, páginas web, etc.
    • Una forma de acceso a portales, con CMIS se permite visualizar y mostrar contenidos desde múltiples fuentes.
    • Mashups de contenidos en sitios web, sitios web que usan CMIS pueden crear aplicaciones compuestas o integrar los datos y las funcionalidades de uno o varios repositorios.
    • Búsqueda paralela contra múltiples interfaces de repositorios CMIS.
  • Repositorio CMIS
CMIS se centra en servicios que puede ofrecer un repositorio para ser realmente interoperable. Estos servicios están basados en gestión de contenidos, metadatos e índices.
El repositorio CMIS, es la forma que tiene Alfresco de mostrar todos los contenidos cumpliendo los requerimientos del estándar. Mediante CMIS podemos ver las capacidades CMIS de nuestro Alfresco en este enlace http://localhost:8080/alfresco/service/cmis/index.html. Vamos a ver con más detalle tres conceptos fundamentales:
    • Consultas CMIS
    • Servicios CMIS
    • Modelo de objetos CMIS
  • Consultas CMIS:
Una consulta CMIS se basa en SQL-92. La consulta es de sólo lectura y no permite manipulación de datos.
En la sintaxis que se puede utilizar están las siguientes cláusulas:
    • SELECT con una lista de objetos
    • FROM con los tipos de objeto que se consultan
    • JOIN para realizar una combinación entre los tipos de objetos (aspectos).
    • WHERE con especificar una condición
    • IN y ANY para consultar propiedades multi-valuadas.
    • CONTAINS para especificar un texto concreto en la búsqueda.
    • IN_FOLDER y IN_TREE para buscar dentro de una jerarquía de carpetas.
    • ORDERBY para ordenar los resultados.
Para hacernos una idea, podríamos entender una consulta CMIS en una estructura relacional donde el tipo de objeto sería como una tabla, el objeto como una fila y la propiedad como una columna que puede tener varios valores. Además se puede consultar el contenido binario real mediante una consulta de texto completo e información de ruta de la carpeta con ayuda de las funciones in_tree y in_folder. Las consultas también se pueden paginar para crear la interfaz de presentación al usuario. Estos son algunos ejemplos de consultas:

[sql]
SELECT * FROM cmis:document
SELECT * FROM cmis:document WHERE cmis:name = ‘invite-email.ftl’
SELECT * FROM cmis:document WHERE cmis:creationDate > TIMESTAMP ‘2011-04-01T00:00:00.000+00:00’
SELECT * FROM cmis:document WHERE CONTAINS(‘alfresco’)
[/sql]

  • Servicios CMIS:
Como hemos comentado, CMIS proporciona servicios a los que puede acceder mediante SOAP o AtomPub (REST), que se pueden usar dependiendo de la preferencia o caso de uso. Estos son los servicios CMIS soportados:
    • Servicios del Repositorio: permiten descubrir repositorios disponibles, obtener la capacidad de estos repositorios y proporcionar información de los tipos disponibles en el repositorio desde el Diccionario de Datos.
    • Servicios de Navegación: permiten navegar por el repositorio mediante el acceso al árbol de carpetas. Se pueden utilizar estos servicios para saber elementos padres e hijos de un objeto concreto.
    • Servicios de Objeto: proporcionan CRUD (Crear, Leer, Actualizar, Borrar) y control de los servicios en cualquier objeto, incluyendo documento, carpeta, política y objetos relacionados. Para los documentos, esto incluye establecer y obtener de sus propiedades, políticas y el contenido en si mismo. Estos servicios se pueden usar mediante la ruta al objeto o el identificador único del objeto. También se pueden saber para qué acciones están autorizados los usuarios.
    • Multifiling Services: permiten establecer jerarquías añadiendo o eliminando un objeto de una carpeta.
    • Servicios de Descubrimiento (discovery services): permiten los servicios de consultas y cambios, adicionalmente permiten paginación de los resultados de las consultas.
    • Servicios de Cambios: permiten saber lo que el contenido ha cambiado desde la última vez que se ha marcado el contenido. Se pueden utilizar estos servicios de cambio para la indexación externa y para servicios de replicación.
    • Servicios de Control de Versiones: funcionan en paralelo a los servicios objeto y proporcionan los servicios de check-in y check-out, además de el historial de versiones de los objetos versionados.
    • Servicios de Relación: permiten crear, gestionar y acceder a las relaciones o asociaciones entre objetos.
    • Servicios de Políticas: se aplican sobre los objetos del repositorio. Las políticas son los objetos utilizados para implementar seguridad, registro o control.
    • Servicios de ACL: permiten crear, gestionar y acceder a las listas de control para controlar quién puede realizar ciertas operaciones sobre un objeto.
  • Modelo de objetos CMIS:
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.
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 también puede estar relacionados entre sí con relaciones de tipos.
    • Objeto Política o Directiva CMIS:
Un objeto de directiva representa una política administrativa que puede aplicarse a un repositorio, como una política de gestión de retención de información.
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 también utiliza objetos de directiva para aplicar aspectos.
    • Objeto documento CMIS:
Los objetos documento tienen propiedades y enlaces para acceder a la información binaria que es el documento en si, pueden tener propiedades multivaluadas y versiones. También pueden tener transformaciones que los representan como por ejemplo un thumbnail.
    • Versiones:
Las versiones en CMIS son sencillamente la forma de controlar versiones de varios formas en diferentes implementaciones CMIS. Cada versión es un objeto independiente con su propia identificación de objeto. Con el identificador de un objeto determinado se puede obtener la versión actual o todas las versiones del objeto, así como eliminar una o varias versiones de un objeto.
    • Objeto carpeta:
Los objetos documento se almacenan en una jerarquía de carpetas. Al igual que en Alfresco, una carpeta puede estar dentro de otra para crear la jerarquía. La relación entre carpeta y documento es de muchos a muchos, si el repositorio soporta multi-presentación (multifiling), un documento puede estar presente en más de una carpeta.
  • Enlaces que te pueden interesar:
Os recuerdo que el próximo miércoles 27 de abril hacemos un webinar en español sobre Introducción a CMIS, te puedes registrar aquí http://www.alfresco.com/es/about/events/2011/04/introduccion_cmis/

Conoce el estándar CMIS: Introducción

Este es el primero de una serie de artículos en los que intentaré aportar mi grano de arena para conocer mejor este estándar del que hay mucha información en inglés y poca en español.
  • Introducción:

CMIS, que significa Content Management Interoperability Services, es un estándar OASIS diseñado por por los principales fabricantes de ECM y para la industria de ECM. CMIS permite acceder a los sistemas de gestión de contenidos que implementan CMIS, como Microsoft SharePoint, IBM FileNet, Documentum de EMC, y Alfresco en una forma normalizada e interoperable.

Con CMIS podemos crear aplicaciones que no tengan que limitarse a un sistema de gestión de contenidos concreto y permite asegurar el futuro de las aplicaciones desarrolladas e integradas con los repositorios con soporte CMIS. El estándar ofrece un catálogo completo de funcionalidades y es capaz de manejar una amplia variedad de sistemas de gestión de contenidos. Con CMIS podemos manejar los contenidos, metadatos de contenidos, control de versiones, contenidos de carpetas, asociaciones y transferencia de ficheros, también contempla un lenguaje de consulta, muy parecido a SQL, que permite hacer búsquedas por contenidos, metadatos, contenido de un documento, etc.

  • Implementación de CMIS en Alfresco

La implementación CMIS que incorpora Alfresco es la base para aplicaciones que se desarrollan e integran con ésta. Esto significa que los desarrollos satélites de Alfresco lo hacen mediante CMIS (Transfer Service, por ejemplo). Las dos formas de integrar vía 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).

Si vas a programar CMIS AtomPub en Java, puedes utilizar las librerías Apache AbderaAbdera proporciona implementaciones cliente y servidor Atom. Si quieres programar CMIS con PHP, puedes utilizar clientes PHP con soporte CMIS como este o echar un vistazo a la integración Alfresco-Drupal. También existen librerías CMIS .NET, Python, Flex o visita la web del proyecto Apache Chemistry donde encontrarás librerías para Java, Python, PHP y .Net.

A la hora de hacer una aplicación sobre Alfresco o integrar alguna existente, CMIS es la respuesta, os permitirá tener una aplicación portable a otros sistemas ya que podríamos hacer tareas como por ejemplo:

  • El uso o consulta de aspectos o propiedades.
  • Agregar o gestionar los flujos de trabajo.
  • Aplicar acciones o normativas.
  • Realizar operaciones de gestión de registros/expedientes.
  • Trabajar con la gestión de contenidos web.
  • Realizar cualquier gestión o tarea administrativa, la gestión o revisión de usuarios y grupos.
  • Integrar otros Web Scripts con el protocolo AtomPub de CMIS.
URLs a tener en cuenta cuando hablamos de CMIS y Alfresco:
En sucesivos artículos veremos más sobre CMIS, políticas, versiones, objetos, estructura, etc.