A vueltas con la tecnología de integración

Por Jose Ignacio Yarza Vidal
Project Manager de OpenSistemas

En este post voy a contar brevemente la experiencia que hemos tenido integrando dos productos con tecnologías diferentes como son JavaEE y PHP.

En un proyecto reciente había que integrar un gestor de contenidos (CMS – Nuxeo DAM, tecnología JavaEE) con un sistema de eLearning (LMS – Dokeos, tecnología PHP). El uso que se le iba a dar al CMS era como repositorio y reproductor de contenidos multimedia, en particular vídeo. Se trataba de almacenar vídeos con sus metadatos y luego reproducirlos desde las páginas del LMS.

La primera apuesta para la integración fue utilizar el estándar CMIS (Content Management Interoperability Services). Utilizar un estándar parecía lo más lógico ya que significa seguir la corriente de los sesudos ingenieros expertos mundialmente en el tema. Al igual que me pasa con SOAP, o J2EE (en su versión 1.4, no el más reciente JavaEE), CMIS lo veo con cierta dosis extra de “sobreingeniería”. Pero no es una crítica, en general los estándares suelen ser más complejos de lo que requiere la solución que se va a implementar, porque deben cubrir el máximo número de escenarios posibles.

Al desarrollar la prueba de concepto para verificar los requerimientos, nos dimos cuenta de que CMIS no iba a cumplir con lo necesario. Resulta que CMIS sólo nos permitía transmitir metadatos del modelo estándar y por tanto no servía para la comunicación de datos específicos de la solución. En nuestro caso teníamos que recuperar cosas como el storyboard de los vídeos o thumbnails. El caso es que utilizábamos datos fuera de la norma, y utilizar CMIS resultó imposible. Había que buscar una alternativa más flexible que nos permitiera recuperar cualquier cosa que hubiera en el CMS.

Nuxeo proporciona también servicios REST (Representational state transfer) en formato JSon, que forman una muy flexible Restful web API. La simplicidad de REST me gusta y cuando no hay un estándar claro suele ser mi primera opción. En este caso era el plan B.

Buscando un poco encontramos en Github un proyecto de código abierto que implementaba un cliente PHP básico de la RESTful web API de Nuxeo. Tomando este código como base pudimos construir una API a medida para el proyecto, e integrar Nuxeo con Dokeos, pudiendo mostrar listados de videos con sus thumbnails y reproducir los videos servidos desde Nuxeo DAM. Resultó una solución bastante sencilla y eficiente. La conclusión es que a menudo la solución más simple es la mejor.

Ya de paso cometar que en ese mismo proyecto la reproducción de videos en Dokeos se implementó con html5, sin usar ningún plugin, sólo librerías javascript. Esto fue posible gracias a que los vídeos se transcodificaban a formato webm en Nuxeo, un relativamente nuevo formato de vídeo, abierto (licencia BSD) y compatible con HTML5 para todos los navegadores modernos. Pero esta es otra historia.