5.3. Implementační doporučení

Při implementaci komunikačního rozhraní je vhodné zvážit aspekty popsané v této kapitole. Jedná se o několik doporučení k možnému způsobu implementace.

5.3.1. Dostupné balíčky a zjišťování změn

V REST rozhraní je pro zjištění dostupných balíčků v digitálním archivu funkce GET /updates. Funkce se volá opakovaně s parametrem nextQuery pro zjištění dalších změn. Hodnota parametru je vrácena vždy z předchozího volání uvedené funkce. Jedná se o řetězec a jeho vnitřní struktura a obsah jsou plně na implementujícím digitálním archivu.

Požadavky na parametr nextQuery:

  • hodnota platná bez časového omezení

  • není určen pro interpretaci na klientovi

  • musí zaručovat poskytnutí všech změnových informací z DA

Funkce GET /updates nepodporuje klasické stránkování. Informace o pozici, pokud je potřebná, musí být zakódována uvnitř parametru nextQuery, nebo ji pro daný iterátor musí uchovávat DA.

Dále jsou uvedeny příklady možných implementačních přístupů:

Digitální archiv s transakční historií

Předpoklad: V digitálním archivu je dostupná tabulka s transakční historií, tj. při každém zápisu či změně do digitálního archivu vzniká záznam o transakci, který má jednoznačný identifikátor.

Obsah nextQuery je potom možné sestavit jako kombinaci hodnot from:<transakce od>,to:<transakce do>,pos:<pozice>. Na základě hodnot transakce od a transakce do je možné sestavit uspořádaný seznam změněných balíčků. Uspořádanost seznamu změn je významná, aby bylo možné vracet informace o změnách postupně a nedocházelo k jejich přeskupování v rámci pořadí. Hodnota pozice umožňuje určit, kolik z daného rozsahu změn již bylo předáno, resp. která poslední změna byla předána.

Digitální archiv s notifikacemi o změnách

Předpoklad: V digitálním archivu je při změně balíčku vyvolána událost, na níž je možné reagovat v aplikační komponentě. Způsob předávání těchto notifikací není významný.

Informace o přijatých notifikacích je možné zapisovat do databáze a očíslovat je vzestupnou řadou čísel. Obsah nextQuery potom tvoří vždy uvedené pořadové číslo poslední předané změny.

Digitální archiv s iterátory

Předpoklad: Pro každého připojeného klienta bude vytvářen samostatný iterátor. Jeho hodnota bude svázána s účtem pro synchronizaci.

Hodnota nextQuery může mít charakter iterátoru a jeho hodnota bude nastavována vždy samostatně pro každého připojeného klienta. Způsob implementace iterátoru závisí na použité technologii při implementaci. Iterátor není platný pro více uživatelů, ale bývá samostatně vytvářen pro jednotlivé připojované systémy a jejich účty.

Implementačně se může jednat například o samostatnou tabulku v databázi, do níž jsou zaznamenávány jednotlivé záznamy o změnách. Tyto záznamy čekají na předání danému klientovi. Při příštím vyžádání dalších změn je možné odstranit předchozí již předané záznamy.

5.3.2. Změna rozsahu oprávnění

Na základě příslušného uživatelského oprávnění má uživatel dostupnou sadu balíčků prostřednictvím API uložených v digitálním archivu. V případě změny rozsahu oprávnění by měla existovat možnost, jak získat seznam nově zpřístupněných balíčků.

Příkladem takové situace může být umožnění přístupu k třídě balíčků, které v DA existují, ale doposud k nim uživatel neměl oprávnění. Podstatné je, že při zpřístupnění balíčků na základě změny oprávnění nedochází k jejich změnám a informace o nich nemusí být dostupná formou změn poskytovaných funkcí GET /updates.

Změna oprávnění se také může týkat dostupné podoby balíčků.

Přidání oprávnění k balíčkům

Přidání oprávnění k sadě balíčků je možné detekovat a reagovat na něj formou zneplatnění, resp. resetování parametru nextQuery používaného ve funkcí GET /updates.

V případě digitálního archivu s transakční historií je možné do parametru nextQuery přidat otisk oprávnění. Při žádosti o změny a detekci změny oprávnění je možné poskytnout úplný seznam balíčků od začátku, tj. shodně jako při nezadání parametru nextQuery.

Způsob řešení této situace je nutné zvážit v každé jednotlivé implementaci samostatně.

Zánik oprávnění k balíčkům

Funkce rozhraní umožňují předávat informaci o zániku balíčku jako takového. Pokud však dojde k situaci, kdy balíček již byl předán z digitálního archivu a druhá strana by s ním neměla dále nakládat, je nutné ji o tomto informovat. Klientské implementace MUSÍ umožnit odstranění takovýchto dříve zpřístupněných balíčků. Tento scénář není podporován v rámci API funkcí.

V případě zániku oprávnění ke skupině balíčků je nutné postupovat administrativní cestou.