Se una transazione persistente e 'completata' per stato è modificabile per qualsiasi utente

2

Sono venuto da uno sfondo in cui ho insegnato che quando una transazione ha raggiunto uno stato (FINITO, STAMPATO, ecc.) non dovrebbe più essere aperto per le modifiche anche agli utenti amministratori.

Ma eccomi qui, correggendo il loro errore di input umano in modo barbarico eliminando una riga nel database e / o modificando lo stato dell'elemento corrente in quello precedente. Ad un certo punto commettono errori nell'introdurre una data di transazione e l'hanno appena realizzato in un secondo momento.

Ed è davvero fastidioso.

Un software, soprattutto aziendale, dovrebbe dare a un utente tutta la libertà richiesta?

In caso affermativo, a cosa serve una transazione?

Aggiornamento:

Qui, per transazione intendo un oggetto Transaction che di solito consisteva in un riferimento all'oggetto Master e ai suoi attributi, non alla transazione del database.

    
posta Samuel Adam 02.09.2013 - 18:56
fonte

2 risposte

3

I tuoi utenti ovviamente hanno bisogno di una funzionalità (modifica o rimozione di un elemento dopo che ha raggiunto uno stato di transazione) che l'applicazione non fornisce. Sembra che quando si progetta l'applicazione si pensasse che non ci sarebbe mai stato un motivo per farlo, ma il compito che si sta eseguendo dimostra che non esiste. Altrimenti non dovresti farlo.

Nessuno è perfetto. Gli errori di input sono umani, poiché non li si nota finché non è troppo tardi. Ogni processo aziendale e il sistema software che lo rappresenta devono tenerlo a mente.

Quando i requisiti di revisione impongono che un documento non debba essere modificato in modo invisibile dopo che è stato raggiunto un determinato punto del processo di business, dovrebbe essere possibile correggere la correzione in modo trasparente. Ciò può accadere utilizzando una cronologia delle modifiche visibile di un articolo o impostandone lo stato su "VOID" o "CANCELED" e creando un nuovo elemento. Quest'ultimo permette anche di definire un processo corretto per queste situazioni.

Esempio: quando lo stato di una fattura cambia da "STAMPATO" a "ANNULLATO", stampa automaticamente una lettera di scuse dicendo al cliente di ignorare la precedente fattura.

    
risposta data 02.09.2013 - 21:04
fonte
0

Per stato di transazione, non so cosa intendi chiaramente. Forse dovresti espandere un po '. Ma penso che qui sia accaduto un malinteso.

Una transazione è per definizione un'operazione ACID . In breve, una transazione dovrebbe:

  1. O essere eseguiti completamente, o per niente. Mai niente di intermedio.
  2. Non violare le regole di coerenza (come i vincoli) dei dati
  3. Essere eseguito in uno spazio isolato da altre transazioni (in base al livello di isolamento della transazione specificato)
  4. Sii durevole, cioè continua ad esistere e non essere temporaneo

Ora, dopo che una transazione è avvenuta, chiunque abbia ancora privilegi sufficienti può accedere al database e modificarlo come qualsiasi altro dato normale.

In altre parole, ciò che esiste prima e dopo una transazione, sono dati puri. Puoi manipolarlo come qualsiasi altro dato. I dati inseriti transazionalmente non sono niente di speciale. Non è che non puoi o non dovresti cambiarlo manualmente.

    
risposta data 02.09.2013 - 19:56
fonte

Leggi altre domande sui tag