• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Блокировка документа

  • Автор темы Автор темы Kizarek86
  • Дата начала Дата начала

Kizarek86

Green Team
20.07.2007
876
8
ну собственно хотелось бы услышать кто и как делает.

Ситуация следующая, есть 2е базы, 1бд и 2бд. между 1бд и 2бд осуществляется синхронизация при закрытии документа(по запросу пользователя и агентом). В 1бд созадана система, что при открытии документа с которым возможна синхронизация, создается документ который при синхронизациии говорит что документ занят.

вот какие проблемы нам это несет:
1. Документ о занятости другого создается при открытии документа (что на чтение, что на редактирование). А вот удаляется только при закрытии документа из редактирования (на событии квериклозе).И запись эта сохраняется до удаления агентом, и документ становится занятым до отработки агента, тоже в общем то решаема, но не очень приятно.
2. Не все пользователи имеют право на удаление документов, приходится обнулять значение, что приводит к огрызкам этих документов в базе. в общем то пустяк, агентом ночным чистим, но все равно неприятно.

прошу поделиться идеями синхронизации) и мб какие то мысли есть по даным проблемам.

заранее благодарен.
 
А вот удаляется только при закрытии документа из редактирования (на событии квериклозе)
queryclose срабатывает в любом случае при "нормальном" закрытии UI документа

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

если синхронизация по типу репликации, а реплицировать нельзя, то почему бы не сделать так:

- при открытии ставим признак, что документ заблокирован во вспомогательном документе;
- при закрытии его снимаем;
- при попытке синхронизации, смотрим, если документ заблокирован, то делаем ответом наш синхронизируемый документ к заблокированному документу;
- если не заблокирован - сихнронизируем;
- каким-то образом придумать синхронизацию ответов, которые не удалось синхронизировать ранее :)
 
А использовать стандартную блокировку?
 
Morpheus
Что есть стандартная блокировка просвятите?)
 
kizarek
там ( в Lock/Unlock ) тоже будут грабли по закакиванию документов. документ не залочен, а в полях врайтеров все равно стоит информация о локе
 
там ( в Lock/Unlock ) тоже будут грабли по закакиванию документов. документ не залочен, а в полях врайтеров все равно стоит информация о локе
Это достаточно редко.
Зато, если документ изменится на одном сервере, то на другом при попытке открыть документ выскочит сообщение, что документ был изменен.
 
Medevic
я вот пока плохо себе представляю как быть с репликами
 
Medevic
будет ли реплицироваться информация о Lock документа вместе с документом?
 
будет ли реплицироваться информация о Lock документа вместе с документом?
Поля $Writers и $WritersDate вроде бы будут реплицироваться. Но блокировкой управляет только один сервер. Поэтому при попытках заблокировать/разблокировать будет проверяться статус документа на определенном сервере.
 
Как с локом обстоит дело вообще? если при открытии документа он блокируется, а при закрытии разблокируется, то есть ли возможность закрыть документ не разблокировав? т.е. есть ли реальная возможность закрыть документ без отработки квериклоза? закроется ли тогда документ для чтения другим юзерам? то как узнать что документ заблокирован из другой базы?
 
есть ли возможность закрыть документ не разблокировав? т.е. есть ли реальная возможность закрыть документ без отработки квериклоза?
Есть. Кнопка Power или сбой.

закроется ли тогда документ для чтения другим юзерам?
Блокируется только для редактирования.

то как узнать что документ заблокирован из другой базы?
notesDocument.LockHolders
 
закроется ли тогда документ для чтения другим юзерам?
https://codeby.net/threads/15154.html- штудируем


Поэтому при попытках заблокировать/разблокировать будет проверяться статус документа на определенном сервере.
а что именно будет и как определяться "определённый" сервер
 
ребята, в хэлпе все ваши вопросы описаны, что вы догадываетесь? :)

вот кто из вас знает точно, нужны ли права на изменение дока, чтобы его заблокировать?
а то тут чтение упоминается вовсю, но заблокировать документ от чтения можно лишь явно кодом в QueryOpen, и то только УИ! а бэкэнд?.. если, конечно, надо :)
 
ребята, в хэлпе все ваши вопросы описаны, что вы догадываетесь?
Где?

вот кто из вас знает точно, нужны ли права на изменение дока, чтобы его заблокировать?
В хелпе написано, зачем же спрашивать? :)

а то тут чтение упоминается вовсю, но заблокировать документ от чтения можно лишь явно кодом в QueryOpen, и то только УИ! а бэкэнд?.. если, конечно, надо
А разве есть задача заблокировать документ от чтения?
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab