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

Kizarek86

Well-Known Member
Lotus team
20.07.2007
863
6
#1
ну собственно хотелось бы услышать кто и как делает.

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

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

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

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

morpheus

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

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

Akupaka

А че я?.. О.о
04.10.2007
3 360
2
#3
а зачем вообще это все? репликацией нельзя было воспользоваться?..

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

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

Kizarek86

Well-Known Member
Lotus team
20.07.2007
863
6
#5
Morpheus
Что есть стандартная блокировка просвятите?)
 

morpheus

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

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
#8
там ( в Lock/Unlock ) тоже будут грабли по закакиванию документов. документ не залочен, а в полях врайтеров все равно стоит информация о локе
Это достаточно редко.
Зато, если документ изменится на одном сервере, то на другом при попытке открыть документ выскочит сообщение, что документ был изменен.
 

morpheus

скриптописец
07.08.2006
3 915
1
#9
Medevic
я вот пока плохо себе представляю как быть с репликами
 

morpheus

скриптописец
07.08.2006
3 915
1
#11
Medevic
будет ли реплицироваться информация о Lock документа вместе с документом?
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
#12
будет ли реплицироваться информация о Lock документа вместе с документом?
Поля $Writers и $WritersDate вроде бы будут реплицироваться. Но блокировкой управляет только один сервер. Поэтому при попытках заблокировать/разблокировать будет проверяться статус документа на определенном сервере.
 

Kizarek86

Well-Known Member
Lotus team
20.07.2007
863
6
#13
Как с локом обстоит дело вообще? если при открытии документа он блокируется, а при закрытии разблокируется, то есть ли возможность закрыть документ не разблокировав? т.е. есть ли реальная возможность закрыть документ без отработки квериклоза? закроется ли тогда документ для чтения другим юзерам? то как узнать что документ заблокирован из другой базы?
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
#14
есть ли возможность закрыть документ не разблокировав? т.е. есть ли реальная возможность закрыть документ без отработки квериклоза?
Есть. Кнопка Power или сбой.

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

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

morpheus

скриптописец
07.08.2006
3 915
1
#15
закроется ли тогда документ для чтения другим юзерам?
http://codeby.net/forum/threads/15154.html- штудируем


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

Akupaka

А че я?.. О.о
04.10.2007
3 360
2
#19
ребята, в хэлпе все ваши вопросы описаны, что вы догадываетесь? :)

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

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
#20
ребята, в хэлпе все ваши вопросы описаны, что вы догадываетесь?
Где?

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

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