
CAMUNDA – BPMN Modeler, Engine a ešte viac
Ak má zákazník potrebu automatizovať a zefektívniť firemné procesy a nemá nasadený rozsiahlejší informačný systém, ktorý by ich zastrešil, je nasadenie BPMN engine optimálnym riešením.
Jednou z výhod použitia BPMN je priamy prechod z analýzy cez návrh priamo k implementácii riešenia. To umožňujú takzvané BPMN enginy. BPMN engine je softvérová komponenta, ktorá vie interpretovať nakreslený BPMN model. Poskytuje nástroje pre zapojenie systémov, ktoré majú v kompetencii riešenie technických úloh procesu, rovnako ako podporu pre zadávanie a spracovanie užívateľských úloh užívateľmi definovaných rolí. Ak má zákazník potrebu automatizovať a zefektívniť firemné procesy a nemá nasadený rozsiahlejší informačný systém, ktorý by ich zastrešil, je nasadenie BPMN engine optimálnym riešením.
Na trhu je k dispozícii viac implementácií BPMN postavených na rôznych technológiách a rôznej kvality. Pozri napríklad porovnanie: https://www.itcentralstation.com/categories/business-process-management.
V minulosti sme používali jBPM, ale v posledných rokoch sme prešli na riešenie Camunda a sme z neho doslova nadšení.
Camunda je balík nástrojov nazývaných Camunda platforma, ktoré pokrývajú aktivity od procesnej analýzy (DESIGN), cez nasadenie modelovaných procesov ako súčasť informačných systémov (AUTOMATE), až po optimalizáciu ich výkonnosti (IMPROVE):

Camunda platforma je dostupná, ako je zvykom, v Community verzii, ktorá je zadarmo, a Enterprise verzii, za ktorú sa platí.
Jednotlivé nástroje som v predchádzajúcom obrázku označil farebne:
- Červené sú len v Enterprise verzii
- Oranžové sú aj v Community verzii, ale s obmedzenou funkcionalitou
- Zelené sú aj v Community verzii plne funkčné
Výborné na tom je, že Community verzia je natoľko široká, funkčná a zdokumentovaná, že sme s ňou dokázali úspešne zrealizovať viacero projektov.
Tento blog je o použití Community verzie Camunda platformy. Predstavím vám:
- Camunda Modeler – nástroj na kreslenie procesov
- Camunda Engine – komponenta pre nasadenie nakreslených procesov. Na tú sa pozrieme detailnejšie:
- Doporučený technologický stack – s čím ho môžeme namiešať
- Databázové transakcie – ako to funguje vnútri
- Možnosti nasadenia – aké rôzne situácie zvládne
- Hardwarové požiadavky – koľko železa spotrebuje
- Camunda Cockpit – nástroj pre monitorovanie nasadených procesov
Tasklist nepredstavím, pretože je príliš strohý pre komerčné použitie a implementujeme si vlastný peknejší tasklist pomocou Angularu.
Camunda Modeler
Camunda Modeler je veľmi príjemný plne funkčný BPMN editor. Poskytuje všetky prvky štandardu BPMN 2.0:

Jednotlivé časti Camunda Modeleru:
- A – Vľavo hore je panel s hlavnými BPMN elementmi (udalosti, brány, úlohy, podprocesy, dátové objekty, pooly,…)
- B – Vpravo od vybraného elementu sa zobrazia ikony, pomocou ktorých môžeme:
- Pokračovať výberom nasledujúceho elementu – horné 2 riadky ikon – viď zobrazené kontextové menu – C
- Upresniť typ nakresleného elementu – ikona kľúča
- Zmazať element – ikona koša
- D – V pravej časti je možné vyplniť parametre vybraného elementu
V Camunda Modeleri je možné editovať BPMN modely nakreslené aj v iných analytických nástrojoch, ak spĺňajú štandard BPMN 2.0.
Úspešne sme ho vyskúšali napríklad so široko používaným nástrojom Enterprise Architect.
Okrem ukladania do BPMN súborov je možné nakreslené modely exportovať aj ako obrázky, čo je užitočná funkcionalita pri tvorbe dokumentácie.
Camunda Engine – odporúčaný technologický stack
Dodávateľom odporúčané komponenty spolupracujúce s BPMN enginom (tzv. technologický stack) sú dostatočné pre väčšinu stredne náročných projektov:

