Come progettare azioni compensative in un workflow AI

Il workflow ha creato la pratica, prenotato una risorsa e preparato una notifica. L'ultimo passaggio fallisce. Cancellare il record iniziale non libera la risorsa e non ritira la notifica già entrata nella coda.
Quando un processo attraversa più sistemi, il rollback perfetto spesso non esiste. Servono azioni compensative: passi espliciti che neutralizzano, correggono o chiudono gli effetti già prodotti e portano il processo in uno stato accettabile.
Il verbo annullare inganna. Una compensazione può revocare una prenotazione, segnare una pratica come incompleta, emettere una rettifica oppure passare il caso a una persona. Non sempre riporta tutto al punto di partenza. Microsoft lo chiarisce nel pattern Compensating Transaction: lavoro concorrente e regole del processo rendono pericoloso ripristinare alla cieca lo stato precedente.
Capisci quando il retry non basta
AWS separa due percorsi. Il recupero in avanti ripete uno step transitorio e continua. Il recupero indietro applica compensazioni agli step già chiusi.
Situazione | Percorso probabile | Perché |
|---|---|---|
timeout prima di qualsiasi effetto | retry entro budget | lo stesso step può riuscire |
effetto confermato, risposta persa | riconciliazione | ritentare può duplicare |
input non valido dopo step precedenti | compensazione o correzione manuale | il processo non può avanzare |
dipendenza ferma ma stato conservato | pausa o recupero in avanti | annullare può essere inutile |
azione irreversibile già eseguita | gestione manuale e stato terminale | non esiste un vero undo |
Il primo controllo resta l'idempotenza. I retry idempotenti del workflow AI evitano che una risposta persa produca un secondo invio. La compensazione entra quando alcuni effetti sono certi e il risultato complessivo non può più chiudersi come previsto.
Mappa effetto e compensazione per ogni step

Per ogni passaggio scrivi cosa cambia fuori dal workflow. Chiama il gestionale descrive il mezzo, non l'effetto.
Step | Effetto atteso | Prova | Compensazione candidata | Autorità |
|---|---|---|---|---|
crea pratica | nuovo record |
| chiudi come annullata | process owner |
prenota slot | disponibilità ridotta |
| libera lo slot | operations |
genera documento | file versionato | hash e percorso | marca come superato | document owner |
invia messaggio | destinatario raggiunto | receipt del canale | invia rettifica | communication owner |
aggiorna prezzo | dato commerciale cambiato | versione e audit | revisione competente | ruolo autorizzato |
La tabella non autorizza le azioni. Le rende visibili. Un rimborso, una cancellazione o una rettifica possono avere regole che il workflow non conosce. Il sistema prepara il caso e chiama il ruolo previsto.
Accanto alla compensazione definisci il risultato accettabile. Libera lo slot può essere impossibile se un altro processo lo ha già assegnato. In quel caso l'esito può diventare manual_reallocation, non rolled_back.
Registra la prova di ogni effetto
Una compensazione parte da ciò che è successo, non dall'ultimo messaggio di errore. Conserva identificatori e ricevute per distinguere quattro stati:
effetto non iniziato
effetto iniziato ma non confermato
effetto completato
effetto completato e già modificato da un altro processo
Il secondo stato è quello pericoloso. Se non sai se il sistema destinatario ha accettato l'azione, verifica prima di ritentare o compensare. Una chiave idempotente, un identificatore remoto o una query read-only possono chiudere il dubbio.
L'audit trail del workflow AI deve collegare step, versione, input autorizzato, ricevuta e decisione. Un log che dice step failed non permette di capire quale conseguenza esiste ancora.
Segna i punti di non ritorno

