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

Kizarek86

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

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

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

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

заранее благодарен.
 
M

morpheus

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

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

Akupaka

а зачем вообще это все? репликацией нельзя было воспользоваться?..

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

- при открытии ставим признак, что документ заблокирован во вспомогательном документе;
- при закрытии его снимаем;
- при попытке синхронизации, смотрим, если документ заблокирован, то делаем ответом наш синхронизируемый документ к заблокированному документу;
- если не заблокирован - сихнронизируем;
- каким-то образом придумать синхронизацию ответов, которые не удалось синхронизировать ранее :)
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
6
А использовать стандартную блокировку?
 
M

morpheus

kizarek
там ( в Lock/Unlock ) тоже будут грабли по закакиванию документов. документ не залочен, а в полях врайтеров все равно стоит информация о локе
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
6
там ( в Lock/Unlock ) тоже будут грабли по закакиванию документов. документ не залочен, а в полях врайтеров все равно стоит информация о локе
Это достаточно редко.
Зато, если документ изменится на одном сервере, то на другом при попытке открыть документ выскочит сообщение, что документ был изменен.
 
M

morpheus

Medevic
я вот пока плохо себе представляю как быть с репликами
 
M

morpheus

Medevic
будет ли реплицироваться информация о Lock документа вместе с документом?
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
6
будет ли реплицироваться информация о Lock документа вместе с документом?
Поля $Writers и $WritersDate вроде бы будут реплицироваться. Но блокировкой управляет только один сервер. Поэтому при попытках заблокировать/разблокировать будет проверяться статус документа на определенном сервере.
 

Kizarek86

Green Team
20.07.2007
875
8
BIT
118
Как с локом обстоит дело вообще? если при открытии документа он блокируется, а при закрытии разблокируется, то есть ли возможность закрыть документ не разблокировав? т.е. есть ли реальная возможность закрыть документ без отработки квериклоза? закроется ли тогда документ для чтения другим юзерам? то как узнать что документ заблокирован из другой базы?
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
6
есть ли возможность закрыть документ не разблокировав? т.е. есть ли реальная возможность закрыть документ без отработки квериклоза?
Есть. Кнопка Power или сбой.

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

то как узнать что документ заблокирован из другой базы?
notesDocument.LockHolders
 
M

morpheus

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


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

Akupaka

ребята, в хэлпе все ваши вопросы описаны, что вы догадываетесь? :)

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

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
6
ребята, в хэлпе все ваши вопросы описаны, что вы догадываетесь?
Где?

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

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!