Конфликтные документы

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
6
Откажись от блокировки и не будет конфликтов. :lovecodeby:
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
6
Если конфликты так критичны, то пусть одновременно не редактируют.
 
N

nnikishi

Может не совсем в тему, как вариант можно попробовать программную лочку документов. Ее использовали еще до 6 сервера:

на Querymodechange вешается скрипт, который для первого пользователя создает системный документ, вбивает туда юнид текущего документа а также имя пользователя и время. Когда второй юзер пытается редактировать этот же документ, скрипт проверяет наличие системного документа по униду с непустыми полями пользователь и время и юзеру выдается warning, что документ уже редактируется другим пользователем.

дальше точно не помню, кажется, то ли на QueryClose, то ли на Postmodechange (при условии что source.editmode = false), а может и туда и туда вешается разлочка - обнуляется имя пользователя и время в системном документе.

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

Надеюсь что немного букв.
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
Работает железно, даже если Лотус и грохается в процессе редактирования документа или при сохранении, и документ становится условно залочен долгое время, админ или продвинутый пользователь может разлочить документ вручную, найдя системный документ в спец виде по униду и обнулив поля.
боги, неужто нельзя было через екшен сделать, а не лезть руками поля чистить :lovecodeby:
 
N

nnikishi

ToxaRat, да нафига экшн, у каждого пользователя стоит лицензионный ScanEZ ;)

Конечно, есть уи интерфейс, я просто мысль показываю
 

dimat

Well-known member
31.07.2008
508
0
BIT
0
Решил попробовать сделать как написал nnikishi, снял Allow documents locking. С 1 учетки открыл документ на редактирование, со второй пытаюсь открыть этот же документ на редактирование, пишет документ уже заблокирован пользователем таким то. Почему так?
И еще вопрос: для чего необходимо указывать Административный сервер, помимо блокировки документов?
 
N

nnikishi

База одна или есть реплики? Поменяйте свойство на админ сервере и дождитесь пока свойство отреплицируется если есть реплики
Админ сервер много для чего нужен, например, перебивать names поля...
Некоторые любят добавлять функцию в скедульный агент, чтобы агент отрабатывался только на админ сервере... т.е. в свойствах стоит run on any server, а программно работает только на админ сервере
 

dimat

Well-known member
31.07.2008
508
0
BIT
0
База одна, реплик нет. Октрываю свойство бд в клиенте снимаю блокировку перезахожу в бд проверяю - блокировки нет, рядом стоят 2 компа с разными учетками на них пробую открывать док, результат такой как будто блокировка включена. Вот я и думаю может кэширование какое есть этих свойств?
 
H

hosm

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

Добавлено:
Вот я и думаю может кэширование какое есть этих свойств?
перезайти в клиент/drop all помогает
 
N

nnikishi

попробуйте откомпактить, некоторые свойства только после перекомпакта подхватываются
 

VladSh

начинающий
Lotus Team
11.12.2009
1 797
158
BIT
233
dimat
Галкой и админсервером вы включаете/отключаете HardLock, т.е. возможность блокировать в бэкэнде: NotesDocument.Lock() и NotesDocument.UnLock().
То, что доки всё равно блокируются при переводе в режим редактирования (в UI) - это называется SoftLock (не зависит от галки и админсервера, блокировка происходит на клиенте автоматически, т.е. это встроенная возможность клиента 6 и более), оно отключается в notes.ini.
См. (благодарности за компиляцию принимает Mitka Akulov :rolleyes: )
 

dimat

Well-known member
31.07.2008
508
0
BIT
0
Галкой и админсервером вы включаете/отключаете HardLock, т.е. возможность блокировать в бэкэнде: NotesDocument.Lock() и NotesDocument.UnLock().
То, что доки всё равно блокируются при переводе в режим редактирования (в UI) - это называется SoftLock (не зависит от галки и админсервера, блокировка происходит на клиенте автоматически, т.е. это встроенная возможность клиента 6 и более), оно отключается в notes.ini.
См. LND65_SoftLock.pdf (благодарности за компиляцию принимает Mitka Akulov wink.gif )

VladSh Спасибо за исчерпывающий ответ
 

VladSh

начинающий
Lotus Team
11.12.2009
1 797
158
BIT
233
dimat
Я усомнился в том, что Ваша проблема из-за блокировки, т.к. у меня куча форм, где есть Soft-locking, и это работает - реально переоткрываются доки для отображения изменений в ричтексте.. Сейчас проверил (LN 6.5.1, 8.5.1-8.5.2.) - всё работает нормально, никаких сообщений о конфликтах при сохранении нет.

Думаю, что возможно 2 варианта:
- док где-то сохраняется в бэкэнде, т.е. либо где-то на событиях документа или подформ либо SaveOptions="1" + NotesUIDocument.Refresh(True);
- док открывается пользователем в режиме для чтения, его изменяет какой-то другой агент, затем пользователь переходит в режим редактирования, делает изменения, сохраняет документ и получает сообщение о сохранении как конфликта. Я сам на такое натыкался, писал об этом , но тупые американцы не хотят понимать...

Добавлено: P.S. Soft-Lock не советую отключать, блокировка хоть и косая, но зато самая быстрая; в пределах текущего сервера работает приемлемо.
 

dimat

Well-known member
31.07.2008
508
0
BIT
0
VladSh
Моя проблема была из-за Hard locking, просто до Вашего поста о типах блокировок я о них не знал, сейчас убрал хард блокировку и оставил софт - все стало нормально
 
Мы в соцсетях:

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