Connettore Validation
Panoramica
Sezione intitolata “Panoramica”Il connettore Validation verifica ogni payload contro una lista di regole di campo. Quando una regola fallisce, la policy onInvalid configurata decide se scartare il payload, inoltrarlo così com’è o marcarlo con un flag di validità.
Tipo Connettore: MeddleValidation
Configurazione
Sezione intitolata “Configurazione”{ "type": "MeddleValidation", "config": { "onInvalid": "drop", "rules": [ { "key": "temperature", "type": "number", "required": true, "min": -40, "max": 150 }, { "key": "sensor_id", "type": "string", "required": true, "pattern": "^S-[0-9]{4}$" }, { "key": "active", "type": "boolean", "required": false } ] }}Parametri di Configurazione
Sezione intitolata “Parametri di Configurazione”- rules (richiesto, min 1): Lista di regole per campo
- onInvalid (richiesto): Comportamento quando almeno una regola fallisce —
drop,forward, otag - invalidTag: Chiave scritta nel payload sotto modalità
tag(default_valid)
Campi della Regola
Sezione intitolata “Campi della Regola”- key (richiesto): Nome del campo del payload da controllare
- type (richiesto):
string,number, oboolean - required: Quando
true, un campo assente fallisce la regola. Quandofalse, un campo assente salta la regola. - min, max: Range numerico inclusivo (valido solo per
type: number) - pattern: Espressione regolare (valida solo per
type: string)
Controlli di Tipo
Sezione intitolata “Controlli di Tipo”- number — Accetta qualsiasi valore numerico convertibile in
float64(int, float, ecc.). Mismatch di tipo viene segnalato come errore. - string — Accetta
stringGo. Sepatternè impostato, il valore deve corrispondere. - boolean — Accetta
boolGo.
Range e Pattern
Sezione intitolata “Range e Pattern”min / max sono inclusivi. Una temperature di esattamente -40 passa min: -40. I pattern regex vengono compilati una volta all’avvio con la sintassi RE2 di Go; pattern non validi impediscono l’avvio del connettore.
Policy On Invalid
Sezione intitolata “Policy On Invalid”Modalità Drop
Sezione intitolata “Modalità Drop”{ "onInvalid": "drop" }I payload falliti vengono scartati silenziosamente (gli errori appaiono comunque sul canale di errore). Vengono inoltrati solo i payload validi.
Modalità Forward
Sezione intitolata “Modalità Forward”{ "onInvalid": "forward" }Ogni payload viene inoltrato indipendentemente dalla validità. Usalo solo per monitoraggio.
Modalità Tag
Sezione intitolata “Modalità Tag”{ "onInvalid": "tag", "invalidTag": "is_valid"}I payload non validi vengono inoltrati con la chiave tag impostata a false. I payload validi passano invariati. Se invalidTag viene omesso, la chiave default è _valid.
Casi d’Uso
Sezione intitolata “Casi d’Uso”- Rifiutare letture sensore malformate prima che raggiungano lo storage
- Imporre convenzioni di ID con pattern regex (es. tag di asset)
- Gating di range per sensori fisici con envelope operativi noti
- Validazione soft con modalità
tagper gestione a valle basata su Router
Esempio: Drop Strict
Sezione intitolata “Esempio: Drop Strict”{ "type": "MeddleValidation", "config": { "onInvalid": "drop", "rules": [ { "key": "device_id", "type": "string", "required": true, "pattern": "^DEV-[A-Z0-9]+$" }, { "key": "temperature", "type": "number", "required": true, "min": -20, "max": 120 }, { "key": "online", "type": "boolean", "required": true } ] }}Qualsiasi payload che manca di un campo, che fallisce la regex o con temperature fuori da [-20, 120] viene scartato.
Esempio: Tag e Route
Sezione intitolata “Esempio: Tag e Route”{ "type": "MeddleValidation", "config": { "onInvalid": "tag", "invalidTag": "is_valid", "rules": [ { "key": "pressure", "type": "number", "required": true, "min": 0, "max": 200 } ] }}Combina con un Router a valle che fa branching su is_valid per inviare payload puliti e sporchi a sink diversi.
Migliori Pratiche
Sezione intitolata “Migliori Pratiche”- Usa
dropper schemi rigidi al confine tra dati fidati e non fidati - Usa
tag+ Router quando vuoi ispezionare o mettere in quarantena payload non validi invece di perderli - Mantieni i pattern regex ancorati (
^...$) per evitare corrispondenze parziali accidentali - Imposta range numerici stretti basati su limiti fisici/operativi — questo cattura precocemente guasti dei sensori
- Posiziona Validation vicino all’inizio delle pipeline in modo che i connettori a valle possano assumere payload ben formati