Supponiamo che tu abbia un'applicazione che collega 3 diversi sistemi esterni. È necessario aggiornare qualcosa in tutto 3. In caso di errore, è necessario ripristinare le operazioni. Questa non è una cosa difficile da implementare, ma dire che l'operazione 3 fallisce, e quando si arretra, il rollback per l'operazione 1 fallisce! Ora il primo sistema esterno non è in uno stato ...Operazioni atomiche su diversi sistemi esterni senza transazione
Sto pensando che una possibile soluzione è chiudere l'applicazione e forzare una correzione manuale del sistema esterno, ma poi di nuovo ... Potrebbe già avere usato questa informazione (e forse è per questo che ha fallito), o potremmo non avere accesso sufficiente. Oppure potrebbe non essere nemmeno un buon modo per ripristinare l'azione!
Esistono alcuni modi per gestire questi casi?
EDIT: Alcuni dettagli dell'applicazione ..
Si tratta di un'applicazione multi utente web. La maggior parte del lavoro viene eseguita con i lavori pianificati (tramite Quartz.Net), quindi la maggior parte delle operazioni viene eseguita nella propria thread. Tuttavia, alcune azioni dell'utente dovrebbero attivare processi che aggiornano diversi sistemi. I sistemi esterni sono alquanto instabili.
stavo pensando di cambiare l'applicazione per utilizzare il comando e l'unità di modello di lavoro
I sistemi esterni sono stati riparati? O puoi modificarli? – bmargulies