Požadavek get-history
Účel a dopady
Čte informace z evidence historie fxd dokumentů: buď seznam všech historických změn dané instance dokumentu (list), nebo kompletní obsah jedné konkrétní historické verze (document). Požadavek nic nemění, jen čte.
Dostupnost, kontext, oprávnění apod.
- Dostupné každému přihlášenému uživateli. Viditelnost je řízena samostatně pro každou položku:
- Seznam historie (
list) vyžaduje, aby role volajícího (případně přepsanáopt-roles) měla u daného dokumentového typu oprávnění k historii; bez něj server tiše vrátí prázdný seznam, ne chybu. - Obě položky (
listidocument) navíc podléhají administrativnímu filtru (vazba na akční registr či uzel dokumentu); zamítnutí je opět tiché.
- Seznam historie (
- Na rozdíl od
get-document/get-pseudo-documentse toto tiché zamítnutí nepromítne ani dolist/documentvůbec neúčastí na rozdíl transakčního přeskočení obálky – požadavek se provede vždy, i kdyby v témže požadavku dříve selhal jiný transakční požadavek.
XML požadavek (syntax + popis)
<request>
<get-history
opt-roles="{string}"
>
<list ... /> *
<document ... /> *
</get-history>
</request>
Parametry a pravidla (atributy, potomci)
opt-roles- Volitelná role - Výchozí volitelná role pro všechny vnořenélist/document, které ji sami nepřepíšou. (typ:string; nepovinný)
Potomci list a document se zpracují v pořadí, v jakém jsou uvedeny, každý vygeneruje vlastní odpovídající element přímo v <response> (viz „XML odpověď“); potomek s jiným jménem se přeskočí beze stopy.
Uzel list
<list
type="{string}"
dkey="{number}"
opt-roles="{string}"
/>
type- typ dokumentu - Typový název dokumentu definovaného v XDS. (typ:string; nepovinný – chybí-li nebo je neznámý, vede to k chybové odpovědi této položky)dkey- PDK dokumentu - Primární klíč instance typu dokumentu dle databáze. (typ:number; nepovinný – nelze-li převést na číslo, vede to k chybové odpovědi této položky)opt-roles- Volitelná role - Přepíše pro tentolistroli zděděnou zget-history/přihlášení. (typ:string; nepovinný)
Uzel nemá potomky.
Uzel document
<document
type="{string}"
dkey="{number}"
id="{number}"
opt-roles="{string}"
/>
type- typ dokumentu - Typový název dokumentu definovaného v XDS. (typ:string; nepovinný – chybí-li nebo je neznámý, výsledkem je prázdný<history-doc></history-doc>bez chyby)dkey- PDK dokumentu - Primární klíč instance typu dokumentu dle databáze. (typ:number; nepovinný – nelze-li převést na číslo, výsledkem je prázdný<history-doc></history-doc>bez chyby)id- Identifikátor historické verze - Klíč konkrétního záznamu evidence historie (ne číslo uživatele); odpovídá atributuidz odpovědi nalist. (typ:number; nepovinný – nelze-li převést na číslo, výsledkem je prázdný<history-doc></history-doc>bez chyby)opt-roles- Volitelná role - Přepíše pro tentodocumentroli zděděnou zget-history/přihlášení. (typ:string; nepovinný)
Uzel nemá potomky.
Příklady požadavku
(Zatím bez ověřeného příkladu; viz příklady historie dokumentů.)
Zpracování a vedlejší účinky
- Pro
list: server ověří historické privilegium role a projde administrativní filtr; při úspěchu vrátí kompletní seznam historických záznamů dané instance, včetně těch bez privilegia/filtru tiše vrátí prázdný seznam. - Pro
document: načte se konkrétní historická verze podle parametruid(historickéhistid), ne aktuální stav; platí stejný tichý vzor vynechání při chybějícím pohledu role nebo zamítnutí administrativním filtrem jako u get-document. - Neznámý typ/dkey (u
list) nebo neznámý typ/dkey/id (udocument) nezpůsobí chybu celého požadavku – jen se pro danou položku vygeneruje chybový, resp. prázdný element (viz „XML odpověď“ a „Chyby a reakce“).
XML odpověď (syntax + popis)
Odpověď je posloupnost elementů history-list (jeden za každý list z požadavku) a history-doc (jeden za každý document z požadavku), v pořadí odpovídajícím pořadí potomků v požadavku, přímo jako potomci <response> – bez společné obálky.
<response>
<history-list
type="error"
detail="{string}"
>
<{fxd-doc-type}
dkey="{number}"
id="{number}"
date="{string}"
time="{string}"
author="{number}"
impersonate="{number}"
version="{string}"
hist-label="{string}"
hist-date="{string}"
hist-time="{string}"
hist-optionA="{bool}"
hist-optionB="{bool}"
hist-key="{number}"
hist-action-register="{number}"
hist-action-node="{number}"
/> *
</history-list> *
<history-doc>
<{fxd-doc-type} dkey="{key}">...</{fxd-doc-type}> ?
<error ... /> *
</history-doc> *
</response>
Parametry a pravidla (atributy, potomci) – odpověď
Uzel history-list
- Úspěch (typ/dkey platné, privilegium i filtr prošly):
<history-list>bez atribututype, obsahuje 0 a více potomků – jeden element za každou historickou verzi, jehož jméno je název dokumentového typu (fxd-doc-type), ne obecnéhistory-list/item. - Bez privilegia/zamítnuto filtrem:
<history-list></history-list>– prázdné, bez atribututype, tiše (ne chyba). - Neplatný typ/dkey:
<history-list type="error" detail="Neplatny typ dokumentu nebo dkey"/>(self-closing). - Databázová chyba:
<history-list type="error" detail="Pri provadeni doslo k chybe">s možným vnořenýmerrora uzavírající</history-list>.
Atributy jednotlivého historického elementu ({fxd-doc-type}) – všechny kromě prvních pěti jsou přítomny jen, pokud byla odpovídající historická hodnota při uložení vyplněna:
dkey- PDK dokumentu. (typ:number)id- Identifikátor historické verze - Klíč záznamu evidence historie. (typ:number)date/time- Datum a čas historické změny (lokální čas). (typ:string)author- Číslo uživatele, autora změny. (typ:number)impersonate- Číslo uživatele, za kterého byla změna provedena (impersonace) - jen pokud byla uložena. (typ:number; nepovinný)version- Verze dokumentu v době uložení. (typ:string)hist-label,hist-date,hist-time,hist-optionA,hist-optionB,hist-key,hist-action-register,hist-action-node- Volitelné doplňkové údaje uložené k dané historické verzi požadavkem save-document (atributyhist-*na ukládaném dokumentu) - přítomny jen, byly-li při uložení vyplněny. (typy:string/string+string/bool/bool/number/number/number)
Uzel history-doc
- Vždy dvojice otevírací/uzavírací značka, nikdy self-closing a nikdy nenese vlastní atributy (ani
type). - Neplatný typ/dkey/id:
<history-doc></history-doc>– prázdné, tiše (ne chyba). - Databázová chyba při načítání:
<history-doc>s vnořenýmerrora</history-doc>. - Bez pohledu role/zamítnuto filtrem:
<history-doc></history-doc>– prázdné, tiše (stejný vzor jako get-document). - Úspěch:
<history-doc><{fxd-doc-type} dkey="…">…</{fxd-doc-type}></history-doc>– obsah historické verze dokumentu vepsaný přímo jako svůj vlastní kmenový element.
Příklady odpovědi
(Zatím bez ověřeného příkladu; viz příklady historie dokumentů.)
Chyby a reakce
history-list[@type='error']–detail="Neplatny typ dokumentu nebo dkey"(neplatný vstup) nebodetail="Pri provadeni doslo k chybe"(databázová chyba, s možným vnořenýmerror).history-docnemá vlastní chybový atribut; neúspěch se projeví buď tichým prázdným elementem, nebo vnořenými diagnostickými uzlyerror.- Výraz pro identifikaci diagnostické chyby v odpovědi:
history-list[@type='error']ahistory-doc[error].
Související požadavky
- get-document – čtení aktuální (nehistorické) verze dokumentu, sdílí mechanismus čtení s
documentpotomkem tohoto požadavku. - get-pseudo-document – obdobné čtení pro pseudo-dokumenty.
- save-document – uložení dokumentu, zdroj atributů
hist-*zobrazovaných v historii.