Condiciones sobre el dato
Sin condición, una Recolección empuja todo lo que recolecta a todos los destinos, y el “Reenviar Respuesta” de una Entrega hace lo mismo con la respuesta. La condición decide por el contenido: solo reenvíe si la temperatura supera 80, solo mande al MES el aviso que SAP aceptó, abra un aviso de PM si el estado es distinto de OK y la máquina está encendida.
Una condición se escribe una vez, en el mismo editor, y sirve en tres lugares:
| Dónde | Qué decide | Mira |
|---|---|---|
| Reenvío de la Recolección — Recolecciones › Reenviar Recolección | Si ese destino recibe la lectura | El dato recolectado |
| Reenviar Respuesta de la Entrega — Definiciones | Si ese destino recibe la respuesta | La respuesta del destino |
| Alerta Condición Cumplida — Alertas | Si la alerta se dispara (correo, WhatsApp, ticket) | El dato recolectado |
Cómo se escribe
Una condición es una o más reglas, combinadas con Y (todas deben cumplirse) u O (basta una):
| Parte | Qué es |
|---|---|
| Campo | La ruta en el dato, con punto: temperatura, tags.Status, RETURN.TYPE, linhas.0.valor. Vacío = el contenido completo, para datos que no son JSON. input.<nombre> lee un Parámetro de Entrada |
| Operador | Ver la tabla de abajo |
| Valor | Texto, número o una Variable: {{LIMITE_TEMP}} |
| Operador | Se cumple cuando |
|---|---|
| igual a, distinto de | El valor leído es (o no es) el valor |
| mayor que, mayor o igual a, menor que, menor o igual a | Comparación — numérica, cuando los dos lados son números |
| entre | El número leído está entre los dos valores, inclusive |
| contiene, no contiene | El texto contiene el valor, sin distinguir mayúsculas |
| está vacío, no está vacío | Campo ausente, texto vacío, lista u objeto vacíos |
| cambió | El valor es distinto de la lectura anterior |
El botón junto al campo sugiere rutas en tres grupos: Del último mensaje (con el valor leído), Parámetros de Entrada y Del Contrato Observado — los campos de los mensajes reales de esa Recolección o de las respuestas de esa Entrega, ver Contrato Observado. Se puede escribir cualquier otro.
Lo que conviene saber sobre la comparación
- Un número se compara como número.
"100" > "80"es verdadero, aunque los dos estén como texto en el JSON. La coma decimal vale:80,5es ochenta y medio. - Un campo ausente no es mayor ni igual a nada, pero es distinto de todo, y cuenta como vacío.
- La Variable es por Aplicación.
{{LIMITE_TEMP}}se resuelve con la Variable de la Aplicación de la Recolección (o de la Entrega) cuando existe, y con la Global cuando no. Así cada máquina tiene su límite con una sola regla. Una Variable que no existe no se vuelve “límite cero”: la comparación falla. cambióno se dispara en la primera lectura — no hay con qué comparar. La última lectura de cada campo queda guardada y sobrevive a un reinicio. Guardar la Recolección, la Entrega o la alerta reinicia esa memoria.
Parámetros de Entrada — input.
El campo común lee el dato: la lectura de la Recolección, o la respuesta de la Entrega. Para
decidir por lo que envió quien llamó, use el prefijo input. con el nombre del Parámetro de
Entrada: input.sendToMES igual a true reenvía al MES solo las llamadas que lo pidieron.
| Dónde | De dónde viene input.<nombre> |
|---|---|
| Recolección | Los Parámetros de Entrada de la llamada — por la API dinámica, MCP, Disparador o Banco de Pruebas —, ya con el valor por defecto aplicado |
| Entrega (Reenviar Respuesta) | El Payload de Entrada de la Definición, leído del mensaje recibido |
- El parámetro aparece enseguida. El grupo Parámetros de Entrada sale de las filas del formulario: el parámetro recién agregado ya se ofrece, antes de guardar y antes de que haya mensaje.
- El prefijo separa los dos. Si el dato también tiene un campo
sendToMES,sendToMESlee el dato einput.sendToMESlee el parámetro. - Una Recolección programada no tiene parámetros: nadie la llamó. Ahí
input.<nombre>es campo ausente — y, en una Recolección sin Parámetros de Entrada,input.xsigue siendo una ruta común en el dato. - Los mensajes recolectados antes de esta versión no guardaron los parámetros: para ellos,
input.<nombre>es ausente.
Probar con el último mensaje
El botón Probar con el último mensaje, en el editor, evalúa la condición que está en pantalla —
aunque no se haya aplicado — contra el dato real más reciente: la última lectura de la Recolección, o
la última respuesta de la Entrega. El resultado muestra si se cumple y, regla por regla, el valor
leído y el esperado, además del dato. No se graba nada. El botón aparece después de que la
Recolección o la Entrega se guardó una vez; los mensajes del Banco de Pruebas quedan fuera. Los
Parámetros de Entrada de ese mensaje aparecen entre los campos, como input.<nombre>, con el valor
recibido.
Reenvío condicional
En cada línea de Reenviar Recolección (en la Recolección) y de Reenviar Respuesta (en la Entrega), el botón Reglas, al inicio de la línea, abre el editor. Cuando hay condición, se pone azul y muestra cuántas reglas tiene; el resumen aparece en el tooltip.
- Sin condición, el destino recibe todo — como siempre.
- Condición verdadera: reenvía, con el Transformador del reenvío como de costumbre.
- Condición falsa: ese destino no recibe, y queda el rastro del motivo.
La condición mira el dato crudo, antes del Transformador: la regla habla de la lectura, no del formato del destino.
Cuando ningún destino de la Recolección cumple, el mensaje termina Procesado — fue la regla la que decidió, no es un error. En la Entrega, el mensaje ya terminó cuando el destino respondió; la condición solo decide lo que sigue adelante.
El rastro. Los reenvíos no realizados aparecen en el mensaje de origen, en el cuadro
Reenvíos no realizados (condición no cumplida): en el popup y en la página del
mensaje, y en el resultado del Banco de Pruebas.
Cada línea dice el destino y el motivo — ✗ temperatura = "72" (esperado > "80").
Un uso típico en la Entrega: la BAPI devuelve RETURN.TYPE. Con RETURN.TYPE igual a S en el
reenvío al MES, solo sigue el aviso aceptado por SAP; el rechazado queda con el motivo en el mensaje.
Alerta Condición Cumplida
En Alertas, el tipo Condición Cumplida vale para una Recolección y tiene, además de los destinatarios y canales de siempre:
| Campo | Qué hace |
|---|---|
| Condición | El mismo editor, sobre el dato recolectado |
| Separar por | Un campo del dato (ej.: equipamento). Cada valor se dispara y se normaliza por su cuenta — ver abajo |
| Duración mínima (s) | Solo se dispara si la condición sigue siendo verdadera durante ese tiempo — temperatura por encima de 80 durante 5 minutos, y no un pico de una lectura |
| Mensaje de la alerta | El texto, con {{dado.campo}}, {{coleta}}, {{aplicacao}}, {{chave}} y las Variables. Vacío = la Recolección y las reglas con los valores leídos |
Sin avalancha
Un MQTT publicando cada segundo con la temperatura alta abriría un aviso por segundo. La alerta se dispara en el cruce de falso a verdadero, y se queda quieta mientras la condición siga cumpliéndose. Cuando deja de cumplirse, sale el aviso Condición Normalizada, y el próximo cruce dispara de nuevo.
La duración mínima se verifica en cada nueva lectura: no hay reloj propio. Una fuente que deja de publicar no completa la duración.
Separar por
Una Recolección que trae varios equipos — una línea por horno, en cada ciclo — con un solo estado
alternaría “cumplida” y “normalizada” en cada ciclo: el horno 2 por encima del límite y el horno 1 por
debajo se desmentirían. Con Separar por equipamento, cada horno tiene su estado: se dispara
cuando él supera el límite y se normaliza cuando él vuelve. El mensaje y el ticket traen el
valor — Condición cumplida en la Recolección “FORNO_01” (equipamento = forno-2).
Elija un campo que identifique la cosa monitoreada, y no la lectura: un id de mensaje o una hora crearía un estado por lectura.
Ticket
La alerta abre un ticket en los destinos de Help Desk como cualquier otra, y el
cuerpo del destino puede usar el dato que la disparó: {{dado.equipamento}}, {{dado.tags.Status}}.
Es lo que permite abrir el aviso de PM en el equipo que vino en la lectura.
Cada cruce abre su ticket — y, separado por clave, cada equipo el suyo. El bloqueo de “un ticket a la vez” de las demás alertas no se aplica aquí: con él, el aviso del horno 2 esperaría al del horno 1.
Lo que no dispara
- Mensaje de prueba (Banco de Pruebas): el reenvío condicional se evalúa y se muestra, pero la alerta no se dispara.
- Reenvío de una lectura antigua: reenviar no vuelve a abrir el aviso.
- Recolección solo de consulta, que devuelve el resultado a quien la llamó y no reenvía.