MXL - Linguaggio di Espressioni Meddle
Panoramica
Sezione intitolata “Panoramica”MXL (Meddle Expression Language) è un semplice linguaggio di espressioni utilizzato nei connettori Meddle per definire condizioni e logica.
Utilizzato in:
Sintassi
Sezione intitolata “Sintassi”Le espressioni MXL valutano a valori booleani (vero/falso) basati sui dati del payload.
Struttura Base
Sezione intitolata “Struttura Base”nome_campo operatore valoretemperature > 80pressure < 10status == "active"count != 0Operatori
Sezione intitolata “Operatori”Operatori di Confronto
Sezione intitolata “Operatori di Confronto”| Operatore | Descrizione | Esempio |
|---|---|---|
> | Maggiore di | temperature > 80 |
< | Minore di | pressure < 10 |
>= | Maggiore o uguale | humidity >= 60 |
<= | Minore o uguale | speed <= 100 |
== | Uguale a | status == "active" |
!= | Diverso da | count != 0 |
Operatori Logici
Sezione intitolata “Operatori Logici”| Operatore | Descrizione | Esempio |
|---|---|---|
&& | AND (entrambe le condizioni devono essere vere) | temp > 80 && press < 10 |
| ` | ` |
Tipi di Dati
Sezione intitolata “Tipi di Dati”Confronta valori numerici:
temperature > 25.5pressure >= 101.3count == 100speed != 0Stringhe
Sezione intitolata “Stringhe”Confronta valori stringa (usa virgolette doppie):
status == "active"mode != "manual"error_code == "E001"Booleani
Sezione intitolata “Booleani”Confronta valori booleani:
enabled == truefault != falseEspressioni Complesse
Sezione intitolata “Espressioni Complesse”Condizioni Multiple con AND
Sezione intitolata “Condizioni Multiple con AND”Tutte le condizioni devono essere vere:
temperature > 20 && temperature < 30pressure > 100 && humidity < 80 && status == "running"Condizioni Multiple con OR
Sezione intitolata “Condizioni Multiple con OR”Almeno una condizione deve essere vera:
temperature > 80 || pressure > 150status == "error" || status == "fault" || status == "stopped"Combinazione di AND e OR
Sezione intitolata “Combinazione di AND e OR”Usa le parentesi per il raggruppamento (se supportato):
(temperature > 80 || pressure > 150) && status == "active"Pattern Comuni
Sezione intitolata “Pattern Comuni”Controllo Intervallo
Sezione intitolata “Controllo Intervallo”Verifica se il valore è nell’intervallo:
temperature >= 20 && temperature <= 30Avviso Soglia
Sezione intitolata “Avviso Soglia”Avviso quando il valore supera la soglia:
temperature > 80pressure > 150vibration > 5.0Monitoraggio Stato
Sezione intitolata “Monitoraggio Stato”Verifica valori di stato specifici:
status == "error"status != "running"mode == "manual"Avviso Multi-Parametro
Sezione intitolata “Avviso Multi-Parametro”Avviso su più condizioni:
temperature > 100 || pressure > 150 || vibration > 5Interlock di Sicurezza
Sezione intitolata “Interlock di Sicurezza”Assicura che più condizioni siano soddisfatte:
temperature > 50 && pressure > 100 && flow > 10Esempi per Caso d’Uso
Sezione intitolata “Esempi per Caso d’Uso”Monitoraggio Temperatura
Sezione intitolata “Monitoraggio Temperatura”// Avviso alta temperaturatemperature > 80
// Temperatura fuori intervallotemperature < 15 || temperature > 35
// Temperatura critica con pressionetemperature > 100 && pressure > 150Stato Attrezzatura
Sezione intitolata “Stato Attrezzatura”// Macchina fermata inaspettatamentestatus == "stopped" && runtime > 0
// Condizione di errorestatus == "error" || status == "fault"
// Non in modalità automaticamode != "auto"Controllo Qualità
Sezione intitolata “Controllo Qualità”// Difetto rilevatodefect_count > 0
// Fuori specificadimension < 9.9 || dimension > 10.1
// Parametri qualità multiplihardness < 50 || surface_finish > 2.0 || weight < 100Controllo Processo
Sezione intitolata “Controllo Processo”// Processo fuori controllotemperature > 90 || pressure < 95 || flow < 50
// Operazione stabiletemperature >= 80 && temperature <= 85 && pressure > 100
// Condizione arresto emergenzatemperature > 120 || pressure > 200 || vibration > 10Manutenzione Predittiva
Sezione intitolata “Manutenzione Predittiva”// Anomalia rilevatais_anomaly == true
// Punteggio anomalia altoanomaly_score > 0.8
// Indicatori multiplivibration > 5 || temperature > 90 || anomaly_score > 0.7Best Practice
Sezione intitolata “Best Practice”1. Usa Nomi di Campo Chiari
Sezione intitolata “1. Usa Nomi di Campo Chiari”// Buonotemperature > 80machine_status == "running"
// Evitat > 80s == "r"2. Usa Operatori Appropriati
Sezione intitolata “2. Usa Operatori Appropriati”// Per uguaglianza, usa ==status == "active"
// Per disuguaglianza, usa !=count != 03. Raggruppa Condizioni Correlate
Sezione intitolata “3. Raggruppa Condizioni Correlate”// Buono - condizioni correlate insiemetemperature > 80 && pressure > 150
// Buono - condizioni alternativestatus == "error" || status == "fault"4. Considera la Precedenza degli Operatori
Sezione intitolata “4. Considera la Precedenza degli Operatori”AND (&&) ha precedenza maggiore di OR (||):
// Questo verifica: (A && B) || Ctemperature > 80 && pressure > 150 || humidity > 90
// Usa le parentesi per chiarezza(temperature > 80 && pressure > 150) || humidity > 905. Testa le Tue Espressioni
Sezione intitolata “5. Testa le Tue Espressioni”Testa le espressioni con vari valori di input per assicurarti che funzionino come previsto.
Limitazioni
Sezione intitolata “Limitazioni”- Nessuna operazione aritmetica: Non puoi fare
temperature + 10 > 90 - Nessuna chiamata a funzione: Non puoi fare
abs(temperature) > 80 - Nessun accesso a campi nidificati: Non puoi fare
sensor.temperature > 80 - Solo confronto stringhe: Nessun regex o pattern matching
Risoluzione dei Problemi
Sezione intitolata “Risoluzione dei Problemi”L’Espressione Non Si Attiva
Sezione intitolata “L’Espressione Non Si Attiva”Verifica:
- I nomi dei campi corrispondono esattamente al payload (case-sensitive)
- I tipi di dati corrispondono (numero vs stringa)
- L’operatore è corretto (
==non=) - I valori stringa usano virgolette doppie
Si Attiva Sempre
Sezione intitolata “Si Attiva Sempre”Verifica:
- La logica è corretta (AND vs OR)
- I valori soglia sono appropriati
- Il campo esiste nel payload
Errori di Sintassi
Sezione intitolata “Errori di Sintassi”Errori comuni:
- Usare
=invece di== - Virgolette mancanti attorno alle stringhe
- Errori di battitura nei nomi dei campi
- Precedenza operatori errata
Esempi nel Contesto
Sezione intitolata “Esempi nel Contesto”Connettore Trigger
Sezione intitolata “Connettore Trigger”{ "type": "MeddleTrigger", "config": { "mode": "DirectDispatch", "condition": "temperature > 80 && status == \"active\"", "payload": { "alert": "high_temperature" } }}Connettore Alert
Sezione intitolata “Connettore Alert”{ "type": "MeddleAlert", "config": { "name": "Critical Alert", "condition": "temperature > 100 || pressure > 200", "minDuration": 10, "cooldown": 300, "notification": { "type": "Email", "toEmails": ["alerts@example.com"] } }}Documentazione Correlata
Sezione intitolata “Documentazione Correlata”- Connettore Trigger - Usa MXL per logica condizionale
- Connettore Alert - Usa MXL per condizioni di avviso
- Rilevamento Anomalie - Combina con MXL per avvisi intelligenti