8/12/11

Alfresco como Plataforma, Parte 3

Continuamos la serie Alfresco como Plataforma, original de Jeff Potts, COO de Alfresco. En las entregas pasadas describimos el problema que enfrentan las empresas ante la gestión de contenidos y colaboración, y como Alfresco, con su enfoque abierto, innovador, listo para usar y desplegar, propone una solución lista para construir hoy las aplicaciones centradas en contenido del presente y el futuro.

Repasando lo que expresamos en el post anterior, una plataforma es un conjunto de servicios diseñados para crear aplicaciones. Los programadores usan e integran los servicios para crear soluciones de software. Ejemplos de plataformas que nos resultan familiares son SAP, Lotus Domino y Documentum. También existen frameworks y herramientas como PHP, LAMP, JEE, Spring,  y otros productos de middleware que no son precisamente plataformas. (A propósito, vean porque SAP eligió Alfresco como su plataforma ECM corporativa)
La distinción de Alfresco como plataforma es la amplitud de servicios que incorpora, y la forma en la que combina  herramientas y frameworks como Spring, Lucene, Solr, jBPM, Activiti y Rhino, para mencionar los más relevantes, para brindar servicios ágiles al repositorio.

Repasemos las innovaciones de Alfresco para facilitar la creación de aplicaciones centradas en contenido, particularmente REST WebScripts y CMIS en este post, y otros en la siguiente entrega.

REST WebScripts
De la lista del post anterior, esta tecnología provee servicios para puntos de integración, API pública y modelo de desarrollo.

REST WebScripts es una implementación del patrón MVC (Model View Controller), con la flexibilidad de usar JavaScript o Java para el controlador, Freemarker para la vista, y el repositorio de Alfresco como modelo. Este framework es parte de Spring WebScripts. Permite exponer los servicios del repositorio como servicios REST, servicios que son más ágiles, livianos y simples de implementar que las alternativas basadas en SOAP y RMI (usados extensivamente por los competidores, complicando la vida de los integradores)

Originalmente, Alfresco propuso una API REST para sus propias necesidades de servicios. Con el tiempo, la API se extendió, creció, se consolidó y hoy abarca las operaciones más importantes y frecuentes del repositorio. Con la API REST y WebScripts tenemos múltiples posibilidades: crear nuevos servicios específicos para nuestra solución, usar los servicios "out of the box" de Alfresco, o combinar ambos, extendiendo los servicios existentes en nuevas modalidades y comportamientos.

Además de potentes, las herramientas de la API REST WebScripts son entretenidas y brindan un marco de desarrollo rápido y efectivo. El patrón MVC es conocido por los desarrolladores, lo que facilita la adopción. La mejor demostración de la energía y capacidad de REST WebScripts es Alfresco Share, la aplicación colaborativa de Alfresco, basada 100% en servicios REST usados y consumidos por la capa cliente.

CMIS (Integration Hooks, Public API)
Antes que SQL fuera un estándar, cada base de datos tenía un lenguaje de consultas. Una vez que se estandarizó el lenguaje, los programadores pudieron escribir aplicaciones que podían correr en casi cualquier sistema que soportara SQL, con algunas precauciones ;-).
El estándar CMIS (Content Management Interoperability Services) busca lograr el mismo objetivo, ahora para la explotación de repositorios de contenido no estructurados. Es un lenguaje independiente de los fabricantes y vendedores, diseñado para trabajar con documentos, carpetas, listas de control de acceso, tipos y relaciones entre objetos de un repositorio. Un programador puede basar una aplicación usando los servicios de la API CMIS, y esta podría, al menos teóricamente, ejecutarse contra un repositorio que implemente el estándar CMIS.

Alfresco ha sido el primero en ofrecer un servidor de contenido compatible con CMIS, o CMIS-compliant. Y continua aportando significativamente a la elaboración de este estándar a través de su membresía en el  comité OASIS. También hace sus aportes al proyecto Apache Chemistry, servidor CMIS de referencia y autor de las bibliotecas de desarrollo Java, PHP, .NET, y Python. En resumen, Alfresco quiere ser el líder cuando se hable de servidores CMIS con alto rendimiento, escalabilidad y cumplimiento de normativas.

Cuando las personas consultan sobre las herramientas para construir aplicaciones basadas en Alfresco, la recomendación es usar CMIS tanto como puedan. No solo ahorrarán tiempo y esfuerzo. Además, en caso que deban cambiar de repositorio, pueden rescatar una gran parte, si no todo, de la capa de cliente. Asimismo, CMIS es la base de integración de productos entre Alfresco, Joomla y Drupal, para que Alfresco sea el repositorio de estos productos de Web Content Management.

