Soporte de Suscripciones

Header Onesait Platform

Como ya sabrás a estas alturas, la Onesait Platform tiene una arquitectura Data-Centric (centrada en los datos), dónde los datos son el activo principal y los tratamos como ontologías. Las ontologías son las entidades que gestiona el sistema y todas las funcionalidades se basan en este concepto.

Una de las novedades que trae la versión 2.0.0 (fireball) es el soporte de suscripciones a ontologías.

Esta funcionalidad permite a un cliente de la Plataforma suscribirse a determinados cambios en una determinada ontología, de tal forma que cuando se cumplan unas determinadas condiciones la Plataforma notificará a dicho cliente.

En la Plataforma tendremos dada de alta una suscripción que estará asociada a una ontología. En esta suscripción definiremos:

  • Query field: el campo de la ontología al cual nos queremos suscribir.
  • Query Operator: el tipo de operación que se comprobará.
  • Projection: los datos que se notificarán al cliente.

Por otro lado, el cliente usará la librería Java que proporciona la Plataforma para suscribirse vía REST o MQTT a la suscripción dada de alta en el controlpanel. Al suscribirse indicará el parámetro queryValue.

Por lo tanto el flujo completo de los datos sería el siguiente:

  1. Se inserta un nuevo dato en la ontología que tiene asociada una suscripción.
  2. Se comprueba que existen clientes suscritos a dicha suscripción y se comprueba si los datos insertados cumplen con la condición de alguno de los suscriptores.
  3. En el caso de que se cumpla dicha condición, se notifican los datos definidos por el campo «projection» al cliente.

Veamos a continuación un ejemplo práctico para entender mejor el funcionamiento.

Imaginad que tenemos la ontología Ticket que genera instancias con el siguiente formato JSON:

{"Ticket": {
            "identification": "ticket01",
            "status": "DONE",
            "email": "iex@email.com",
            "name": "Alberto",
            "response_via": "email",
            "file": {
                "data": "",
                "media": {
                    "name": "",
                    "storageArea": "SERIALIZED",
                    "binaryEncoding": "Base64",
                    "mime": "application/pdf"
                }
            },
            "coordinates": {
                "coordinates": {
                    "latitude": 45.456,
                    "longitude": -41.283
                },
                "type": "Point"
            }
        }
}

Y existe en la Plataforma una suscripción asociada a esta ontología configurada como:

  • queryField: $.Ticket.status
  • queryOperator: ‘=
  • projection: $.Ticket.file

Un cliente Java se suscribe a esa suscripción con el parámetro queryValue = «DONE»

¿Qué pasará cuando se inserte un nuevo dato en la ontología Ticket?

La respuesta es muy sencilla, se evaluará si los datos insertados cumplen con la suscripción y si existe algún cliente al que notificar. Por lo que, en este caso, se comprobará que efectivamente el campo status de los datos insertados es igual al valor con el cual se ha suscrito nuestro cliente Java, «DONE».

Es importante que te fijes en que para esta comprobación estamos utilizando tanto la configuración de la suscripción en la Plataforma (con las propiedades queryField y queryOperator) cómo el parámetro que ha utilizado el cliente para suscribirse (queryValue)

Una vez comprobado que se cumple la condición la Plataforma notificará los datos al cliente Java, pero, ¿qué datos notificará?

Correcto, se notificará lo definido con la propiedad «projection» de la suscripción, en este caso:

"file": {
         "data": "",
         "media": {
             "name": "",
             "storageArea": "SERIALIZED",
             "binaryEncoding": "Base64",
             "mime": "application/pdf"
         }
}

Recordad que este es un ejemplo muy sencillo de cómo funciona la nueva funcionalidad de suscripciones de la Plataforma, por lo que si estáis interesados en conocer más sobre esta herramienta, os recomendamos nuestra guía de ayuda.

Cualquier duda o problema que tengáis, dejadnos un comentario y lo analizaremos tan pronto como nos veas posible.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *