Revision 59 as of 2010-11-18 19:09:33

Clear message

Protokol je určen pro komunikaci mezi Tahiti a serverem DAMIS pro distribuci spisů k identifikaci a jejich následné předání na archivaci. Komunikace probíhá pomocí HTTP protokolu (RFC1945, RFC2616), všechny dotazy jsou z klienta na server přenášeny metodou POST.

Termín

Vysvětlení

DocumentSet

Sada společně naskenovaných dokumentů

Změny

2010-10-26

atribut extendedCheck u BatchInsertRequest a StartSendingRequest

2009-12-01

Nová metoda Delete

2007-12-11

Nové metody: Zahájení přenosu dávky, Přenos bloku dat dávky, Zjištění stavu přenosu

2007-11-13

Přibyla metoda AllocAttributes

2007-08-02

Seznam spisů ve stavu UNLOCKED pro konkrétního uživatele

2007-02-23

Kontrola dávky před vložením do Damisu

2006-05-15

Možnost odložení spisu pro pozdější zpracování

2005-11-23

Definice metody pro vložení dávky

2005-10-11

Rozšíření metody Processed o atribut differential

2005-09-29

Rozšíření chybových stavů LockRequest

2005-09-27

Definice ResumeRequest, přiznak pause u ProcessedRequest

2005-09-12

Definice ReinsertRequest

2005-09-07

Rozšíření UnlockRequest o důvod odemčení

Formát DocumentSet

DocumentSet je zazipovaný soubor, který obsahuje naskenované soubory a soubor docset.xml, který popisuje jejich atributy, příslušnost do dokumentů

Popis formátu docset.xml je dostupný zde: http://frnk.lightcomp.cz/lcdevel/SpecifikaceTahitiDamisUlozeniDat, část Popis spisu

Identifikace DocumentSetu

DocumentSet je identifikován názvem serveru a vlastním identifikátorem DocumentSetu ( id ) Oba identifikátory jsou ascii

Identifikator zámku (lockId) je textový retezec ASCII, ktery vraci server

Typická komunikace mezi Tahiti a Skenovacím serverem:

  1. Tahiti dostane z dispu id DocumentSetu

  2. Tahiti zamkne DocumentSet ( při této akci získá lockId)

  3. Tahiti si vyžádá data DocumentSetu

  4. Tahiti periodicky posílá oznámení, že má DocumentSet stále zamčen

  5. Tahiti odešle zpracovaný DocumentSet

Funkce poskytované serverem:

Data jsou přenášena pomocí http/post s content-type=text/xml

Při odesílání zpracovaného DocumentSet je použit http/post s multipart obsahem

Uzamknutí DocumentSetu

Klient odesílá

Vrátí OK, FAIL

Request
<?xml version="1.0?>
<LockRequest id="" user=""/>

Response 
<?xml version="1.0?>
<LockResponse status="LOCKED|RACE|FAIL|NOTEXISTS" lockId="" error=""/>

LOCKED - DocumentSet je uzamcen, lockId obsahuje identifikator zamku
RACE - DocumentSet ma jiz nekdo jiny uzamcen
FAIL - chyba
NOTEXIST - DocumentSet s danym id neexistuje

lockId - obsahuje přidělený kód zámku ( status == LOCKED)
error - nepovinny atribut, obsahuje blizsi popis chyby (pravdepodobne v anglictine)  

Oznámení o zpracování spisu

Zde se odesílá multipart zpráva složená ze dvou částí

  1. xml s níže popsaným příkazem, název "command"
  2. zazipovaný DocumentSet, název "batch1.zip"

Odešle

Request
<?xml version="1.0?>
<ProcessedRequest id="" lockId="" user="" pause="0|1" differential="0|1"/>

Response
<?xml version="1.0?>
<ProcessedResponse status="OK|FAIL"/>

OK - DocumentSet byl oznacen jako zpracovany
FAIL - DocumentSet se nepodarilo oznacit jako zpracovany

Atribut

Povinnost

Význam

id

ano

Identifikátor spisu

lockId

ano

zámek spisu

user

ano

