OPENSOURCE

INFORMACE

NEWSLETTER

DISKUSE
ECL 
03.04.2019 16:10

Agent přestal fungovat (1)
18.03.2019 08:28

Načíst krátký text z webu 
17.03.2019 23:32

Indexy mimo DB (1)
19.02.2019 15:46

planovaný agent v mail.box (1)
17.02.2019 15:11

Hint v Link 
17.12.2018 11:08

NoCache a ReCache (1)
17.12.2018 10:54

IBM se zbavilo Domina (1)
12.12.2018 10:26


ŠKOLENÍ


REKLAMA


KOMENTÁŘE

Zamykání dokumentů v Lotus Notes

Vytisknout článek

Zamykání dokumentů (zabránění editace jednoho dokumentu více uživatelům) bylo a je předmětem mnoha diskusí v programátorském světě lotusáků. Server ve verzi R6 má integrované zamykání, ale ne vždy je toto řešení dostatečné. Navíc obsahuje drobné chyby.


Většina firem však ještě pořád používá R5 a to je i náš případ. Nedávno jsem dostal za úkol vyřešit zamykání dokumentu právě pro verzi R5. První co mě napadlo, bylo podívat se na Internet a najít něco pro inspiraci. K mému velkému překvapení jsem ale našel jen řešení, za která bych sám nedal ani groš (zamykání pomocí profilového dokumentu apod.). Proto jsem se rozhodl zveřejnit algoritmus, který jsem vytvořil, jako alternativu k tomu, co jsem našel.

Základem mého řešení je databáze zámků. Je to databáze, do které si budeme vytvářet dokumenty - tzv. zámky. Představte si, že máte aplikační databázi, která obsahuje dokument. Zámek pak bude dokument v databázi zámků se stejným universalid jako dokument v aplikační databázi. Otázkou však je, jak zabránit vzniku replikačních konfliktů u dokumentu zámku. A tady by se hodilo úsloví - v jednoduchosti je krása ..:). Necháme to jednoduše na serveru.

Základním indexem dokumentu v každé databázi je právě universalid - alespoň to tak vypadá. Proto nelze v jedné databázi vytvořit více dokumentů se stejným unidem. A z toho budeme vycházet. Dále je pro nás důležité, aby si algoritmus udržoval konstantní výkon. Z toho důvodu po přepnutí dokumentu do režimu čtení zámek jednoduše smažeme. To znamená, že v okamžiku přepínání dokumentu z režimu čtení vytváříme a ukládáme dokument zámku. Pokud však před námi někdo přepnul dokument do editačního režimu - vytvořil dokument zámku - náš dokument se neuloží, neboť má stejný universalid a algoritmus nám vrátí chybu.

Samozřejmě také musíme pamatovat na situaci, že uživateli může v průběhu editace dokumentu "kleknout" počítač. Stává se to výjimečně, ale tento stav musíme ošetřit. K tomu nám poslouží třída notestimer. Po přepnutí dokumentu do režimu editace budeme v určeném intervalu (já jsem si dal dvě minuty) ukládat dokumenty zámků. Do databáze zámků si pak umístíme agenta, který se bude spouštět každých pět minut. Pokud tam nalezne dokumenty needitované déle než tři minuty, smaže je.

Tohle všechno jsem vložil do třídy locker, ve které jsem zveřejnil metody, aby bylo možné ji implementovat do stávajících formulářů. V příloze najdete databáze zámku (lockersdb.nsf) a příklad implementace na formulář aplikační databáze (appdb.nsf). A hurá na zamykání... :)

lockersdb.zip appdb.zip


Autor: David Bulejčík
Datum: 20.11.2003


Sdílet článek Seznam komentářů
 
Od
Téma
 Datum
lubm
Pěkné, pěkné
20.11.2003 10:18
Martin
Davide, ty ....
20.11.2003 12:16
Mamka
To "Martin"
20.11.2003 13:04
strejda
ma to jeden hacek
20.11.2003 13:46
Vít Zachodil
Více aplikačních DB, repliky DB, atd.
20.11.2003 13:46
deda
to: strejda
20.11.2003 13:53
strejda
to deda
20.11.2003 14:09
Martin
To: Vít
20.11.2003 14:42
Vít Zachodil
Kdo to má zamčeno?
20.11.2003 15:56
David Bulejcik
Hmm...
20.11.2003 16:34
Emil Čelustka
Flame
20.11.2003 21:18
František Cimmer
Kritika ...
21.11.2003 11:42
Martin
Šití :-) (ale dloouhé)
21.11.2003 12:33
Martin
To: Franta
21.11.2003 12:35
David Bulejcik
Re: Martin
21.11.2003 15:47
cifra
To: Martin
21.11.2003 15:49
Martin
To David
21.11.2003 16:08
cifra
Bezpečnost
21.11.2003 16:09
cifra
Server task (to: martin)
21.11.2003 16:17
bubux
hehe...
22.11.2003 15:39
Junior
Re:he he..
23.11.2003 18:25
To: Junior
beckend
29.11.2003 21:01
pmtv
zajímavý článek
15.12.2003 19:02
Dmitri
V R6 NotesTimer neni stabilni
26.01.2004 10:55
bubux
ee..
06.02.2004 19:16

Související články:
» 

Kalendár českých a slovenských mien

 (Kalendář, 20.08.2003)

» 

Svátky ve Formula jazyce

 (Programování, 13.08.2003)

» 

Lotus oznámil konec podpory R5

 (Notes/Domino R5, 17.08.2004)

» 

Nejnovější klienti v češtině

 (Notes/Domino R5, 19.05.2004)

» 

Užitečná utilita

 (Notes/Domino R5, 30.09.2003)

»