Как ограничить или блокировать доступ

+1+3 -1
Не решено
Ответов: 5

Вопрос больше по проектированию. Есть система, несколько пользователей могут иметь доступ к документу и могут его редактировать. так вот как убрать коллизии одновременного редактирования разных частей документа:

есть несколько полей, один пользователь редактирует одно поле, другой может в этот момент редактировать другое поле, как правильно это сделать, чтобы пользователи хотя бы знали, что кто-то редактирует, но и не было такого, что на время редактирования не был доступен документ для изменения, потому как кто-то может просто открыть документ и пойти гулять по отделам офиса и "языком чесать"

Комментарии

Аватар пользователя vadim
+1+1 -1

Вариантов несколько:
- ставить флаг редактрования на используемое поле,
- запоминать состояние (например чек-суммой) до начала редактирования и сравнивать его в момент внесения изменений,
- ввести понятие "сессия", и сообщать о наличии иных сессий.
В любом случае все эти вариации нацелены на сообщение о возможной или уже произошедшей коллиизии, они не ограничивают работу с документом. То есть, полностью убрать коллизии это не поможет, но информируя пользователя об одновременном редактировании можно ощутимо снизить их остроту.

Аватар пользователя Fastto
+1+2 -1

хорошим примером есть одновременное редактирование таблиц в гугл-доках - т.е. ячейка или группа ячеек помечается редактируемой определенным пользователем - в результате эта выделенная область в один момент времени доступна одному человеку. При одновременном клике 2-х человек на одну и ту же ячейку доступ дается первейшему, а второму приходит уведомление о том, что ячейка уже редактируется вторым пользователям.

Аватар пользователя vadim
+10 -1

Вот тут проблема и есть - что делать если работаь надо, а ячейка занята...

Аватар пользователя Fastto
+10 -1

Нужно дать возможность "перетянуть одеяло".
т.е. по отношению к документу ввести категорию пользователей "супер-редактор" со следующими правилами:

- супер-редактор может принудительно переключить редактирование на себя у простого пользователя
- супер-редактор не может принудительно переключить редактирование на себя у другого супер-редактора
- простой пользователь не может принудительно переключить редактирование занятой ячейки на себя вообще

такое распределение должно "почти" урегулировать конфликт интересов

Но если взять к примеру совместное редактирование текста - такой проблемы возникнуть не должно, т.к. редактируя текст, максимум целесообразно блокировать редактирование одного слова.
т.е. применительно к таблицам - можно например супер-редакторам разрешить совместное редактирование одной ячейки по правилам совместного редактирования текста с блокировкой на уровне слова.
в общем тут уже все зависит от исходной задачи.

Аватар пользователя vitaliy
+10 -1

да и желательно про основных пользователей продукта не забыть, ведь некоторым проще объяснить, что вдвоем один документ нельзя редактировать, чем рассказать о перехвате суперпользователями права на редактирование ячейки