uživatel pracující se spisem

pause

ne

Může nabývat hodnot 0|1. V případě 1 je dokument pozdržen (není archivován) do doby než přijde požadavek ResumeRequest

differential

ne

0(default)-DocumentSet se ulozi do Damisu, 1-provede se merge DocumentSetu s originaální verzí. Pokud je differential="1" je nutné, aby soubor docset.xml byl v zipovém archivu na prvním místě.

Uvolnění spisu pro archivaci

Pokud byl spis uložen s atributem pause=1 je nutno ho samostatným příkazem uvolnit pro další zpracování. Požadavek je označen jako ResumeRequest

Request
<?xml version="1.0?>
<ResumeRequest id="" user=""/>

Response
<?xml version="1.0?>
<ResumeRequestResponse status="OK|FAIL"/>

OK - DocumentSet byl oznacen jako znovuvlozeny
FAIL - DocumentSet se nepodarilo oznacit jako znovuvložený

Oznámení o znovuvložení spisu do Damisu

Zde se odesílá multipart zpráva složená ze dvou částí

  1. xml s níže popsaným příkazem, název "command"
  2. zazipovaný DocumentSet, název "batch1.zip"

Odešle

Request
<?xml version="1.0?>
<ReinsertRequest id="" lockId="" user=""/>

Response
<?xml version="1.0?>
<ReinsertResponse status="OK|FAIL"/>

OK - DocumentSet byl oznacen jako znovuvlozeny
FAIL - DocumentSet se nepodarilo oznacit jako znovuvložený

Poznámka: Slouží pro znovuvložení opravených spisů po reklamaci

Oznámení o odmítnutí spisu

Odešle

Hodnota

Popis

BADCONTENT

Vrácení spisu na reklamaci, nečitelné, poškozené apod.

UNABLETOPROCEED

Předání jiné osobě, není schopen identifikovat.

POSTPONED

Odložení spisu pro pozdější zpracování.

Request
<?xml version="1.0?>
<UnlockRequest id="" lockId="" user="" reason=""/>

Response
<?xml version="1.0?>
<UnlockResponse status="OK|FAIL"/>

OK - DocumentSet byl odemknut
FAIL - DocumentSet se nepodarilo odemknout

Vyžádání DocumentSetu

Odešle

Vrátí soubor se zazipovaným DocumentSetem

Request
<?xml?>
<DocumentSetRequest id="" lockId="" user=""/>

Response
zazipovany soubor (batch.zip) s DocumentSetem

Oznámení, že vyžádaný DocumentSet je stále používán

Odešle

Vrátí seznam DocumentSetu, pro ktere to opravdu plati (vrati podmnozinu toho co jsem odeslal)

Request - poslu seznam DocumentSetu, ktere mam zamknute
<?xml version="1.0?>
<NotifyRequest user="">
 <LockedDocumentSet id="" lockId=""/>
 <LockedDocumentSet id="" lockId=""/>
<NotifyRequest/>


Response - vrati seznam DocumentSetu, pro ktere to stale plati 
<?xml version="1.0?>
<NotifyResponse>
 <LockedDocumentSet id="" lockId=""/>
 <LockedDocumentSet id="" lockId=""/>
</NotifyResponse>

Příklad komunikace

Příklad HTTP komunikace (žádost):

POST /damis/DamisServlet HTTP/1.1
Host: 10.2.0.6:8080
Keep-Alive: 
Connection: TE, Keep-Alive
TE: trailers
Content-Type: text/xml
Content-Length: 57

<?xml version="1.0"?><LockRequest id="00000009" user=""/>

Příklad HTTP komunikace (odpověď):

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/xml
Transfer-Encoding: chunked
Date: Mon, 05 Sep 2005 10:25:28 GMT

<?xml version="1.0" encoding="UTF-8"?><LockResponse lockId="10625d1a505-78a145df-be5e9dd8" status="LOCKED"/>

Vložení dávky do Damisu

Příkaz vložení dávky do Damisu

Request

