Folyamatmotor / Workflow Engine
A projektek többségén, az egyes üzleti folyamatok státuszainak kezeléséséhez, illetve a státuszváltások validálásához, szükséges valamilyen folyamatkezelési logikát implementálni.
Erre megoldást nyújthat a Camunda, ami azonban a kisebb projektek esetén túl nagy fejlesztési és költségbeli overheadet okozhat.
Az ilyen prokjektek támogatása érdekében, a SEMI productban definiáltunk egy általános folyamatmotor API-t, amit a projektek tetszőleges üzleti folyamathoz implementálhatnak, a Camundával járó overheadek nélkül.
1. A SEMI folyamatmotor előnyei
- Egyszerűen definálhatóak az üzleti folyamatok státuszai és a státuszok közötti átmenetek.
- A státuszok közti átmenetekhez definiálhatók a szükséges szerepkör, jogosultsági követelmények.
- A sikeres státuszváltások előzményeinek automatikus mentése az adatbázisba.
- Minimális kódot szükséges csak implementálni egy folyamathoz.
2. Technikai megvalósítás
Az üzleti folyamat státuszai és a köztük lévő átmenetek gráf adatszerkezettel vannak reprezentálva.
Egy új üzleti folyamat definilásához, a backend-service/src/main/java/io/gbsolutions/project/techcore/workflow
packageben található Workflow absztrakt osztályt szükséges implementálni.
Az implementálandó metódusok:
getName: Az üzleti folyamat nevét kell visszaadnia. Ha több folyamatot definiálunk, a neveknek implementációnként egyedinek kell lennie.getActualStatus: Annak az entitásnak az aktuális státuszát kell visszaadnia, aminek a státuszváltásait a folyamatmotorral vezéreljük.putStatuses: Ennek a metódusnak az implementációjában kell definiálnunk az adott folyamat státuszait. (Ezek lesznek a gráf csúcsai.)addGraphEdges: Ennek a metódusnak az implementációjában kell definiálnunk a státuszok közti átmeneteket. (Ezek lesznek a gráf élei.)
Példa a Workflow implementációra
A backend-service/src/test/java/io/gbsolutions/project/techcore/workflow/leasing packageben található példa a
Workflow absztrakt osztály lehetséges implementációjára.