Navigazione della documentazione
Scheda

Condition

Blocco che valuta delle regole sull'oggetto in ingresso: lo manda all'uscita Valid se le regole sono rispettate, a Invalid altrimenti.

Tipo di blocco
logicblocks.control.Filter
Libreria
Core (core)
Categoria
Control

A cosa serve

Divide il grafo in due rami. Quando l'oggetto rispetta le regole esce da Valid, altrimenti da Invalid: solo una delle due uscite emette e i blocchi collegati all'altra non vengono eseguiti. È il modo per fare un se/altrimenti, validare un ingresso o rispondere in modo diverso a seconda dei dati.

Ingressi

PortaTipoObbligatorioDescrizione
Data (data)objectsìL'oggetto da controllare, di solito il corpo della richiesta.

Uscite

PortaTipoDescrizione
Valid (valid)objectLo stesso oggetto, quando le regole sono rispettate.
Invalid (invalid)objectLo stesso oggetto, quando non lo sono.
Exception (exception)objectUscita presente in ogni blocco: se il blocco fallisce emette l'errore invece di fermare la funzione.

Impostazioni

ImpostazioneTipoPredefinitoDescrizione
Mode (mode)selectallall: servono tutte le regole (AND). any: ne basta una (OR).
Rules (rules)json[]Elenco di {"field", "op", "value"}. Operatori: == != > >= < <= contains exists.

Comportamento e limiti

  • Senza regole l'oggetto è sempre valido.
  • Emette una sola delle due uscite: i blocchi collegati all'altra non vengono eseguiti.
  • Se l'uscita Exception non è collegata, un errore ferma la funzione, a meno che il grafo non abbia un blocco Exception.

Esempi

Ordine sopra una soglia

Ingressi
{
  "data": {
    "total": 50
  }
}
Impostazioni
{
  "rules": [
    {
      "field": "total",
      "op": ">",
      "value": 10
    }
  ]
}
Uscite
{
  "valid": {
    "total": 50
  }
}

Campo obbligatorio mancante

Ingressi
{
  "data": {
    "name": "Mario"
  }
}
Impostazioni
{
  "rules": [
    {
      "field": "email",
      "op": "exists"
    },
    {
      "field": "name",
      "op": "exists"
    }
  ]
}
Uscite
{
  "invalid": {
    "name": "Mario"
  }
}

Ne basta una (OR)

Ingressi
{
  "data": {
    "role": "admin",
    "owner": false
  }
}
Impostazioni
{
  "mode": "any",
  "rules": [
    {
      "field": "role",
      "op": "==",
      "value": "admin"
    },
    {
      "field": "owner",
      "op": "==",
      "value": true
    }
  ]
}
Uscite
{
  "valid": {
    "role": "admin",
    "owner": false
  }
}

Consigli

  • Il valore di una regola è JSON: 10 è un numero, "10" un testo, e un testo e un numero non sono mai uguali.
  • Collega Valid e Invalid a due blocchi Response per rispondere in modo diverso nei due casi.

Usato in

  • Validare il corpo di una richiesta In preparazione

Vedi anche