Добрый день.
Есть база, которая условно представляет из себя систему проверки документа между отделами в WEB интерфейсе. Порядок проверки такой:
1. Инициатор создает запись с загруженным документом.
2. Люди из трех отделов(условно А, Б, В) независимо друг от друга проверяют данные в документе. Для каждого отдела доступна своя "галка" об одобрении. У каждого отдела свой пользователь(запрещен множественный вход в одного пользователя) со своими правами. При этом люди могут оставить комментарий, если что-то не так в документе.
Суть проблемы:
Если несколько отделов(разные пользователи) одновременно будут просматривать одну запись и редактировать, то при сохранении непонятно, что сохраняется.
Мое предположение, как решить эту проблему:
Пока что я могу предположить, что это можно решить, создав невидимое поле is_edit(например) и когда кто-то его открывает вносить изменение в БД(с помощью расширений). А если кто-то другой попытается открыть эту же запись на редактирование, то запретить изменять поля(с помощью расширений).
Подскажите, можно ли это решить как-то по другому и возможна ли моя идея теоретически (вдруг я что-то упускаю)?
Проблема сохранения при одновременном редактировании записи
- admin
- Разработчик
- Сообщения: 8038
- Зарегистрирован: 14 мар 2016, 11:32
- Откуда: Ленинградская
- Благодарил (а): 292 раза
- Поблагодарили: 1918 раз
Проблема сохранения при одновременном редактировании записи
А они редактируют одни и те же поля? В базу сохраняется только часть записи, которая изменилась. Комментарии в форме с документом или в отдельной форме?
Проблема сохранения при одновременном редактировании записи
В зависимости от ситуации они редактируют вручную либо одни и те же поля, либо разные. Но автоматически при сохранении вносятся изменения в журнал изменений. Журнал изменений свой для каждой записи. Как это выглядит:
1. Человек(проверяющий) открывает запись. Там он просматривает документ. Если все ок - ставит галку и сохраняет. При сохранении в журнал изменений(в этой же записи) вписывается что такой-то человек в это время поставил галку.
2. Если что-то не так с документом, проверяющий не ставит галку и пишет комментарий. При сохранении комментарий переносится в журнал изменений
[img][/img]
1. Человек(проверяющий) открывает запись. Там он просматривает документ. Если все ок - ставит галку и сохраняет. При сохранении в журнал изменений(в этой же записи) вписывается что такой-то человек в это время поставил галку.
2. Если что-то не так с документом, проверяющий не ставит галку и пишет комментарий. При сохранении комментарий переносится в журнал изменений
[img][/img]
- Вложения
-
- check.jpg (72.61 КБ) 350 просмотров
- admin
- Разработчик
- Сообщения: 8038
- Зарегистрирован: 14 мар 2016, 11:32
- Откуда: Ленинградская
- Благодарил (а): 292 раза
- Поблагодарили: 1918 раз
Проблема сохранения при одновременном редактировании записи
Так может вынести комментарии в отдельную форму и запросом подтягивать?
Проблема сохранения при одновременном редактировании записи
Я правильно понимаю идею:
Журнал изменений хранить в отдельной форме для каждой такой записи. Для установления соответствия записи и журнала изменений также хранить ID в форме с журналами. И получается при сохранении комментарий будет быстро вписываться в соответствующий журнал?
А что произойдет при теоретической ситуации, когда два пользователя одновременно попытаются сохранить?
Журнал изменений хранить в отдельной форме для каждой такой записи. Для установления соответствия записи и журнала изменений также хранить ID в форме с журналами. И получается при сохранении комментарий будет быстро вписываться в соответствующий журнал?
А что произойдет при теоретической ситуации, когда два пользователя одновременно попытаются сохранить?
- admin
- Разработчик
- Сообщения: 8038
- Зарегистрирован: 14 мар 2016, 11:32
- Откуда: Ленинградская
- Благодарил (а): 292 раза
- Поблагодарили: 1918 раз
Проблема сохранения при одновременном редактировании записи
Проще показать, чем рассказать. Никаких конфликтов при записи комментариев не будет.
- Вложения
-
- ПРИМЕР.zip
- (100.56 КБ) 28 скачиваний