Monitoreo de precios
Se quiere revisar un listado de precios, visualizar los cambios en los precios a través del tiempo, y alertar en caso de alguna variación.
El sitio usado para el ejemplo es como sigue:

En este sitio hay tres secciones, que corresponden a listados de precios que tienen diferente dificultad para ser obtenidos. A lo largo de esta sección, se detalla cómo configurar las tres posibilidades.
Configuración de flujo 1: Monitoreo de un precio simple
Crear un nuevo flujo

Acción 1: Abrir el sitio web donde están los precios
Para este ejemplo, se usa la siguiente página de demostración

Acción 2: Registrar variable en el portal
Esta acción permite la recolección de datos existentes en el sitio web siendo monitoreado por dVirtualUser.

Asigne un nombre a la recolección, este nombre luego aparece en distintas partes de dVirtualUser.

Encuentre el selector que represente al dato que quiere recolectar.

En el ejemplo, el valor puede ser obtenido mediante el inspector de un navegador web, presionando inspeccionar encima de los datos a obtener y luego, en la ventana que se abre, hacer clic en “Copiar” → “Copiar selector”.


La ruta #singleValue representa el dato que se quiere obtener, pero es un dato compuesto, ya que incluye un nombre y un precio. Para diferenciar cada valor, en la sección Valores a capturar cree tantos valores como necesite.
Estos valores deben identificarse mediante rutas (CSS o XPATH), que deben ser relativas al objetivo inicial.

Para el ejemplo, se puede apoyar en las clases nombre y valor.

Esta configuración se interpreta como sigue: El monitor dVirtualUser busca la ruta #singleValue, por cada vez que encuentre un elemento que esté en dicha ruta, dentro de dicho elemento busca los elementos span.nombre y span.valor. Con esto, el monitor puede capturar fácilmente los valores Auto y 5000.
Ejecutar el flujo
Al ejecutar el flujo, si la recolección es exitosa, aparece en la consola del editor.

Video
Puedes ver la misma explicación en el siguiente video:
Configuración de flujo 2: Monitoreo de una lista de precios
En este caso ya no es un valor único, sino que es una lista de valores.

Acción: Registrar variable en el portal
La búsqueda del objetivo inicial es el mismo, es una ruta que represente a cada uno de los elementos de la lista de precios. En el ejemplo, dado que es una tabla, se busca un selector que represente a las filas de la tabla, omitiendo el header.

Se hace uso de :not(:first-child) para omitir el header de la tabla. Fijarse como, dentro del inspector del navegador web, se muestra 5 resultados, la misma cantidad de resultados que valores en la tabla.

Ya identificado cada sección de precios, queda identificar cada dato dentro de dicha sección. Para este ejemplo, el nombre del producto y el precio.

De forma similar al primer ejemplo, se buscan rutas relativas al objetivo inicial. En este caso los valores están en columnas de la tabla, por lo que las rutas a la columna 1 y 2, respectivamente, son suficientes.

Ejecutar el flujo
Similar al caso anterior, en los logs se puede validar que los datos fueron capturados satisfactoriamente.

Video
Puedes ver la misma explicación en el siguiente video:
Configuración de flujo 3: Monitoreo de una lista de productos, donde los precios están en otro sitio
En este último caso, no tan solo están los productos en una lista, si no que los precios no son visibles inmediatamente, en su lugar hay que ingresar a un enlace que nos lleva a otro sitio, donde sí está el precio que se busca.

Y al abrir cada enlace

Acción: Registrar variable en el portal
De la misma forma que los ejemplos anteriores, el objetivo inicial es aquel que representa a cada producto en la tabla.

Al igual que antes, la ruta sigue una lógica muy similar.

Lo que diferencia este ejemplo es lo que viene a continuación, se va a configurar el como el monitor accede a cada enlace. Para ello, hay que definir la "Ruta al detalle de la variable" y el "Objetivo dentro del detalle".
La "Ruta al detalle de la variable" es el elemento, dentro de cada producto en la tabla, que tiene la información necesaria para llegar al sitio donde si está el precio del producto. En el ejemplo, se debe identificar la etiqueta <a> que lleva por nombre "Ver"

