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:

  1. 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í:
  2. 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!