Formato de archivo RSS

Unofficial Content

english version here

Introducción

El formato de archivos "RSS" (Really Simple Syndication) hace mucho tiempo que es un estándar para la publicación de noticias/novedades de diferentes sitios. En los últimos tiempos ha tomado un alcance mayor y ya no son solo las noticias de algunos sitios sino que muchisimos sitios proveen información en este formato e incluso con otros fines/alcances.

En particular las aplicaciones "de negocio" también han empezado a utilizarlo como medio para proveer "feeds" a otras aplicaciones o usuarios finales que utilizan "RSS readers"  (o RSS Aggregator) estándar. De algún modo permite a un usuario o aplicación estar "suscrito" a un sitio, parte de un sitio o incluso a una aplicación especifica, de un modo muy sencillo.

Sus grandes ventajas son: sencillez (como su nombre lo indica) y ser un estandar universal.

Algunas definiciones básicas que no son "tecnicamente exactas" pero proveen un conocimiento contextual para entender el resto del articulo (En cualquier caso pueden ser profundizadas, por ejemplo, en http://en.wikipedia.org/wiki/RSS_%28file_format%29 y http://www.rssboard.org/rss-specification):

¿Qué es un RSS file?

Es un archivo XML que tiene determinados "elements" pre-establecidos, algunos "requeridos" (mandatorios) y otros "opcionales". Dependiendo de la versión de RSS a utilizar son los "elements" disponibles.

¿Qué es un RSS Feed ?

Basicamente un programa que provee "RSS", es una URL que retorna esos XML.

¿Qué es un RSS Reader / RSS Aggregator?

Es un programa donde se pueden registrar esos "feeds" (proveedores de RSS) y presentar la información de un modo entendible para el usuario final.  Las funcionalidades pueden variar entre Readers, sin embargo en esencia hacen lo mismo.

Aplicando RSS a las aplicaciones de negocio

Si un usuario está interesado en "noticias tecnológicas", seguramente tendrá algunos sitios como referentes en el tema. De este modo el usuario podrá consultar asiduamente el sitio o incluso estar suscrito a alguna "newsletter" del mismo.

En el caso del RSS el usuario no se suscribe a una newsletter sino que cataloga en su reader los feeds que le interesan de los sitios que le interesan y tendrá en una misma interfaz todos los contenidos que desee (no importa la fuente), sin necesidad de ir al sitio en si ni recibir mails con la periocididad que el proveedor determine.

En el caso de las aplicaciones de negocio hoy fundamentalmente funcionan partiendo de la base de que son conocidos los usuarios (o al menos un perfil claro de los mismos) y el uso que harán de la aplicación (las funcionalidades que debe cubrir y como); así como son conocidas  las otras aplicaciones (consumidoras de información) con las cuales interactuara.

En el caso del RSS no es así, al menos, no es necesariamente asi. Una aplicación, además de cumplir su cometido e integrarse con el resto de las aplicaciones (vía "bandejas", webservices, etc o incluso RSS), podrá proveer información de un modo estándar para que otros usuarios o aplicaciones, no previstas originalmente, la consuman.  Incluso el RSS es uno de las bases sobre las cuales se crean las "mashups applications"

Desde el punto de vista del usuario contar con RSS "externos" a la empresa (sitios de noticias, indicadores, información en general, etc) que le dan una "visión del mundo" es de mucha utilidad. La obtiene en un formato unificado, con la frecuencia que determina, etc.

Paradojalmente la información "interna" (generada en la propia empresa) la obtiene por otros medios (tipicamente mails o accediendo a aplicaciones especificas) y no se saca provecho de la existencia de los RSS. ¿Por qué no proveer la información interna del mismo modo que se provee/consume la información del mundo que nos rodea?.

¿Qué información habría de publicarse como RSS?

A priori es dificil decirlo, si partimos de la base que toda la información puede ser de utilidad para otra aplicación o simplemente para que un usuario la conozca, entonces toda debe ser publicada y en definitiva el usuario definirá cual "feed" consume y cual no. De todos modos eso lo determinará el desarrollador de la aplicación, talvez solo se publique la información de las modificaciones a entidades (un cliente nuevo, un contacto nuevo, un producto que se modifica, etc) o a operaciones del negocio (una factura nueva, una orden de compra, etc) o incluso a momentos especificos (el cierre de un balance, una liquidación mensual, la salida de un barco con determinada carga, etc).

Como conclusión: el uso de RSS para fuera de la empresa posibilitará una integración mas fuerte con su entorno y potenciar el uso que se hace de esa información; el uso de RSS dentro de la empresa posibilitará mayor y mejor acceso a esa información.

¿Cómo publicar RSS feeds utilizando GeneXus?

No es algo conceptualmente complejo, simplemente se trata de proveer un archivo XML con determinado formato y disponibilizarlos en una URL (eso sería el feed) que un "RSS reader" puede acceder.

El XML tiene algunos elementos requeridos (title, link, description, etc) y otros opcionales (author, copyright, language, etc). Se puede consultar la especificación RSS por más información.

Tecnicamente, en GeneXus eso se implementaría con un procedimiento llamado vía HTTP (un procedure "main" con "Call Protocol=HTTP") que recorra la información a publicar y vía un XMLWriter vaya generando el XML a retornar al reader.

En cualquier caso, no hay nada más sencillo que aplicar un pattern y felizmente existe un pattern que hace exactamente eso y puede ser obtenido aqui

Dada le existencia del pattern entonces más que "pensar e implementar como sería la publicación de RSS feeds con GeneXus" lo que hice fue documentar como aplicar el pattern y que genera el mismo. Puede consultar dicha información aqui

:-)