Torna al changelog

v0.12

28 maggio 2026

Attivazione flussi via evento, tracciabilita origine item, import/export portabile

  • Novità

    Attivazione flussi tramite evento

    Un flusso ora puo **avviare automaticamente un nuovo item** quando viene emesso uno specifico evento. Lo configuri in **Designer → Settings → Attivazione**: attivi lo start su evento e scegli quali eventi devono triggerare il flusso. Caso classico: *"Quando il flusso Approvazione Ordine arriva ad 'Approvato', avvia automaticamente il flusso Onboarding Cliente."* Il nuovo item eredita l'`entityRefId` dell'item sorgente e porta con se un blocco `_source` con la provenienza, cosi i task successivi possono risalire all'evento e all'item originario.

  • Novità

    Card Origine sull'item

    Ogni item ha ora una card dedicata **Origine** sulla pagina di dettaglio che mostra da dove arriva: data di creazione, tipo (`manuale` / `api` / `evento` / `spawn`), il nome dell'evento (se nato da evento), e un **link cliccabile all'item sorgente** nei casi event/spawn. Gli stessi dati sono dentro `item.data._source` per uso nei template dei task, es. `{{item.data._source.event.payload.totale}}` oppure `{{item.data._source.item.entityRefId}}`.

  • Novità

    Export e import portabili: eventi riagganciati per nome

    Quando **esporti un flusso** i riferimenti agli eventi sono ora serializzati **per nome** invece che per UUID, sia per `startEventDefIds` sia per gli `eventSubs` per stato. Su **import** in un'altra istanza FlowSharp, i nomi vengono risolti nel tenant di destinazione: se esiste un evento con stesso nome il collegamento viene ripristinato; se non esiste, viene creata automaticamente una nuova event def come `Custom`. Niente piu re-link manuale degli eventi dopo una migrazione.

  • Design

    Terminologia Stato/Fase

    Il designer ora usa la dicitura doppia **Stato/Fase** nelle label utente — pulsante in toolbar, inspector, regole di transizione. Il concetto tecnico ("stato di una macchina a stati") resta, ma e affiancato al termine business "fase di lavorazione" per l'uso quotidiano. Effetto collaterale: il bottone duplicato "Aggiungi stato Stato" e finalmente sistemato.

  • Design

    Stati finali: inspector ripulito

    Quando uno stato e marcato come **finale** nel designer, l'inspector ora **nasconde** le sezioni che non hanno senso per un nodo terminale: il selettore di tipo (Auto / Manual / AI), le regole di transizione, la lista delle transizioni consentite, e il warning "Auto senza regole" sul nodo. Uno stato finale per definizione non ha uscite — il pannello ora lo riflette.

  • Design

    Task di chiusura: banner + vista dati piu pulita

    Quando un item raggiunge uno stato finale ma ci sono ancora task aperti (es. una Manual "invia email di rifiuto"), la pagina di dettaglio mostra un banner ambra: *"N task di chiusura ancora aperti — puoi completarli per tracciabilita."* I task di wrap-up **non bloccano il completamento**: l'item e gia chiuso, i task vengono registrati per l'audit trail. Allo stesso tempo, il blocco `_source` non e piu mostrato come campo JSON grezzo nel preview dati — vive nella card Origine e nella vista JSON.

  • Miglioramento

    Elimina flusso: sempre disponibile

    Il pulsante **Elimina** (X) sulle card dei flussi e ora sempre visibile, non solo sulle bozze. Il backend decide: se il flusso **non ha mai avuto item**, hard delete con cleanup completo; se ha item, **soft disable** con messaggio informativo e gli item restano accessibili. Non serve piu passare per il pannello versioni per rimuovere un flusso pubblicato non piu usato.

  • Miglioramento

    Fix sui task Event e nel designer

    Diversi fix di qualita in questa release: i **task di tipo Event** sono ora auto-completati al momento dello spawn (fire-and-forget — restavano erroneamente in "In attesa" per sempre, bloccando silenziosamente le auto-transizioni sugli stati Auto/AI); la **dataSchema** nel designer non scompare piu cambiando tab; il **payload campione del Form AI** e ora derivato dalla `dataSchema` esistente (un'istanza con placeholder tipizzati come `{ "customerEmail": "" }`) invece di mostrare il raw JSON Schema; il matching per nome di campo tra flusso sorgente e destinazione pre-popola i campi compatibili nell'attivazione via evento.