¿Cómo invocar un Flow cuando se inserta en una Entidad?

¿Cómo invocar un Flow cuando se inserta en una Entidad?

En este tutorial vamos a ver como 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:

Vamos a realizar un flujo que nos permita insertar un valor y dar de alta un notificador para poder tratar la información referente al evento de Inserción en dicha ontología.

Supongamos el siguiente flujo de inserción:

Cada vez que hagas click en el nodo INJECT "Data to insert", una instancia de ontología será insertada en "noderedTest".  Para poder recoger el valor de la inserción, harás uso del nodo "OnesaitPlatform Notification endpoint":

Este nodo requiere de las siguientes propiedades:

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

  • Ontologies available: Desplegable donde seleccionarás la ontología sobre la que queremos recibir las notificaciones.

  • Operation type: Es el tipo de operación que estarás a la espera de que se te notifique. Tienes 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 borrado sobre la ontología.

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

  • URL: Nombre que le dareás al endpoint que permanece a la escucha de la notificación que devolverá la plataforma. Como limitación, no oyede haber dos URLs iguales dentro de un dominio.

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

Para probarlo, lanzamos una inserción haciendo click en el nodo INJECT  "Data to insert" y observamos la pestaña de "debug":



El primer dato que aparece en el log de "debug" es el de la respuesta a la inserción, mostrando el ID del elemento insertado en la ontología.

Justo debajo, puedes ver 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: objeto que engloba toda la información tanto de la notificación como de la operación. Dentro del "notificationModel", están:

    • operationModel: objeto que engloba toda la información referente a la operación por la cual se te ha notificado. La información de la operación se desglosa en:

      • ontologyName: nombre de la ontología que ha sido objeto de la operación.

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

      • user: usuario que realizo la operación.

      • source: módulo desde el que se lanzó la operación.

      • body: contiene el dato de la operación. En este caso, es el registro insertado.

      • queryType: en el caso de ser una operación de consulta, el tipo de query.

      • objectId: en el caso de ser una operación por ID, el ID del objecto de la ontología que se vio afectado por la operación.

      • deviceTemplate: tipo de dispositivo que lanzó la operación. Solamente estará informado si la operación se lanzó desde un dispositivo definido en la plataforma.

      • device: nombre del dispositivo que lanzó la operación. Solamente estará informado si la operación se lanzó desde un dispositivo definido en la plataforma.

      • clientSession: sesión del cliente.

      • clientConnection: conexión del cliente.

      • cacheable: solo aplica a consultas, para indicar si han sido recuperadas desde cache.

    • notificationEntityId: nodered identifier of the node receiving the notification.

    • url: endpoint through which the notification reaches the node.

If you want to see the data of the operation, access "msg.payload.notificationModel.operationModel.body"

En el caso de que quisiéramos ver al dato de la operación, accederíamos a "msg.payload.notificationModel.operationModel.body"