El "Objetivo dentro del detalle" es el elemento, dentro del nuevo sitio al que se dirige el enlace, que contiene los datos que se quieren recolectar.

De la misma forma que se han trabajado las tablas anteriores, se puede encontrar fácilmente la ruta requerida.

Solo queda configurar como obtener las distintas variables requeridas, relativas al nuevo sitio y al "Objetivo dentro del detalle".

La diferencia con los flujos anteriores, es que acá hay un dato que no es parte del "Objetivo dentro del detalle", y es el nombre del producto. Este dato está fuera de la tabla, y es global a todos los modelos del producto. Dado que las rutas son relativas, y el nombre del producto está en otro lugar, se requiere decirle al monitor que, para este caso particular, use una ruta absoluta. Esta instrucción se define seleccionando "Selector desde la raíz del sitio", en la columna "Asignar valor por".

De esta forma, cada precio tiene asociado el mismo nombre de producto, que se obtuvo con una ruta absoluta con respecto al sitio que se abrió luego de hacer clic en el enlace "Ver".
Ejecutar el flujo
En los logs se ve cómo se extraen correctamente los tres valores definidos, Producto, Modelo y Precio.

Video
Puedes ver la misma explicación en el siguiente video:
Visualizador de los datos
Una vez que el flujo está publicado, el monitor comienza a realizar lo configurado cada cierto tiempo (lo definido en el período). En cada iteración, recolecta los datos descritos. Estos datos pueden visualizarse en la sección "Variables".

En esta sección, es posible:
Ver los cambios en los valores números capturados, a lo largo del tiempo
Revisar la captura de valores en un instante específico de tiempo
Revisar los errores encontrados (incumplimientos de reglas)


A modo de ejemplo, en la siguiente imagen se ve solo el valor de Item1;Modelo A, correspondiente a 2000.

Este valor corresponde al sitio web que se presentó en los ejemplos anteriores.

Si ese valor cambia, por ejemplo de 2000 a 25000.

La próxima vez que el monitor se ejecute, detectará el cambio y lo reflejará en la vista "Variables".
Es posible saber cuando itera el monitor, en la vista "Flujos".

Si el período definido es de 5 minutos, y en la imagen son las 16:44, la próxima iteración será aproximadamente a las 16:49.
Luego de la siguiente iteración, la sección "Variables" refleja el cambio (el gráfico sube de 2000 a 25000 en el último tramo).

Video
Puedes ver la misma explicación en el siguiente video:
Validación de los datos
Los datos se extraen y se almacenan en dVirtualUser, es posible ver su comportamiento histórico mediante la vista "Variables". Además, es posible configurar reglas sobre estos datos, para que dVirtualUser pueda analizarlos y alertar de cualquier dato que no cumpla dichas reglas.
En el "Editor de flujos", al editar el flujo deseado e ir a la acción que recolecta los datos, un apartado de nombre "Reglas de consistencia" aparece.

Se pueden crear tantas reglas como desee, cada regla sigue un criterio. Para el ejemplo, se quiere revisar que ningún precio esté por debajo de los 10000, por lo que una regla de "Mayor que 10000" validará dicho comportamiento.

Cualquier cambio requiere publicar el flujo para que tome efecto. Tras la próxima iteración del monitor luego de su publicación, una "Interrupción de flujo" aparece, dado que hay datos que no siguen las reglas de consistencia.

Los valores con problemas son descritos en el mensaje de error. Para un análisis más profunda, la vista "Variables" es útil.

En esta vista se muestran las últimas iteraciones del monitor, y por cada iteración, cuantas reglas no se han cumplido.
Al presionar sobre una fila de la sección “Últimas iteraciones”, una ventana aparece, mostrando exactamente qué datos están con problemas.

Es posible validar el dato con problemas, revisando el sitio directamente.