6/12/11

Alfresco como plataforma, Parte 2


Continuamos con la serie Alfresco como Plataforma, original de Jeff Potts, autor de Alfresco Developers Guide y CCO de Alfresco. En la entrega pasada planteamos el problema que enfrentan las empresas ante la gestión de contenidos y colaboración. En este post explicamos brevemente los enfoques erróneos,  herramientas que no son adecuadas, y cómo abordar el problema con combinaciones de  componentes de software que aportan soluciones.

Para muchas empresas la gestión de contenido es un problema difícil de manejar. Puede ser por el volumen de datos involucrados, los requisitos de seguridad, los metadatos que se asocian con los documentos, y los procesos de negocio, que impregnan todo lo anterior, contribuyendo a la confusión. Cuando tratamos de resolver el problema con estructuras de datos, bases de datos relacionales, pantallas y mantenedores, no solo agravamos el problema, sino que sumamos frustración a la confusión.

La mayoría de las empresas no puede anticipar las necesidades de "capturar, organizar y compartir" de la organización, con precisión suficiente para aplicar una solución tipo "talla única", aplicable a todos los casos. Ante eso, es preferible enfocarnos en una arquitectura basada en componentes de middleware que forman un stack no estructurado, algo así como un patrón de uso, o un conjunto de herramientas.

El nombre no es tan importante,  lo relevante es que estas herramientas de middleware, combinadas de forma inteligente, pueden permitirnos gestionar contenido, o sea, datos no estructurados, de una forma tan flexible y estándar como lo hace una base de datos relacional para los datos estructurados,

En la base de ese stack de componentes hay un repositorio de contenido. El repositorio está diseñado para gestionar datos no estructurados (como archivos y sus metadatos), de un modo mucho más eficiente que las soluciones tradicionales de bases de datos relacionales. El stack incluye, además de la persistencia de los datos, una gran cantidad de servicios útiles que rodean el repositorio. Eso es lo que llamamos una plataforma.

Una plataforma es un conjunto de servicios diseñados para crear aplicaciones. Los programadores usan e integran los servicios para crear soluciones de software. Los servicios importantes varían, dependiendo de la aplicación que se está construyendo. Para las aplicaciones centradas en el contenido, los servicios críticos deben ser, como mínimo, una buena parte de esta lista:
  • Interfaz de usuario / la capa de presentación
  • Modelo de datos y  modelo de contenido / la capa de persistencia
  • Servicios de biblioteca (registro y salida, carga, descarga, control de versiones)
  • Transacciones
  • Seguridad
  • Workflow / Business Process Management (BPM)
  • Puntos de integración
  • Programador de tareas y actividades del repositorio
  • API pública
  • Búsqueda
  • Transformación y Presentación
  • Etiquetado / Clasificación
  • Modelo de desarrollo (configurar, personalizar, ampliar, administrar y desplegar)
Esta plataforma de servicios, que envuelve al repositorio, permite construir cualquier aplicación centrada en contenido. Por supuesto, fabricar esa plataforma requiere mucho trabajo y esfuerzo. La buena noticia es que no tenemos que construirla, existe y está disponible hoy.

Alfresco es la plataforma de código abierto diseñada para la construcción de aplicaciones centradas en contenido. Ofrece las funcionalidades para hacer frente a los desafios que hemos mencionado anteriormente, aportando servicios de colaboración, coordinación, ciclo de vida y gestión.

Esto es precisamente lo que nos ha entusiasmado desde un principio. Tenemos a nuestra disposición un conjunto de herramientas que ofrecen toda la funcionalidad de los llamados "líderes" de ECM, en un paquete mucho más esbelto, de código abierto, compatible con estándares, de libre disposición para la edición comunitaria  o a una fracción del costo de sus competidores, para la versión comercial.

Miles de personas han hecho la misma conclusión:  Podemos ahorrar tiempo y dinero enfrentando el problema "capturar, organizar y compartir" con Alfresco. Centenares de organizaciones están usando Alfresco para resolver problemas de contenido, agregar valor a los procesos, y responder más rápidamente al cambio

En la siguiente entrega enumeraremos algunas de la innovaciones de Alfresco como plataforma, especialmente sobre los servicios REST, workflow, protocolos  de acceso, y CMIS. Estos son los servicios de la plataforma que facilitan la construcción de aplicaciones centradas en contenido.

Manténganse conectados.