Odesílá se multipart zpráva složená ze dvou částí

  1. xml s níže popsaným příkazem, název "command"
  2. zazipovaná dávka, název "batch.zip", dávka je ve formátu pro vstup do Damisu bez příznakového souboru complete

Formát souboru command

<?xml version="1.0"?>
<BatchInsertRequest id="" user="franta" domain="" extendedCheck="1"/>

Atribut

Význam

id

identifikátor dávky, pokud je prázdný přidělí se na serveru náhodný

user

jméno uživatele, který vkládá dávku

domain

název vstupní domény Damisu, do které bude dávka vložena

extendedCheck

1 - provádí se rozšířená kontrola na vstupu, atribut je nepovinný

Response

Jako odpověď přijde xml soubor

<?xml version="1.0"?>
<BatchInsertResponse id="" status="OK|FAIL|COLLISION" error="">
  <BatchIdCollision/>
  <IdCollision id=""/>
  <Rule name=""/>
  <MimeType type=""/>
</BatchInsertResponse>

Atribut

Význam

id

identifikátor dávky, pokud byl odeslán prázdný vrací přidělenou hodnotu

status

OK - dávka byla vložena na vstup Damisu, FAIL - dávku se nepodařilo vložit na vstup Damisu (obecná chyba), COLLISION - došlo ke kolizi identifikátorů

error

Pokud je status=FAIL může být v atributu error popis chyby. Popis se posílá pouze u systémových chyb. Logické chyby jsou indikovány pomocí dále popsaných příznaků

<BatchIdCollision> příznak kolize čísla dávky, vyskytne se v odpovědi maximálně jednou a pouze když je nastaven status=COLLISION

<IdCollision id=""/> příznak kolize čísla spisu, jeden výskyt pro každé kolidující id, pouze když je nastaven status=COLLISION

<Rule> příznak odmítnutí dávky vstupním pravidlem. Platné pouze pokud je nastaven status=FAIL. V atributu name je název pravidla.

<MimeType> odmítnutí dávky kvůli nepodporovanému mimetypu. Platné pouze pokud je nastaven status=FAIL. V atributu je název mimetypu.

Kontrola dávky před vložením do Damisu

Příkaz pro kontrolu dávky před vložením do Damisu

Request

Odesílá se multipart zpráva složená ze dvou částí

  1. xml s níže popsaným příkazem, název "command"
  2. soubor, který obsahuje všechny soubory docset.xml z dávky. Jedná se o soubor ve formátu shodném jako při odesílání celé dávky jen bez datových souborů

Formát souboru command

<?xml version="1.0"?>
<BatchCheckRequest user="franta" domain=""/>

Atribut

Význam

id

nepovinný identifikátor dávky, pokud má být číslo dávky kontrolováno na kolizi, může být prázdný

user

jméno uživatele, který vkládá dávku

domain

název vstupní domény Damisu, do které bude dávka vložena

Response

Jako odpověď přijde xml soubor

<?xml version="1.0"?>
<BatchCheckResponse status="OK|FAIL|STRUCTURAL_FAIL">
  <BatchIdCollision/>
  <IdCollision id=""/>
  <IdRule id="" name=""/>
</BatchCheckResponse>

<BatchIdCollision> příznak kolize čísla dávky, vyskytne se v odpovědi maximálně jednou a pouze když je nastaven status=STRUCTURAL_FAIL

<IdCollision id=""/> příznak kolize čísla spisu, jeden výskyt pro každé kolidující id, pouze když je nastaven status=STRUCTURAL_FAIL

<IDRule id="" name=""> příznak neplatnosti spisu na základě rozhodnutí vstupních pravidel, jeden výskyt pro každý spis, který neprojde pravidly, pouze když je nastaven status=STRUCTURAL_FAIL

Získání seznamu spisů v UNLOCKED stavu pro konkrétního uživatele

Příkaz pro získání id všech spisů v UNLOCKED stavu konkrétního uživatele

Request

<?xml version="1.0"?>
<DocumentSetsForUserRequest user=""/>

Atribut

Význam

user

jméno uživatele, jehož spisy chceme získat

Response

Jako odpověď přijde seznam id spisů

