Skip to content

Il grafo, nodo per nodo ​

Ogni processo è un grafo, costruito in codice con il DSL graph(). Qui sotto c'è un grafo d'esempio che usa tutti i tipi di nodo: consolida fatture e clienti, arricchisce le fatture con il listino, protegge la scrittura con un try-catch. Seleziona un nodo per leggerne la scheda, oppure fai passare un record e guarda che strada prende.

Fai passare un record:
porta catch invoices — source invoicesPostgreSQL customers — source customersCSV su S3 raw-invoice — transform raw-invoicevalidate scarti-fatture — dead-letter scarti-fatturedead-letter raw-customer — transform raw-customervalidate segmento — ai segmentoai · Noeva listino — lookup listinolookup · PostgreSQL enrich — join enrichjoin left guard — try-catch guardtry-catch fact-contract — transform fact-contractvalidate log-errors — transform log-errorsramo catch archivia — action archiviaaction · S3 facts — sink factsSQL Server · upsert gravita — route gravitaroute esiti — union esitiunion notifica — action notificaaction · SMTP statistiche — task statistichetask · SQL Server errors — sink errorsS3 · NDJSON

Scegli una scena qui sopra, oppure seleziona un nodo per leggerne la scheda.

Le regole che il grafo fa rispettare ​

  • Un nodo per passaggio. Un controllo e una trasformazione sono due nodi, non uno: il grafo mostrato nell'app è quello eseguito, e deve dire dove un record si è fermato.
  • Due flussi si uniscono solo con un join o un union. Il join li accoppia per chiave, il union li mette in fila senza toccare i record. Gli altri nodi hanno un solo ingresso, tranne source e task, che non ne hanno. Dividere un flusso invece è libero: più nodi possono partire dallo stesso nodo, e ricevono tutti lo stesso record. Per mandare ogni record su un solo ramo c'è il route, che ha una porta default per i record che non soddisfano nessuna condizione: nessun record sparisce.
  • I sistemi esterni si toccano solo nei nodi che lo dichiarano: source e sink agli estremi, lookup per leggere, ai per chiedere a un modello, action per scrivere in mezzo al grafo e task per le operazioni senza record, come svuotare uno staging o scambiare due tabelle. Una transform resta pura, e si prova senza rete.
  • L'ordine fra rami si dichiara. Un edge di controllo (after) dice «B parte dopo che A è riuscito»: non porta record, parte da un task o da un sink e arriva a un task o a una source.
  • Il grafo si verifica mentre si costruisce. Un ciclo, un nodo che non esiste o un ingresso di troppo fanno fallire la costruzione, prima ancora che la run parta. Vale anche per gli edge di controllo: uno che parte o arriva al nodo sbagliato, o che chiude un ciclo con gli edge di dati, è rifiutato.

Il riepilogo di tutti i nodi, con firme e regole, è nel cheatsheet dei tipi di nodo; ogni nodo ha poi la sua scheda con opzioni, errori ed esempi. Le primitive del core sono nella guida allo sviluppo.

Noeva è un marchio registrato di 4D S.R.L.