CzechIdM – jak řeší dočasný výpadek napojeného systému?
Informační systém je křehká záležitost, a jak vám každý administrátor potvrdí, o občasné výpadky není nouze. Systémy napojené na identity management CzechIdM bohužel nejsou výjimkou. Jednou nefunguje napájení, podruhé třeba hlodavci překoušou kabely a potřetí se bez varování zhroutí diskové pole. Tak či tak, z CzechIdM mají do systému proudit data a najednou proudit nemůžou. V CzechIdM pro takové případy existuje řešení. Jaké? O tom si povíme v následujícím článku.
Testovací metoda konektoru
CzechIdM obecně provádí na napojeném systému tři základní akce – „create“, „update“ a „delete“, odpovídající vytvoření uživatelského účtu, jeho aktualizaci a smazání. Pro komunikaci se používá takzvaných konektorů, knihoven v jazyce Java, jejichž prostřednictvím se data do systému odesílají. Konektory obvykle nabízejí metodu test(). Ta ověří, zda je systém dostupný a připravený přijímat data. Pokud není, vyhodí výjimku.
Identity management se dozví, že nemá smysl data do systému odesílat, a tak si zapamatuje, že komunikace skončila neúspěchem, a umíní si, že to v budoucnu zkusí znovu – třeba bude mít příště víc štěstí. Dočasným úložištěm pro neodeslaná data je fronta pro neúspěšné požadavky.
try { connector.test(); sendToResource(request); } catch (Exception e) { if (resource.isRequestRepeating()) { saveRequestIntoQueue(request); } }
Fronta pro neúspěšné požadavky
CzechIdM jako úložiště veškerých dat používá relační databázi, do které přistupuje pomocí technologie Hibernate. V databázi tak skončí i všechny neúspěšné požadavky. Entitou, která z pohledu CzechIdM zapouzdřuje jeden neúspěšný požadavek na napojený systém, je třída ResourceRequest:
@entity public class ResourceRequest extends IdMEntity { ... }
Instance třídy s sebou nesou všechny důležité informace: o jaký požadavek se jednalo, kdy k němu došlo, kterého systému a kterého uživatele se týkal a samozřejmě i konkrétní data, která měla být systému předána. Instance ResourceRequest obsahuje vše potřebné k tomu, aby mohl být požadavek později znovu – a tentokrát úspěšně – zpracován.
Konfigurace systému
Jak má administrátor CzechIdM nastavit konfiguraci systému, aby se neúspěšné požadavky do fronty ukládaly? Stačí provést dva jednoduché kroky:
- V záložce „Systémy“ rozkliknout editační formulář zvoleného systému. Zaškrtnout možnost „Opakovat neúspěšné požadavky“ a nastavit maximální počet neúspěšných opakování:
- V záložce „Naplánované úlohy“ nastavit pravidelné spouštění workflow resouce.request.queue.process
Ano, to je vše. Od tohoto okamžiku se neúspěšné požadavky na zvolený systém budou ukládat do fronty. S každým spuštěním workflow se požadavky projdou a CzechIdM se je znovu pokusí vykonat. Úspěšné požadavky z fronty zmizí, neúspěšné v ní zůstanou.
Administrace fronty
CzechIdM ve svém administrátorském rozhraní umožňuje neúspěšné požadavky snadno řídit: odstraňovat z fronty nebo manuálně aktivovat. Nástroje k administraci fronty jsou k dispozici ve sloupečku „Fronta požadavků“ v tabulce napojených systémů:
Administrátor tak může frontu vyčistit (odstranit z ní všechny požadavky týkající se systému), znovu projít (pokusit se požadavky týkající se systému znovu vykonat) nebo zobrazit její přehled, ve kterém může požadavky spravovat jednotlivě:
Závěr
Ve svém článku jsem Vás seznámil s užitečnou vlastností, kterou CzechIdM nově nabízí. Pokud Vás téma zaujalo a rádi byste se mě na něco zeptali, napište mi na vojtech.matocha@bcvsolutions.eu. Každému rád odpovím!