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 catchinvoices — sourceinvoicesPostgreSQLcustomers — sourcecustomersCSV su S3raw-invoice — transformraw-invoicevalidatescarti-fatture — dead-letterscarti-fatturedead-letterraw-customer — transformraw-customervalidatelistino — lookuplistinolookup · PostgreSQLenrich — joinenrichjoin leftguard — try-catchguardtry-catchfact-contract — transformfact-contractvalidatelog-errors — transformlog-errorsramo catchfacts — sinkfactsSQL Server · upserterrors — sinkerrorsS3 · 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. Tutti gli altri nodi hanno un solo ingresso. Dividere un flusso invece è libero: più nodi possono partire dallo stesso nodo.
  • I sistemi esterni si toccano solo nei nodi che lo dichiarano: source, sink, lookup. Una transform resta pura, e si prova senza rete.
  • 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.

Il dettaglio è nella guida allo sviluppo, e le ragioni di queste scelte negli ADR, a partire dal grafo come unico modo di costruire un processo.

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