Alcune azioni non si possono annullare in modo sicuro o significativo. Un messaggio letto non torna non letto. Un file scaricato non può essere richiamato. Una decisione contrattuale non diventa nulla perché il record è stato cancellato.
Microsoft raccomanda di identificare gli step irreversibili e metterli dopo le validazioni critiche. Nel workflow, marca almeno:
step_id: send-approved-notice
effect_class: external_communication
reversible: false
preconditions:
- source_verified
- content_approved
- recipient_authorized
required_receipt: channel_delivery_receipt
failure_path: human_reviewSe un passaggio irreversibile arriva troppo presto, spostalo. Prima prepara la bozza, valida destinatario e fonte, raccogli l'approvazione. Solo dopo esegui.
Il punto di non ritorno deve cambiare anche il recupero. Prima puoi compensare in automatico dentro un perimetro stretto. Dopo, il sistema conserva le prove e passa alla persona competente.
Progetta compensazioni idempotenti
Anche una compensazione può fallire. Microsoft chiede di registrare il progresso e rendere gli step ripetibili senza moltiplicare gli effetti.
Una richiesta di cancellazione può essere ritentata con la stessa chiave. Una rettifica inviata due volte, invece, crea un secondo problema. Per ciascun passo definisci:
chiave univoca della compensazione
versione dell'effetto originale
precondizione da rileggere
esito già applicato
ricevuta attesa
retry ammesso
stato terminale in caso di incertezza
Non usare undo_complete come unico risultato. Distingui almeno compensated, already_compensated, manual_action_required, irreversible_effect_confirmed e compensation_failed.
Scegli l'ordine in base agli effetti
La sequenza inversa è un buon punto di partenza, non una legge. Microsoft osserva che le compensazioni possono seguire un ordine diverso o procedere in parallelo.
Immagina tre step: crea pratica, blocca inventario, invia conferma. Se la conferma è già partita, liberare subito l'inventario può rendere falso il messaggio ricevuto. Potrebbe servire prima una decisione, poi la rettifica, infine lo sblocco.
Costruisci un grafo con dipendenze e vincoli:
effetto originale -> prova -> decisione -> compensazione -> verificaDue compensazioni indipendenti possono correre insieme. Quelle che modificano lo stesso oggetto devono essere ordinate. Una regola di business può prevalere sulla comodità tecnica.
Usa una disposition card per i casi umani
Quando la compensazione automatica non è sicura, il passaggio umano deve ricevere un caso completo:
case_id
workflow_version
failed_step
confirmed_effects
uncertain_effects
proposed_options
irreversible_actions
decision_authority
decision_due_at
evidence_refsL'escalation umana di un workflow AI funziona solo se la persona può capire cosa è successo e quali opzioni sono ancora aperte. Uno screenshot dell'errore costringe a ricostruire tutto da capo.
Il modello può riassumere la sequenza e preparare le opzioni. Non interpreta contratto, rimborso, obbligo o autorizzazione. Se manca una prova, scrive unknown.
Riconcilia il processo intero
Una compensazione riuscita non chiude automaticamente il caso. Confronta lo stato finale in ogni sistema con la disposizione approvata.
Controlla:
quali effetti originali restano
quali compensazioni hanno una ricevuta valida
se sono nate nuove versioni o modifiche concorrenti
se messaggi e documenti descrivono ancora lo stato reale
se code e retry sono stati fermati o riaperti
se il caso ha un esito terminale leggibile
I fallimenti ricorrenti o ad alto impatto entrano nel registro degli incidenti AI. Non ogni compensazione è un incidente. Il collegamento serve quando volume, gravità o causa chiedono una risposta più ampia.
Misura casi compensati, casi manuali, durata fino allo stato noto, compensazioni ripetute, effetti incerti e fallimenti della compensazione. Il numero più utile spesso è unknown_effect_count: se resta sopra zero, il processo non è ancora chiuso.
Esempio fittizio
Un workflow prepara l'iscrizione a un laboratorio interno. Crea il record, blocca un posto e genera una mail. Prima dell'invio scopre che il reparto indicato non è ammesso a quella sessione.
Il record esiste e il posto è bloccato. La mail non è partita, come dimostra l'assenza della receipt. Il workflow chiude il record con motivo eligibility_failed, libera il posto usando la stessa chiave della prenotazione e verifica il nuovo conteggio. Nessuna rettifica è necessaria.
In un secondo caso la receipt della mail è incerta. Il sistema non libera subito il posto e non invia una seconda comunicazione. Passa il caso al communication owner, che verifica il canale. La mail era stata consegnata. L'owner approva una rettifica, poi operations libera il posto. Il caso chiude come compensated_with_notice.
Stesso errore, due recuperi. La differenza la fa la prova dell'effetto.
Think, Build, Enable applicato alle compensazioni
Think: elenca effetti, prove, regole, punti di non ritorno e autorità per ogni step.
Build: crea ricevute, chiavi idempotenti, grafo delle compensazioni, disposition card e riconciliazione.
Enable: assegna i casi manuali, prova un effetto incerto e fai chiudere il processo senza cancellare la storia.
Porta workflow, effetti e punti di non ritorno a MAIKER HUB per progettare automazioni e agenti AI con n8n. Il recupero è completo quando ogni conseguenza ha uno stato noto, non quando l'ultimo step diventa verde.
Domande frequenti
Compensazione e rollback sono la stessa cosa?
No. Un rollback atomico ripristina una transazione. La compensazione applica nuove azioni per neutralizzare o gestire effetti già confermati in più sistemi.
Devo compensare sempre in ordine inverso?
No. Dipendenze, concorrenza e regole del processo possono richiedere un ordine diverso. Alcuni step indipendenti possono procedere insieme.
Cosa faccio se anche la compensazione fallisce?
Registra il progresso, ritenta solo gli step dichiarati idempotenti e passa a gestione manuale quando lo stato resta incerto.
Un agent AI può scegliere da solo la compensazione?
Può applicare una regola già approvata entro un perimetro chiuso. Casi ad alto impatto, irreversibili o ambigui passano all'autorità competente.
Devo eliminare il record originale dopo la compensazione?
Di norma no. Conservalo con stato, motivo, ricevute e collegamento alla compensazione. La storia serve per riconciliare e imparare.

