Kihagyás

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.