Si el valor se actualiza a uno que cumpla la regla, en la próxima iteración del monitor, la alerta desaparece.

Se puede ver como los errores han bajado de 6 a 5.

Y el valor ahora es 13000, que es el nuevo valor asignado a dicho producto.

Video
Puedes ver la misma explicación en el siguiente video: VIDEO:
Notificar por correo
Existe dos formas de notificar cuando los datos no cumplen una o más reglas: Interrupción de flujo y Variables personalizadas.
Notificar por interrupción de flujo
La interrupción de flujo se define como el momento en el que una acción obligatoria del monitor falla. En ese momento el flujo termina y se reporta el error. En general este error es útil en contextos donde se requiere notificar del falló en un sitio web, pero también es aplicable al monitoreo de datos. La acción "Registrar variable en el portal" falla si las reglas no se cumplen, por lo que genera una interrupción de flujo que puede notificarse vía correo (u otros medios como 24Cevent).
Considerar que la interrupción de flujo, para el monitoreo de datos, puede no ser lo ideal debido a que:
Si el sitio presenta problemas, ajenas a los datos, se alertará igualmente (recibes alertas no relacionadas al monitoreo de datos como tal)
Si tienes varias acciones de monitoreo de datos, el monitor solo realiza hasta la primera acción que falla, por lo que pueden quedar datos sin extraer
Las interrupciones ocurren en las acciones, y solo se notifica cuando cambia el estado del monitor. El estado del monitor cambia si el flujo es correcto nuevamente, o falla una acción distinta. Esto hace que solo se notifique la primera vez que hay datos incorrectos, independiente de que luego aparezcan nuevos datos que incumplan las reglas.
Para configurar la notificación, ir a "Flujos" y luego presionar Opciones.

Luego en Integraciones:
Marcar Habilitado
Agregar uno o más correos (donde llega la notificación)
Marcar "Notificar por interrupción de flujo"

Cuando el monitor detecte problemas, un correo similar al siguiente se envía:

En el correo vienen una serie de datos útiles para diagnosticar rápidamente el problema, como se ve en la imagen:

Video
Puedes ver la misma explicación en el siguiente video:
Notificar por variables personalizadas
Este tipo de notificación, para el caso de variables, tiene las siguientes ventajas a comparación de una interrupción de flujo normal:
Si el sitio presenta problemas, ajenas a los datos, no se alerta
La notificación por correo viene con un formato adaptado para problemas en variables
Si tienes varias acciones de monitoreo de datos, el monitor solo realiza todas las acciones y notifica por cada una
Si, por ejemplo, un valor cambia dos veces de forma consecutiva, y ambas ocasiones está incumpliendo las reglas, esta notificación se gatilla dos veces, a diferencia de una interrupción de flujo.
Ejemplo: Precio: 15000, Regla: Valor mayor a 10000
Precio baja a 9000. Interrupción de flujo alerta, Variables personalizadas alerta
Precio sube a 9500. Variables personalizadas alerta
Precio baja a 2000. Variables personalizadas alerta
Precio sube a 11000. No hay alertas, ya que se cumple la Regla
Precio baja a 1000. Interrupción de flujo alerta, Variables personalizadas alerta
Para configurar la notificación, ir a "Flujos" y luego presionar “Opciones”. Luego en “Integraciones”:
Marcar Habilitado
Agregar uno o más correos (donde llega la notificación)
Ir a Variables Personalizadas
Marcar "Notificar por incumplimiento de reglas en variable X"

Cuando el monitor detecte problemas, un correo similar al siguiente se envía:

Considere que, si solo activa la notificación por variables personalizadas, el flujo se seguirá alertando por interrupción de flujo. Para evitar que la acción que captura los datos falle y genere una interrupción de flujo, edite el flujo deseado.

En la acción que captura los datos, marque "Error opcional". Con esto la acción no falla, y por lo tanto no se genera una interrupción de flujo. Este cambio es opcional y pueden existir ambas notificaciones al mismo tiempo.

Video
Puedes ver la misma explicación en el siguiente video: