Questo è un problema piuttosto comune e uno dei motivi per cui le applicazioni Web tendono a impegnarsi subito dopo ogni modifica. A volte la risposta giusta non fa nulla. Devi decidere in anticipo come intendi farlo in ordine di complessità:
- L'ultimo commit vince (comportamento predefinito)
- Blocca attivamente il record per impedire modifiche
- Aggiorna schermata se vengono rilevate modifiche
- Risolvi i conflitti dopo il tentativo di commit (ultimo perché è meno favorevole)
Il comportamento che stai vivendo ora è che l'ultima persona che salva le modifiche vince. Non è sempre una risposta sbagliata, in particolare se la quantità di dati è piuttosto piccola.
Il blocco attivo può essere un dolore necessario se si stanno impegnando molte modifiche contemporaneamente. L'overhead per essere in grado di supportare un'appropriata fusione dei record è piuttosto alto, quindi è più facile impedire ad altre persone di essere in grado di modificare il record. Avrai bisogno di espirare naturalmente i lucchetti se l'utente dimentica di sbloccare il record.
Le app a singola pagina (o app desktop) hanno il lusso di poter fornire un livello di integrazione molto più granulare. È utile se si consente il server push a chiunque abbia quel record aperto. Quando hai la possibilità di inviare notifiche di modifica, l'interfaccia utente può aggiornare l'interfaccia utente per riflettere ciò che è attualmente sul server. Nel caso in cui qualcun altro stia modificando il codice, puoi almeno vedere cosa c'è sul server accanto a ciò che hai digitato. Questo è piuttosto complicato, ma se è possibile inviare patch dalla SPA al back-end e viceversa, è possibile. Ancora meglio, se l'interfaccia utente ha un solo controllo in modalità di modifica alla volta, le modifiche sono molto più dettagliate.
L'ultima opzione è usare il controllo di versione sui dati e rilevare la versione dei dati che stai modificando è vecchia sul server. In tal caso, è possibile inviare una risposta per consentire all'utente di modificare manualmente i conflitti. Questa è un'esperienza utente piuttosto schifosa dal momento che è sull'utente cercare e trovare dove sono cambiate le cose.
Bottom Line
Devi scegliere quale dei molti modi per gestire questo problema si adatta meglio alla tua applicazione. A volte l'utente richiede blocchi di record attivi. A volte richiederanno la versione altamente interattiva. Ci sono dei compromessi, quindi dovrai lavorare con la tua comunità di utenti per selezionare realmente ciò che funzionerà meglio dal punto di vista dell'impegno / tempo.