MXL - Lenguaje de Expresiones de Meddle
Descripción General
Sección titulada «Descripción General»MXL (Meddle Expression Language) es un lenguaje de expresiones simple usado en conectores de Meddle para definir condiciones y lógica.
Usado en:
Sintaxis
Sección titulada «Sintaxis»Las expresiones MXL se evalúan a valores booleanos (verdadero/falso) basados en datos de carga.
Estructura Básica
Sección titulada «Estructura Básica»nombre_campo operador valorEjemplos
Sección titulada «Ejemplos»temperature > 80pressure < 10status == "active"count != 0Operadores
Sección titulada «Operadores»Operadores de Comparación
Sección titulada «Operadores de Comparación»| Operador | Descripción | Ejemplo |
|---|---|---|
> | Mayor que | temperature > 80 |
< | Menor que | pressure < 10 |
>= | Mayor o igual que | humidity >= 60 |
<= | Menor o igual que | speed <= 100 |
== | Igual a | status == "active" |
!= | No igual a | count != 0 |
Operadores Lógicos
Sección titulada «Operadores Lógicos»| Operador | Descripción | Ejemplo |
|---|---|---|
&& | AND (ambas condiciones deben ser verdaderas) | temp > 80 && press < 10 |
| ` | ` |
Tipos de Datos
Sección titulada «Tipos de Datos»Números
Sección titulada «Números»Comparar valores numéricos:
temperature > 25.5pressure >= 101.3count == 100speed != 0Cadenas
Sección titulada «Cadenas»Comparar valores de cadena (usar comillas dobles):
status == "active"mode != "manual"error_code == "E001"Booleanos
Sección titulada «Booleanos»Comparar valores booleanos:
enabled == truefault != falseExpresiones Complejas
Sección titulada «Expresiones Complejas»Múltiples Condiciones con AND
Sección titulada «Múltiples Condiciones con AND»Todas las condiciones deben ser verdaderas:
temperature > 20 && temperature < 30pressure > 100 && humidity < 80 && status == "running"Múltiples Condiciones con OR
Sección titulada «Múltiples Condiciones con OR»Al menos una condición debe ser verdadera:
temperature > 80 || pressure > 150status == "error" || status == "fault" || status == "stopped"Combinando AND y OR
Sección titulada «Combinando AND y OR»Usa paréntesis para agrupar (si está soportado):
(temperature > 80 || pressure > 150) && status == "active"Patrones Comunes
Sección titulada «Patrones Comunes»Verificación de Rango
Sección titulada «Verificación de Rango»Verificar si el valor está dentro del rango:
temperature >= 20 && temperature <= 30Alerta de Umbral
Sección titulada «Alerta de Umbral»Alertar cuando el valor excede el umbral:
temperature > 80pressure > 150vibration > 5.0Monitoreo de Estado
Sección titulada «Monitoreo de Estado»Verificar valores de estado específicos:
status == "error"status != "running"mode == "manual"Alerta Multi-Parámetro
Sección titulada «Alerta Multi-Parámetro»Alertar sobre múltiples condiciones:
temperature > 100 || pressure > 150 || vibration > 5Interbloqueo de Seguridad
Sección titulada «Interbloqueo de Seguridad»Asegurar que se cumplan múltiples condiciones:
temperature > 50 && pressure > 100 && flow > 10Ejemplos por Caso de Uso
Sección titulada «Ejemplos por Caso de Uso»Monitoreo de Temperatura
Sección titulada «Monitoreo de Temperatura»// Advertencia de temperatura altatemperature > 80
// Temperatura fuera de rangotemperature < 15 || temperature > 35
// Temperatura crítica con presióntemperature > 100 && pressure > 150Estado de Equipo
Sección titulada «Estado de Equipo»// Máquina detenida inesperadamentestatus == "stopped" && runtime > 0
// Condición de errorstatus == "error" || status == "fault"
// No en modo automáticomode != "auto"Control de Calidad
Sección titulada «Control de Calidad»// Defecto detectadodefect_count > 0
// Fuera de especificacióndimension < 9.9 || dimension > 10.1
// Múltiples parámetros de calidadhardness < 50 || surface_finish > 2.0 || weight < 100Control de Proceso
Sección titulada «Control de Proceso»// Proceso fuera de controltemperature > 90 || pressure < 95 || flow < 50
// Operación establetemperature >= 80 && temperature <= 85 && pressure > 100
// Condición de apagado de emergenciatemperature > 120 || pressure > 200 || vibration > 10Mantenimiento Predictivo
Sección titulada «Mantenimiento Predictivo»// Anomalía detectadais_anomaly == true
// Puntuación de anomalía altaanomaly_score > 0.8
// Múltiples indicadoresvibration > 5 || temperature > 90 || anomaly_score > 0.7Mejores Prácticas
Sección titulada «Mejores Prácticas»1. Usa Nombres de Campo Claros
Sección titulada «1. Usa Nombres de Campo Claros»// Buenotemperature > 80machine_status == "running"
// Evitart > 80s == "r"2. Usa Operadores Apropiados
Sección titulada «2. Usa Operadores Apropiados»// Para igualdad, usa ==status == "active"
// Para desigualdad, usa !=count != 03. Agrupa Condiciones Relacionadas
Sección titulada «3. Agrupa Condiciones Relacionadas»// Bueno - condiciones relacionadas juntastemperature > 80 && pressure > 150
// Bueno - condiciones alternativasstatus == "error" || status == "fault"4. Considera la Precedencia de Operadores
Sección titulada «4. Considera la Precedencia de Operadores»AND (&&) tiene mayor precedencia que OR (||):
// Esto verifica: (A && B) || Ctemperature > 80 && pressure > 150 || humidity > 90
// Usa paréntesis para claridad(temperature > 80 && pressure > 150) || humidity > 905. Prueba Tus Expresiones
Sección titulada «5. Prueba Tus Expresiones»Prueba expresiones con varios valores de entrada para asegurar que funcionen como se espera.
Limitaciones
Sección titulada «Limitaciones»- Sin operaciones aritméticas: No se puede hacer
temperature + 10 > 90 - Sin llamadas a funciones: No se puede hacer
abs(temperature) > 80 - Sin acceso a campos anidados: No se puede hacer
sensor.temperature > 80 - Solo comparación de cadenas: Sin regex o coincidencia de patrones
Solución de Problemas
Sección titulada «Solución de Problemas»La Expresión No se Activa
Sección titulada «La Expresión No se Activa»Verificar:
- Los nombres de campos coinciden exactamente con la carga (sensible a mayúsculas/minúsculas)
- Los tipos de datos coinciden (número vs cadena)
- El operador es correcto (
==no=) - Los valores de cadena usan comillas dobles
Siempre se Activa
Sección titulada «Siempre se Activa»Verificar:
- La lógica es correcta (AND vs OR)
- Los valores de umbral son apropiados
- El campo existe en la carga
Errores de Sintaxis
Sección titulada «Errores de Sintaxis»Errores comunes:
- Usar
=en lugar de== - Faltan comillas alrededor de cadenas
- Errores tipográficos en nombres de campos
- Precedencia de operadores incorrecta
Ejemplos en Contexto
Sección titulada «Ejemplos en Contexto»Conector Trigger
Sección titulada «Conector Trigger»{ "type": "MeddleTrigger", "config": { "mode": "DirectDispatch", "condition": "temperature > 80 && status == \"active\"", "payload": { "alert": "high_temperature" } }}Conector Alert
Sección titulada «Conector Alert»{ "type": "MeddleAlert", "config": { "name": "Critical Alert", "condition": "temperature > 100 || pressure > 200", "minDuration": 10, "cooldown": 300, "notification": { "type": "Email", "toEmails": ["alerts@example.com"] } }}Documentación Relacionada
Sección titulada «Documentación Relacionada»- Conector Trigger - Usar MXL para lógica condicional
- Conector Alert - Usar MXL para condiciones de alerta
- Detección de Anomalías - Combinar con MXL para alertas inteligentes