Jednotlivé vrstvy architektúry:

Camunda Engine – databázové transakcie
Stav danej inštancie procesu perzistentovaný v relačnej databáze je menený v databázových transakciách, ktoré sú ohraničené čakacími stavmi realizovaného procesu. Napríklad:

V tomto procese sa perzistentovaný stav procesu zmení, ak sú úspešne zrealizované operácie od ukončenej užívateľskej úlohy (Provide shipping address)
po časovač (wait until next business day). Ak v rámci týchto operácií nastane výnimka, beh procesu pokračuje spracovaním tejto výnimky, alebo zostane v chybovom stave = incident.
Čakacie stavy, ktoré oddeľujú transakcie procesu, čakajú na:
- špecifickú správu (adresovanú tejto inštancii procesu)
Modelované BPMN elementy: Receive Task, Message Event, Event-based Gateway - špecifický signál (určený pre definovanú skupinu inštancií)
Modelované BPMN elementy: Signal Events, Event-based Gateway - splnenie užívateľskej úlohy užívateľom
Modelované BPMN elementy: User Task - uplynutie špecifického času
Modelované BPMN elementy: Timer Event - vykonanie publikovanej úlohy
Modelované BPMN elementy: External Tasks
Transakcie je možné riadiť aj parametrami BPMN elementov, ale to je mimo rozsah tohto blogu.
Camunda Engine – možnosti nasadenia
Podľa veľkosti, architektúry a nárokov systému, do ktorého je Camunda Engine nasadený, sú podporované 3 možnosti nasadenia:

Camunda Engine – hardvérové požiadavky
Faktory, ktoré určujú požiadavky Camunda Engine na hardware:

Doporučená hardvérová konfigurácia podľa požiadavkov:

Camunda Cockpit
Camunda Cockpit je administrátorské rozhranie realizované vo forme webového klienta, prostredníctvom ktorého je možné monitorovať bežiace inštancie procesov a riešiť ich incidenty.
Po prihlásení do Camunda Cockpit sa zobrazí celkový prehľad stavu Camunda Engine:

Zobrazuje počty nasadených procesov, bežiacich inštancií, aktuálny počet incidentov, teda inštancií procesov, ktoré uviazli v chybovom stave a zadaných užívateľských úloh.
Výberom možnosti Running Process Instances (označené červeno) sa dostaneme do rozpisu nasadených procesov:

Význam stĺpcov tabuľky:
- State = Stav inštancií daného procesu. Možnosti:
- Incidents = Počet inštancií daného procesu/podprocesu v chybovom stave = incident
- Running Instances = Počet všetkých inštancií daného procesu. Započítané sú aj inštancie v chybovom stave.
- Name = Názov nasadeného procesu alebo podprocesu
Po kliknutí na názov (Name) vybraného procesu sa zobrazí model tohto procesu:
- číslo v modrom kruhu = počet inštancií tohto procesu, ktoré v danom elemente čakajú,
- číslo v červenom kruhu = počet inštancií tohto procesu, ktoré sa v danom elemente dostali do chybového stavu = incidenty
U elementov, ktoré sú definované ako čakacie (pozri kapitolu Databázové transakce), sa zobrazuje
Ak je daný element podproces, sú tieto čísla súčtom jeho čakacích elementov.
Môžeme sa do neho ponoriť a vidíme rozloženie jeho inštancií a incidentov v detaile:

V dolnej tabuľke je zoznam týchto inštancií. Po kliknutí na ID vybranej inštancie môžeme prezerať aktuálne hodnoty procesných premenných, meniť ich hodnoty a týmto spôsobom riešiť incidenty.