Document Locking

Xalet

Well-Known Member
08.08.2008
410
0
#1
Есть БД с документами. В документах хранится нумерация. В базе разрешено блокирование документов(Document locking). Пользователи через агент обращаются к базе, проверяется не заблокирован ли нужный документ, если нет, то блокируется, считывается номер, записывается новый, сохраняется закрывается, снимается блокировка.

Проблема в том, что если происходит сбой, когда документ заблокирован, он остается заблокированым постоянно.

Какие варианты решения? Спасибо.

P.S. возможно поможет Provisional lock, но я как не искал, так и не нашел описания, каким образом он работает.
 

morpheus

скриптописец
07.08.2006
3 915
1
#2
xalet
я просто разлочивал агентом документы , лок которых больше Х часов
 

morpheus

скриптописец
07.08.2006
3 915
1
#4
где то тут берём коолекцию документов...
doc -notesdocument который предположительно залочен

Код:
			LName = doc.GetItemValue( "LockHolders" )
LDate = doc.doc.GetItemValue( "~$WritersDate" )
If ( Len(LDate(0))+ Len(LoName(0)) )>0 Then ' Document Locked
If Len(LDate(0))>0 Then
delim = Now-LDate(0)
If delim > 0.5 Then Call doc.UnLock
Else
Call doc.UnLock
End If
End If

больше не дам, коммерческие права и всё такое
 

Murtas

Well-Known Member
Lotus team
11.04.2006
128
0
#7
Если кто-то знает другие способы, то не стесняйтесь - отписывайтесь
способ №2 - сделать свою блокировку :unsure:

В целом и обычно стандартная блокировка почти подходит всем ... но есть траблы (не буду здесь перечислять известные мне - одна из основных не доступность мастер сервера ) которые на пустом месте пораждает эта блокировка ... и частенько люди вообще ее отключают, так как soft locking и так присутствует, а репликационных конфликов с помощью этой локировки - не избежать по любому
 

Xalet

Well-Known Member
08.08.2008
410
0
#8
База только на сервере и ни с чем не реплецируется. Доступна только из кода.