Stel ik gebruik een rule engine die aan de hand van bepaalde input iets goedkeurt of afwijst. Om de zoveel tijd wordt er gevraagd om de logica aan te passen die evalueert of de input goed- of afgekeurd wordt. De wijzigingen van de logica gebeuren niet vaak genoeg om een hele UI waarmee de klant de rules zelf kan aanpassen te kunnen verantwoorden.
Het probleem is dat op het moment van wijzigen van de evaluatielogica er nog mensen in een werkproces zitten met de oude logica, en deze werkprocessen niet de nieuwe logica mogen gaan gebruiken. Wij moeten dus bij het opstarten van zo'n werkproces het versienummer van de logica op kunnen slaan en aan de hand daarvan de juiste versie van de logica in kunnen laden.
Zelf zat ik te denken dit met namespaces en PSR-autoloading op te lossen:
Op de een of ander manier voelt dit heel erg smerig aan, ik word er niet heel erg vrolijk van. Wat vinden jullie? Hebben jullie hier ervaring mee?
Het probleem is dat op het moment van wijzigen van de evaluatielogica er nog mensen in een werkproces zitten met de oude logica, en deze werkprocessen niet de nieuwe logica mogen gaan gebruiken. Wij moeten dus bij het opstarten van zo'n werkproces het versienummer van de logica op kunnen slaan en aan de hand daarvan de juiste versie van de logica in kunnen laden.
Zelf zat ik te denken dit met namespaces en PSR-autoloading op te lossen:
code:
1
2
3
4
| [...]\Logic\LogicInterface.php - interface die I/O definieert [...]\Logic\LogicLoader.php - geeft de gevraagde implementatie terug (aan de hand van versie) [...]\Logic\1\Logic.php - implementatie van interface, versie 1 [...]\Logic\n\Logic.php - implementatie van interface, versie n |
Op de een of ander manier voelt dit heel erg smerig aan, ik word er niet heel erg vrolijk van. Wat vinden jullie? Hebben jullie hier ervaring mee?