Existuje firma, ktorá sa volá Atlassian a existuje produkt tejto firmy, ktorý sa volá Jira. Je to Jira issue tracking system (teda systém na zaznamenávanie a spravovanie rôznych požiadaviek), ktorý je v našich zemepisných šírkach pomerne rozšírený. Ale nielen u nás sa hojne používa a to (ako aj v mnohých iných prípadoch) viedlo k tomu, že to nie je len softvér so zopár nastaveniami, ale je to tiež platforma, ktorá má množstvo bodov, kde je možné ju rozširovať. V tomto článku sa pozrieme na základy vývoja pre Jiru.
Jira je webovský informačný systém vytvorený pomocou Javy. Javisti to preto budú mať o čosi jednoduchšie. Na to. aby ste si mohli začať s jej programovaním, potrebujete tieto tri veci:
1. mať aspoň hrubú predstavu o jej architektúre
2. poznať Jira SDK
3. vedieť o možnostiach rozšírenia Jiry
Jira je tu už s nami nejakých 14 rokov a za tú dobu prešla pomerne značným vývojom. V dnešnej dobe vlastne „Jira“ znamená Jira platformu (ktorá poskytuje základné služby pre aplikácie na nej postavené ako je práca s issue, workflow, search alebo email) a tri aplikácie, ktoré sú na platforme postavené:
- Jira core – klasický issue tracker pre softvérové tímy
- Jira service desk – obsluha požiadaviek na podporu pre zákazníka
- Jira software – ku core časti pribaľuje aj plánovanie (napr. aj agilné)
Jira je v podstate JavaEE webová aplikácia, čo znamená, že vo výsledku je to war-ko, ktoré je možné nasadiť do JavaEE kontajnera. Na web rozhranie používa Apache Velocity šablónový systém. Okrem samotného výstupného HTML je samozrejme nutné riešiť aj množstvo iných oblastí, ktoré majú v Jire na starosti rôzne komponenty:
- Seraph – security framework
- Webworks – web framework (Jira používa webwork 1 nie 2)
- Lucene – pre vyhľadávanie
- Embedded crowd – správa identít a Single Sign-On nástroj
- Property Set – modul na uchovávanie dát vo forme kľúč-hodnota
- OfBiz Entity Engine – nástroj na modelovanie doménových informácií
- Active Objects – object-relation mapping nástroj na prácu s databázou (určený pre pluginy)
- OSWorkflow – framework na vytváranie a spúšťanie procesov (workflowov)
- Quartz – plánovacia služba (v nastavenom čase, alebo v pravidelných intervaloch vie spúšťať definované úlohy
- Pico Container – DI framework
A samozrejme okrem toho Jira obsahuje množstvo svojho kódu, ktorý toto všetko používa a v podstate dáva dokopy.
Prehľad o základných komponentoch by sme mali. Ako druhá vec v zozname je Jira SDK. Je to balík nástrojov, ktorý vám má uľahčiť vývoj. Po nainštalovaní je ním možné napríklad:
1. vytvoriť prázdny projekt pluginu
2. do existujúceho pluginu pridávať moduly
3. spustiť plugin v Jira kontajneri
4. generovať súbory pre písanie automatických testov (jednotkových/integračných)
Hlavne bod číslo 3, teda spustiť plugin v Jira kontajneri, je pomerne zaujímavý. Jira SDK za vás v podstate pripraví celú Jiru vrátane downloadu a spustenia Tomcatu a nasadenia spustenia Jiry. Je to naozaj one-click (one command solution).
A ako poslednú základnú vec je potrebné vedieť zoznam toho, čo vám vlastne Jira dovolí v nej zmeniť. V tomto zozname sa bavíme hlavne o programátorských možnostiach pluginu, teda nie o konfigurácii v Jiry, kde si viete napríklad konfigurovať workflowy alebo pridávať nové polia do issue. Naproti tomu, toto sú veci, na ktoré budete potrebovať vyvinúť plugin:
- vlastný – nový – typ poľa pre issue (a k tomu naviazané ďalšie údaje ako validácia, changelog hodnota, pomocná hodnota atď.)
- nová podmienka/validácia/post funkcia do workflowu
- programovo posunúť issue vo workflove
- nastavovať práva na issue na základe statusu
- vytvoriť nový typ reportu a jeho export do Excelu
- vytvorenie gadgetu na dashboard
- vytvorenie JQL funkcie
- indexovať a de-indexovať issue
- programovo spravovať filtre
- programovo vytvoriť/aktualizovať/zmazať issue alebo subtask
- programovo pracovať s changelogom alebo worklogom
- dynamické vytváranie nových operácií s issue
- link renderer pre nový druh externých liniek
- nový tab na issue obrazovke
Toto je len hrubý zoznam možností. Atlassian urobil veľa pre to, aby sa Jira dala podľa možnosti čo najviac rozširovať a zároveň, aby to rozširovanie bolo čo najviac bezbolestné. Preto je vytvorené šikovné SDK, ktoré zjednoduší celý proces, a preto má Jira množstvo bodov rozšírenia, na ktoré viete napojiť svoj kód a robiť čo treba. Jira sa tak stáva pomerne plastický nástroj, ktorý je schopný modelovať rôzne scenáre, ktoré majú základ v issue trackingu.