Sto costruendo un programma con i seguenti criteri:pessimistica rispetto Optimistic Concurrency (Blocco contro Feedback)
- elementi di lavoro: elementi che devono essere lavorato manualmente via web dagli utenti (forma abbreviata di una pagina)
- utenti multipli di lavoro 'elementi di lavoro'
- Ogni utente ha una coda di 'elementi di lavoro'
- C'è una ricerca che permette agli utenti di visualizzare 'gli elementi di lavoro' e assegnare 'elementi di lavoro nei confronti dei loro code
- Utenti può prendere "oggetti di lavoro" dalle code degli altri assegnandoli a se stessi
Nota: gli "elementi di lavoro" vengono elaborati una sola volta. Questa non è una pagina wiki, è più un esercizio di abbinamento che dovrebbe essere eseguito solo una volta da un utente. Una volta che l''oggetto di lavoro' è funzionato, è andato via dal sistema (a parte qualche auditing/reporting), un po 'come un sistema di tracciamento dei bug
Quale opzione credi sia meglio? Puoi citare alcune applicazioni tradizionali che supportano la tua opinione?
Opzione 1:
- Quando l'utente A va a visualizzare o lavorare un 'elemento di lavoro', il 'elemento di lavoro' viene bloccato.
- Quando gli altri utenti passano all '"elemento di lavoro" dopo che l'utente A ha aperto l' "oggetto di lavoro", saranno in grado di vedere solo l '"oggetto di lavoro". Non possono scrivere.
- Il blocco scade dopo n minuti, momento in cui un altro utente può bloccare l'elemento di lavoro.
Opzione 2:
- Qualsiasi utente può tirare su un 'elemento di lavoro' senza bloccarlo.
- Se l'utente A lavora l'elemento di lavoro inviando il modulo e l'utente B lavora lo stesso "oggetto di lavoro", il lavoro dell'utente A avrà effetto nel database e l'utente B verrà informato che le modifiche non sono state eseguite influisce perché un altro utente ha modificato "l'oggetto di lavoro".
Personalmente preferisco l'opzione 2. Pensieri per favore?
grazie, sai che la maggior parte dei sistemi di tracciamento dei bug utilizza? pessimista o ottimista, vorrei assumere il secondo – ckarbass
Scusa, non lo so, ma come ipotesi dato che la maggior parte dei sistemi di tracciamento dei bug sono basati sul web, e il web è (per lo più :) stateless, quindi probabilmente si usa il blocco ottimistico. – si618