Tema
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.
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
joino ununion. Iljoinli accoppia per chiave, ilunionli mette in fila senza toccare i record. Gli altri nodi hanno un solo ingresso, trannesourceetask, 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'è ilroute, che ha una portadefaultper i record che non soddisfano nessuna condizione: nessun record sparisce. - I sistemi esterni si toccano solo nei nodi che lo dichiarano:
sourceesinkagli estremi,lookupper leggere,aiper chiedere a un modello,actionper scrivere in mezzo al grafo etaskper le operazioni senza record, come svuotare uno staging o scambiare due tabelle. Unatransformresta 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 untasko da unsinke arriva a untasko a unasource. - 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.

