Domanda

Ho un prodotto con due applicazioni separate. Il nucleo del prodotto vive nel database (Oracle) e funziona secondo un programma. L'altra è un'applicazione client (attualmente ASP.NET MVC3) utilizzata per gestire l'applicazione di database. Ci sono tre livelli di validazione in corso; Client, lato server e database prima che i dati client vengano salvati nel database.

Tuttavia, ci sono casi in cui i pezzi del set di dati sono attualmente validi ma potrebbero non essere validi ad un certo punto in futuro. In questi casi anziché interrompere l'intero processo di input dei dati (lungo), posizioniamo semplicemente il processo per il set di dati in attesa fino a quando i dati diventano validi o vengono aggiornati a un valore valido. L'errore potrebbe essere qualcosa di simile "Ehi, hai programmato il processo di copia dei dati sulla posizione X, quindi concedi l'accesso all'utente Bob. L'account utente Bob che hai selezionato in origine non è più valido, cosa vorresti fare?" Annulla la richiesta di copia "Modifica l'utente" o "ATTENDI".

Esistono migliori pratiche per l'archiviazione e la segnalazione delle condizioni di errore (fissabili dall'utente) e le eccezioni (non fatali e non fissabili dall'utente) al client dal database?

Per esempio:
- Database inizia il processo a
- Database seleziona il set di dati foo
- Durante il processo si verifica un errore o un'eccezione
- Il database memorizza l'errore o l'eccezione
- Il database gestisce l'aborte per il processo A con il set di dati foo
- Il database continua il processo A con il set di dati successivo fino a quando tutti i set di dati non vengono elaborati
- Il database completa il processo a

Poi qualche tempo dopo:
- L'utente accede all'applicazione client in un secondo momento (dopo il fine settimana?)
- L'utente riceve la notifica che si è verificata un errore o un'eccezione

Il mio primo pensiero è una sorta di tabella DB che memorizza vari campi (event_ time_stamp, processo, event, object_type, object_pk, event_code, aggiuntivo_details, stato, last_updated). Quindi impostare modelli sul lato client (cioè hard codificati con parametri) per ciascun codice di errore e presentarli all'utente ... ma deve esserci un modo migliore?

Idealmente, sto cercando una soluzione che consenta al cliente di fornire utili opzioni dell'interfaccia utente che aiuteranno l'utente a risolvere eventualmente gli errori.

Quali soluzioni hai trovato a questo problema? Qualcosa come NserviceBus o MassTransit funzionerebbe?

EDIT: ci sono due diversi requisiti qui. Il primo a immagazzinare le eccezioni e il secondo a segnalare (e possibilmente agire).

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
scroll top