<?xml version="1.0"?>
<DocumentSetsForUserResponse>
  <DocumentSet id=""/>
  <DocumentSet id=""/>
</DocumentSetsForUserResponse>

Atribut

Význam

id

id spisu, který patří danému uživateli

Alokace hodnot identifikátorů

Příkaz pro získání hodnot identifikátorů z číselné řady

Request

<?xml version="1.0"?>
<AllocAttributesRequest user="" domain="" numAttributes=""/>

Atribut

Význam

user

jméno uživatele, který atributy alokuje

domain

název domény, pro kterou se hodnoty alokují

numAttributes

po4et hodnot, které se mají alokovat

Response

Jako odpověď přijde seznam hodnot atributů

<?xml version="1.0"?>
<AllocAttributesResponse status="OK|FAIL">
  <Attribute value=""/>
  <Attribute value=""/>
</AllocAttributesResponse>

Atribut

Význam

status

výsledek operace OK-hodnoty byly alokovány, FAIL-chyba

value

hodnota atributu

Zahájení přenosu dávky

Příkaz pro zahájení přenosu dávky

Request

<?xml version="1.0"?>
<StartSendingRequest user="" domain="" size="" id="" extendedCheck="1"/>

Atribut

Význam

user

Uživatel

domain

Doména, do které dávku posílá

size

Velikost dávky v bajtech

id

Id dávky, pokud prázdné je id přiděleno

extendedCheck

1 - provádí se rozšířená kontrola na vstupu, atribut je nepovinný

Response

<?xml version="1.0"?>
<StartSendingResponse status="OK|FAIL" handle=""/>

Atribut

Význam

status

Výsledek operace OK-přenos může začít, FAIL-něco selhalo

handle

Handle přenášené dávky, platí pouze pokud byl status=OK

Přenos bloku dat dávky

Příkaz pro přenos bloku dat dávky. Odesílá se multipart zpráva složená ze dvou částí

  1. xml s níže popsaným příkazem, název "command"
  2. blok dat zazipované dávky, název "batch.part"

Request

<?xml version="1.0"?>
<SendDataBlockRequest handle="" from="" size=""/>

Atribut

Význam

handle

handle přenášené dávky

from

počáteční pozice přenášeného souboru

size

velikost bloku

Response

<?xml version="1.0"?>
<SendDataBlockResponse status="COLLISION|COMPLETE|PARTIAL|FAIL|BADPOSITION" id="">
  <BatchIdCollision/>
  <IdCollision id=""/>
</SendDataBlockResponse>

Atribut

Význam

status

Výsledek operace COMPLETE-dávka byla kompletně přenesena, PARTIAL-blok byl úspěšně přenesen, dávka byla částečně přenesena, FAIL - chyba, dale uz neni mozne pokracovat, COLLISION - dávka byla celá přijata, ale při vkládání došlo ke kolizi|BADPOSITION-snaha o ulozeni bloku na spatnou pozici

id

id dávky, platné pouze při status=COMPLETE

Zjištění stavu přenosu (velikost již odeslaných dat)

Request

<?xml version="1.0"?>
<SendStatusRequest handle=""/>

Atribut

Význam

handle

handle přenášené dávky

Response

<?xml version="1.0"?>
<SendStatusResponse status="COMPLETE|PARTIAL|UNKNOWN|COLLISION" from=""/>

Atribut

Význam

status

Výsledek operace COMPLETE-dávka byla kompletně přenesena, PARTIAL-dávka byla částečně přenesena, UNKNOWN - neznámý handle, COLLISION - collision of id

from

odkud je možné pokračovat v přenosu, pokud status=PARTIAL

Vymazání dokumentu

Request

<?xml version="1.0"?>
<DeleteRequest id="" lockId="" user=""/>

Atribut

Význam

id

identifikátor DocSetu

lockId

zámek

user

uživatel, který vyvolal akci

Response

<?xml version="1.0"?>
<DeleteResponse status="OK|FAIL"/>

Atribut

Význam

status

Výsledek operace OK- spis byl smazán, FAIL - spis se nepodařilo smazat