@ Брайан Дрисколл говорит, что они установили немного в записи базы данных.Затем они говорят своим пользователям, что они ДОЛЖНЫ щелкнуть «Сохранить» или «Отменить».В самом деле?Есть так много вещей не так с этим.
Правило 1 «пользователей» дизайна взаимодействия не будет делать то, что вы ожидаете - когда-либо.
Правило 1 блокирования - если субъект, ответственный за снятие блокировки, может потерпеть неудачу, то это произойдет.Даже если вам удалось с помощью шоковой терапии обучить свою пользовательскую базу, может произойти сбой их компьютера, может произойти сбой базы данных, может произойти сбой соединения, может произойти сбой сети, пользователь может умереть в середине редактирования.
Правило 2 блокировок - когда действует правило 1 блокировок, вам нужен выход - в частности, TIMEout или какой-то другой способ освобождения осиротевших блокировок.
О блокировке в WikiPedia много написано, что стоит прочитать,Блокировка файлов и блокировка потоков (мьютексы, семафоры и т. Д.) Действительно похожи на эту проблему, и понимание того, как они работают, является хорошей отправной точкой.Действительно ли пользователь - это просто еще один внешний параллельный процессор, верно?
@ Майкл Юн, на мой взгляд, дает очень интересный ответ.Мы находимся в процессе реализации именно этого типа блокировки на основе страниц, и это то, что мы делаем сейчас в системе, но мы изменим это, чтобы больше походить на идею Yoon постоянно пинговать сервер, чтобы расширить блокировку.
- Редактирование кликов пользователя
- Запрос блокировки на объект, подлежащий редактированию (продолжительность 5 минут?), Получено
- В случае успеха GOTO 3
- В случае отказа уведомить пользователяблокировка не получена
- Проверьте версию элемента, возвращенную маркером блокировки
- Если версия такая же (никогда не может быть старше, верно?) GOTO 5
- Если версия более новая GOTO 4
- Получить последнюю версию элемента с сервера
- Перейти в режим редактирования
- Периодически проверятьсрок действия блокировки и уведомление пользователя о том, что срок действия блокировки истекает
В частности, мы бы заменили пункт 6 на идею Юна не беспокоить пользователя уведомлением, а использовать «длительность микроблокировки»возможно 30 секунди сохраняйте блокировку активной, увеличивая продолжительность блокировки у клиента чаще, чем на 30 секунд.