Vylepšení IdMUploaderu pro CzechIdM

IdMUploader je v CzechIdM velmi často používaný nástroj, který slouží vývojářům k uploadu workflow, pravidel a e-mailových šablon. Při používání vyvstalo několik úkolů ke zlepšení efektivní práce:

  1. Zajistit přenositelnost z MySQL na jakýkoliv jiný databázový engine, například Oracle a PostgreSQL.
  2. Umožnit refresh workflow přímo z IdMUploaderu. Tuto akci bylo dříve nutno provádět ručně, až po uploadu workflow, přes webové rozhraní.
  3. Poslední přidanou věcí je spouštění přes bash skript se zadanými argumenty.

V následujícím článku popíši jednotlivé změny a načrtnu, jak jsem dané řešení implementoval.

Problém při změně databáze

V IdMUploaderu byly přímo napsány jednotlivé dotazy do dané databáze. Bohužel se ale jednotlivé typy mírně liší v syntaxi a nejenom v ní. Tím pádem při použití jiné než MySQL databáze, pro kterou byly dotazy vytvořeny, vznikaly problémy. Bylo tedy potřeba zobecnit kód a jednotlivé dotazy provádět specificky. Vytvořil jsem tudíž třídu DatabaseHandler, která vrací potřebné dotazy. Drží si v sobě objekt Operations, který se vytváří spolu s vytvořením DatabaseHandler. Operations je interface, který určuje jaké všechny metody musí každá třída obsluhující jeden typ databáze implementovat. DatabaseHandler tedy pouze při vytváření určí typ databáze a poté, když požaduje jednotlivé dotazy, jsou mu poskytovány ve správném tvaru. Interface Operations tedy implementují třídy jako MySQLOperations, OracleOperations, atd.. Ty mají dotazy a další potřebné atributy specifikované pro daný typ. Nyní tedy stačí při přechodu na novou databázi specifikovat pouze její typ a případně pokud není již vytvořena, doimplementovat jednu třídu se specifickými dotazy.

Refresh workflow

Refresh workflow se standardně provádí přes webové rozhraní. Je potřeba se proklikat až k tlačítku Refresh Workflow a až po jeho stisknutí se workflow refreshují. Toto je při uploadu workflow obtěžující okolnost, a proto bylo potřeba tuto akci nějakým způsobem přiřadit k běhu IdMUploaderu. Pro refresh workflow a pravidel se spouští workflow.cleancache, které smaže cache jak u workflow, tak i u pravidel. Toto workflow ale můžeme zavolat i pomocí webové služby. Doplnil jsem tedy kód, kdy je přes webovou službu přímo spuštěno toto workflow. Tím se provede refresh workflow a pravidel ihned po jejich nahrání pomocí IdMUploaderu.

Refresh workflow - dříveRefresh workflow - nyní

Spouštení z bash skriptu

Poslední úpravou, která byla provedena, je spouštění přes bash skript. Byl vytvořen bash skript, ve kterém jsou zadány parametry nutné ke spuštění IdMUploaderu. Nyní tedy není potřeba přepisovat konfigurační soubor, ale je třeba přepsat dané argumenty ve skriptu. Dále je také potřeba vždy po upravení kódu exportovat projekt do jar souboru, který spouští bash skript. Díky této úpravě je ale možné nahrání a refresh workflow přes pouhé spuštění tohoto skriptu.

Závěr

Toto tedy jsou nové změny provedené v IdMUploaderu. Určitě usnadní práci s ním a tím pádem i čas. Pokud byste měli dotazy ohledně jakékoliv části, např. ohledně rozdílů databází, neváhejte mě kontaktovat na info@bcvsolutions.eu.