Požadavek admin-unlock
Účel a dopady
Administrativně vynutí odemčení obecného zámku (viz general-lock) bez ohledu na to, kdo zámek vytvořil. Používá stejnou uloženou proceduru pro odemčení jako běžné general-lock, ale vlastníka zámku jí předává jako NULL, takže kontrola vlastnictví zámku na straně databáze se obchází.
Dostupnost, kontext, oprávnění apod.
- Dostupné jen uživateli s
r_adminnebor_unlock. - Kontrola oprávnění proběhne až poté, co server rozpozná platné číselné
id– u neplatného/chybějícíhoidvrací chybu "Nerozpoznane id." ještě před jakoukoli kontrolou oprávnění. - Podléhá standardnímu transakčnímu zpracování obálky
<request>(transactional/přeskočení při odvolané transakci) – viz obálka požadavku.
XML požadavek (syntax + popis)
<request>
<admin-unlock
id="{number}"
doc-type="{string}"
timeout="{number}"
/>
</request>
Parametry a pravidla (atributy, potomci)
id- Číslo zámku - Identifikátor zamykané položky. Nejde-li hodnotu převést na celé číslo (včetně případu, kdy atribut chybí), požadavek vždy skončí chybou "Nerozpoznane id.". (typ:number; nepovinný podle syntaxe, ale bez platné hodnoty požadavek vždy selže)doc-type- Typový název - Volitelný řetězcový identifikátor zámku (např. název dokumentového typu); přenáší se beze změny do odpovědi. (typ:string; nepovinný)timeout- Délka trvání - Atribut se čte, ale proadmin-unlocknemá žádný efekt – odemykací procedura žádný časový limit nepřijímá,timeoutovlivňuje jen zamykací větev sdílené funkce, kterouadmin-unlocknikdy nevyvolá. (typ:number; nepovinný; fakticky bez vlivu na zpracování)
Oprava oproti starší dokumentaci: požadavek nemá a nikdy neměl atribut lock – narozdíl od general-lock provádí admin-unlock vždy jen odemčení (nikdy zamčení ani test stavu); typ operace je pevně daný a nelze jej měnit atributem.
Příklady požadavku
(Zatím bez ověřeného příkladu.)
Zpracování a vedlejší účinky
- Je-li
idneplatné nebo chybí, vrací se okamžitě chyba bez zápisu do databáze a bez kontroly oprávnění. - Je-li
idplatné, ale volající nemár_adminanir_unlock, vrací se chyba oprávnění. V této konkrétní větvi odpověď neobsahuje uzavírací uvozovku a mezeru předlock="false", takže atributdoc-typev odpovědi zůstane neuzavřený a splyne s následujícím textem – výsledkem je řetězec tvarudoc-type="…lock="false" status="fail" descr="Nemate dostatecna opravneni"/>, což není platné XML. Jde o anomálii odpovědi serveru, ne o zamýšlený formát; nastává jen při kombinaci platnéhoida chybějícího oprávnění. - Je-li oprávnění v pořádku, provede se odemčení voláním uložené procedury pro unlock, přičemž vlastník zámku se předává jako
NULL– tedy nezávisle na tom, kdo zámek reálně vytvořil. - Selže-li připojení k databázi, vzniká obecná chyba se vnořeným diagnostickým
error(viz „Chyby a reakce“).
XML odpověď (syntax + popis)
<response>
<admin-unlock
id="{number}"
doc-type="{string}"
lock="false"
status="ok|fail"
descr="{string}"
/>
</response>
Úspěšná/neúspěšná odpověď o výsledku odemčení má vždy lock="false", protože admin-unlock provádí jen odemykací operaci. Chybové odpovědi mimo tuto větev (neplatné id, chyba připojení k databázi) mají jinou podobu – viz „Chyby a reakce“.
Příklady odpovědi
(Zatím bez ověřeného příkladu.)
Chyby a reakce
<admin-unlock type="error" descr="Nerozpoznane id."/>– atributidchybí nebo není číslo.<admin-unlock type="error" descr="Pri provadeni doslo k chybe">… vnořené uzly error …</admin-unlock>– selhalo připojení k databázi.- Platné
id, ale chybějící oprávnění: viz popis malformovaného výstupu výše – obsahově jde olock="false" status="fail" descr="Nemate dostatecna opravneni". id="…" doc-type="…" lock="false" status="fail" descr="Zaznam zamcen jinym uzivatelem"/>– odemykací procedura vrátila výsledek3. Otevřený bod: podmínky, za nichž databázová procedura tuto větev proadmin-unlockskutečně vrací, nejsou součástí tohoto popisu.id="…" doc-type="…" descr="Zaznam neexistuje" lock="false" status="ok"/>– odemykací procedura vrátila výsledek2(záznam/zámek neexistuje); odpověď je přestostatus="ok".id="…" doc-type="…" lock="false" status="ok"/>– úspěšné odemčení, výsledek1.id="…" doc-type="…" lock="false" status="fail" descr="Doslo k databazove chybe"/>– jiný výsledek databázové procedury.- Výraz pro identifikaci chyb v odpovědi serveru:
admin-unlock[@type='error']neboadmin-unlock[@status='fail'].
Související požadavky
- general-lock – běžné (neadministrativní) zamykání/odemykání/test stavu zámku; sdílí stejnou implementační funkci
generalLock.