Integración con Ontologías: ¿Cómo invocar un Flujo cuando creas una instancia de una Ontología?

Integración con Ontologías: ¿Cómo invocar un Flujo cuando creas una instancia de una Ontología?

En este tutorial, veremos cómo procesar las notificaciones que genera el sistema cuando una ontología recibe mensajes de inserción.

Partamos de la ontología "noderedTest" que tiene la siguiente estructura:

Crearemos un flujo que nos permita insertar un valor y dar de alta un notificador para poder procesar la información relacionada con el evento Insertion en dicha ontología.

Supongamos el siguiente flujo de inserción:

Cada vez que hagas clic en el nodo INJECT "Data to insert", se insertará una instancia de ontología en "noderedTest". Para recopilar el valor de la inserción, utilizarás el nodo "OnesaitPlatform Notification endpoint":

Este nodo requiere las siguientes propiedades:

  • Name (Nombre): (opcional) El nombre que le darás al nodo dentro del flujo.

  • Ontologies available (Ontologías disponibles): Menú desplegable donde seleccionarás la ontología sobre la que quieres recibir notificaciones.

  • Operation type (Tipo de operación): Es el tipo de operación que estarás esperando para ser notificados. Hay tres opciones:

    • INSERT: Se te notificará un mensaje por cada operación de inserción sobre la ontología.

    • REMOVE: Se te notificará un mensaje por cada operación de eliminación en la ontología.

    • UPDATE: Se te notificará un mensaje por cada operación de actualización de la ontología.

  • URL: Nombre que le darás al endpoint que escucha la notificación que devolverá la plataforma. Como limitación, una URL no se puede repetir dentro de un dominio.

Siguiendo con el ejemplo, ahora configurarás el nodo para que nos notifique con cualquier mensaje de inserción sobre la ontología "noderedTest":

Para probarlo, lanza una inserción haciendo clic en el nodo INJECT "Data to insert" y fíjate en la pestaña "depuración":

El primer dato que aparece en el registro de "depuración" es el de la respuesta a la inserción, mostrando el ID del elemento insertado en la ontología.
Justo debajo de eso, verás el mensaje recibido por el notificador. En el "msg.payload", recibirás un objeto con la siguiente estructura:

El significado de cada campo es el siguiente:

  • notificationModel (modelo de notificación): Objeto que engloba toda la información tanto de la notificación como de la operación. Dentro del "notificationModel”, está:

    • operationModel (modelo de operación): Objeto que engloba toda la información relativa a la operación por la que has sido notificados. La información de la operación se desglosa en:

      • ontologyName (nombre de la ontología): Nombre de la ontología sujeto de la operación.

      • operationType (tipo de operación): Tipo de operación realizada sobre la ontología.

      • user (usuario): Usuario que realizó la operación.

      • source (fuente): Módulo desde el que se lanzó la operación.

      • body (cuerpo): Contiene los datos de la operación. En este caso, éste es el registro insertado.

      • queryType (tipo de consulta): En el caso de una operación de consulta, el tipo de consulta.

      • objectId (ID de objeto): Si es una operación por ID, el ID del objeto de ontología que fue afectado por la operación.

      • deviceTemplate (plantilla de dispositivo): Tipo de dispositivo que lanzó la operación. Solo se le informará si la operación se inició desde un dispositivo definido en la plataforma.

      • device (dispositivo): Nombre del dispositivo que lanzó la operación. Sólo se le informará si la operación se inició desde un dispositivo definido en la plataforma.

      • clientSession (sesión del cliente): Sesión del cliente.

      • clientConnection (conexión del cliente): Conexión del cliente.

      • cacheable (se puede cachear): Sólo se aplica a las consultas, para indicar si se han recuperado de la memoria caché.

    • notificationEntityId (ID de entidad de la notificación): Identificador de Node-RED del nodo que recibe la notificación.

    • url: Endpoint por donde llega la notificación al nodo.

Si quieres ver los datos de la operación, puedes acceder a "msg.payload.notificationModel.operationModel.body":