Cikkünk második részében Kris Verlaenen írását olvashatják, mely bemutatja a Drools fejlesztői csapatának vízióját és jól példázza a deklaratív programozás iránti elkötelezettségét több modellezési paradigmán keresztül, mivel nincs olyan eszköz, amely minden megoldás esetén megfelelő lenne.
A folyamat-virtuális gép (PVM)
Az alábbiakban a Drools fejlesztői csapatának víziójáról olvashatnak egy olyan integrált megközelítéssel kapcsolatban, mely a Drools Platformra épülve szabályokat és folyamatokat használó üzleti logika modellezésére szolgál.
Az első ábra bemutatja ezt a megközelítést, vagyis a szabályok és a folyamatok egységesítését a hatékony folyamat-virtuális gép (PVM+) Drools platformba való integrációján keresztül. Ez lehetővé teszi ezen a PVM+-on alapuló szabályok, valamint folyamatok végrehajtásának támogatását a Drools platformon belül. Az egyesített megközelítés létrehozása a szabályok és folyamatok kezelésére (a végfelhasználó számára) sokkal hatékonyabb üzleti logikai rendszert eredményez, mint amit egyszerűen a különálló szabályok és munkafolyam termékek összekapcsolásával elérhetünk. Ez a megközelítés számos hagyományos szolgáltatás létrehozását is lehetővé teszi az egységesített platform mellett (IDE, webalapú menedzsment rendszerek stb.), melyeket aztán egyszerűen lehet alkalmazni mind a szabályokhoz mind a folyamatokhoz, ez pedig egységesebb élményt ad a platform felhasználójának. Az ábrán használt kifejezéseket a következő részekben magyarázzuk el.
Első ábra
PVM
A folyamat-virtuális gép egy általános modellt határoz meg, mely több folyamat modellt támogat. Ez a munkafolyam folyamat modellek implementálásának az alapja. A folyamat-virtuális gép egy állapotgépet képvisel, ami bármilyen szoftveralkalmazásba beágyazható. Ezért a PVM a következőket határozza meg:
- Folyamat (definíciós) modell: olyan fogalmakat határoz meg, mint folyamatok, változók, csomópontok, kapcsolatok, munkadefiníciók stb.
- Futásidő modell: futásidő példányok melyek megfelelnek a folyamat modell minden elemének, mint például folyamat példány, változó példány, csomópont példány, munkaegység stb.
- API: folyamatpéldányok elindíthatók, megszakíthatók, felfüggeszthetők, a változó példányok értéke visszaállítható, a munkaegységek befejezhetők vagy megszakíthatók stb.
- Szolgáltatások: a PVM olyan (nem funkcionális) szolgáltatásokat is implementál, melyek a legtöbb folyamat-nyelv implementáció esetén hasznosak, mint például a perzisztencia, a tranzakció-kezelés, az aszinkron folytatás stb. Ezek a szolgáltatások kiterjeszthetők (nem kell őket használni; ha nem használják őket, akkor az minimális költséget jelent) és konfigurálhatók kell legyenek (mindezen szolgáltatások esetén különböző stratégiák alkalmazhatók, ennek pedig konfigurálhatónak és kiterjeszthetőnek kell lenni, így az emberek a saját implementációjukat beilleszthetik).
Ezen folyamatmodellen felül a PVM azt is meghatározza, hogy hogyan használjuk a folyamat (példány), csomópont (példány), csatlakozás stb. fogalmait olyan közös munkafolyam-minták implementálásához (ellenőrzési folyamban, adat, erőforrás, kivételek), mint például csomópontok sorozata, párhuzamosság, választás, szinkronizáció, állapot, alfolyamatok, hatáskör-korlátozott változók stb. Ezek a csomóponti implementációk különböző folyamatnyelvek implementálásának alapjaként használhatók.
PVM+
A PVM+ kiterjeszti a PVM-et és a Drools Platformba integrálja. Ez a következőket teszi lehetővé:
- A szabályok és folyamatok integrációja: a folyamatok a folyamat modelljeikben tartalmazhatnak szabályokat bármikor, amikor szükséges, például osztott döntések, munkaegységek résztvevőinek kinevezése, a szabályok mint kifejezési nyelv stb. esetén. A szabályok fordítva, a végrehajtásuk során is indíthatnak folyamatokat.
- A folyamatok és szabályok egy közös adatkontextuson osztoznak, nincs szükség két vagy több rendszer integrálására, az információ folyamatosan továbbítódik a két rendszer között, az adatok szinkronizálódnak stb.
- A folyamatok (és szabályok) más funkcionalitással is rendelkezhetnek azokon kívül, melyeket a Drools platform nyújt. Például egységesített audit rendszer, egységesített API a folyamatok/szabályok indításához, egyesített fejlesztési és alkalmazási infrastruktúra stb.
- Egy motorra vonatkozó munkamenet párhuzamosan több különböző folyamatpéldányt tud végrehajtani, melynek során a megosztott változó kontextus változásain keresztül a folyamatok más folyamatokkal és szabályokkal tudnak interakcióba lépni.
A PVM+ további csomóponti implementációkat is meghatároz, melyek a szabályok és folyamatok integrációjának hatékonyságát mutatják, és azt, hogy ezt a hatékonyságot hogyan lehet kihasználni egy folyamat modellen belül, például a szabályok felhasználásának választása a feltételek, mérföldkövek értékeléséhez (ez egy olyan állapot, ahol a szabályok meghatározzák, hogy mikor lehet a következő állapotra térni), időzítők beépített feltételekkel, akciók, melyek támogatják a dialektusokkal történő kiterjesztést stb.
Munkafolyam-nyelvek
A PVM+ mellett különböző (domén-) specifikus munkafolyam-nyelvek implementálhatók:
- jPDL: általános felhasználású, nagy kifejezőképességű munkafolyam nyelv Java fejlesztők számára
- PageFlow: munkafolyam nyelv az irányítás-folyam meghatározására weboldalakon
- RuleFlow: munkafolyam nyelv, annak meghatározására, hogy milyen sorrendben kell a szabálykészleteket értékelni
- WS-BPEL: a WS-BPEL szabvány implementációja webszolgáltatások összehangolásához
Ezek a nyelvek mindegyike mindegyik csomópontra meghatároz egy folyamatmodellt és implementációt. Ezek az implementációk sok esetben a PVM (+) általános csomóponti implementációján (vagy annak kombinációján) alapulnak majd.
Kiterjeszthetőség: az új csomóponti implementációk hozzáadhatók a meglévő folyamat-nyelvekhez, és a meglévő folyamatnyelvek új funkcionalitással kiterjeszthetők (pl. időkeretek), vagy teljesen új folyamatnyelvek adhatók a PVM+-hoz.
Munkadefiníciók
A kifelé irányuló kommunikáció a munkaegységek segítségével történik, melyek a végrehajtandó munkaegység absztrakt képviselői. A munkaegység-kezelők így felelősek ezen munkaegységek végrehajtásáért, bármikor, amikor szükséges a folyamatpéldányok végrehajtása során. Ez a megközelítés a következő előnyökkel rendelkezik:
- Sokkal deklaratívabb programozási mód, ahol csak azt határozzuk meg, hogy mit kell végrehajtani (egy absztrakt munkaegység használatával), nem azt, hogy hogyan (nincs kód)
- Elrejti az implementáció részleteit
- A különböző kezelőket több kontextusban lehet alkalmazni:
-A munkafolyam módosítások nélkül újból felhasználható különböző futásidő végrehajtási kontextusokban (például különböző vállalatok vagy különböző kórházak a klinikai munkafolyam kontextusában) azáltal, hogy egyedi kezelőket hoznak létre mindegyik környezethez.
-A munkafolyam különbözéféleképpen viselkedhet az életciklusa különböző szakaszaiban. Például a tesztelés során olyan kezelőket is lehet regisztrálni, melyek nem csinálnak mást, csak a munkafolyamok végrehajtását tesztelik. A szimuláció során lehetséges a végrehajtandó munkaegységek vizualizációja, és a szimulációt végző személy befejezheti vagy megszakíthatja a munkaegységeket. - A munkaegység definíciók és a kezelő implementációi a csomópontok, a folyamatok és a folyamatmodellek között újból felhasználhatók.
A különböző, egy kifejezett munkafolyam-nyelvben elérhető munkaegységeket meg kell határozni (azáltal, hogy meghatározunk egy egyedi azonosítót ahhoz a munkaegység-típushoz, és annak a munkaegységnek a paramétereit). A munkadefiníciók különböző készletei is meghatározhatók:
- Az általános munkadefiníciók (és a kezelőinek az implementációi) meghatározhatók a közös feladatokhoz, ami hasznos lehet különböző munkafolyam nyelvek esetén, például kommunikációval kapcsolatban (e-mail, SMS küldés stb.), webszolgáltatások esetén, egy üzenet naplófájlba mentése során stb.
- A felhasználók meghatározhatják a saját domén-specifikus munkaegységeiket (és a kezelőik implementációit), melyek azután a folyamatok modellezésére használhatók abban a doménben. Például egy klinikai munkafolyam-nyelv olyan munkaegységeket határozhat meg, mint például a „nővérek beosztása”, a „gyógyszerezési rend”, a „háziorvossal való kapcsolatfelvétel” stb.
Kiterjesztések
Amikor a folyamatok és szabályok egységes megközelítését alkalmazzuk a Drools Platform részeként, akkor ezen fogalmak és API-k mellett a kiterjesztések könnyen újból felhasználhatók minden szabály- és folyamatnyelv esetén.
- Az Eclipse-alpú IDE támogatja olyan alkalmazások Drools Platformra fejlesztését, amelyek támogatják a szabályok és folyamatok használatát. Az IDE magában foglalja:
-grafikus munkafolyam szerkesztő
-egységesített hibakezelés
-integrált nyomkövetés
-egységesített szimuláció
-folyamatnyelvek, egyedi tulajdonság-panelek stb. kiterjeszthetősége - B(R)MS, üzleti szabálykezelő rendszer: egy webalapú alkalmazás, ami az összes üzleti tudás tárházaként szolgál. Támogatja az egységesített csomagolást, a verziókezelést, a menedzsmentet, a minőségbiztosítást stb.
- Biztonság-kezelés: ki, milyen műveleteket hajthat végre a Drools platformon
- (Humán) feladatok menedzsment komponense, ami megosztható a szabály és folyamatnyelvek között a humán feladatok integrálásához.
Kiterjeszthető munkaegységek