Salta ai contenuti

Connettore Validation

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

{
"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 }
]
}
}
  • rules (richiesto, min 1): Lista di regole per campo
  • onInvalid (richiesto): Comportamento quando almeno una regola fallisce — drop, forward, o tag
  • invalidTag: Chiave scritta nel payload sotto modalità tag (default _valid)
  • key (richiesto): Nome del campo del payload da controllare
  • type (richiesto): string, number, o boolean
  • required: Quando true, un campo assente fallisce la regola. Quando false, un campo assente salta la regola.
  • min, max: Range numerico inclusivo (valido solo per type: number)
  • pattern: Espressione regolare (valida solo per type: string)
  • number — Accetta qualsiasi valore numerico convertibile in float64 (int, float, ecc.). Mismatch di tipo viene segnalato come errore.
  • string — Accetta string Go. Se pattern è impostato, il valore deve corrispondere.
  • boolean — Accetta bool Go.

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.

{ "onInvalid": "drop" }

I payload falliti vengono scartati silenziosamente (gli errori appaiono comunque sul canale di errore). Vengono inoltrati solo i payload validi.

{ "onInvalid": "forward" }

Ogni payload viene inoltrato indipendentemente dalla validità. Usalo solo per monitoraggio.

{
"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.

  1. Rifiutare letture sensore malformate prima che raggiungano lo storage
  2. Imporre convenzioni di ID con pattern regex (es. tag di asset)
  3. Gating di range per sensori fisici con envelope operativi noti
  4. Validazione soft con modalità tag per gestione a valle basata su Router
{
"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.

{
"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.

  • Usa drop per 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
  • Router - Branching sul tag _valid
  • Transform - Derivare o rinominare campi prima della validazione
  • Filter - Scarta chiavi indesiderate