Rule based engine php
patrick S
15/05/2014 17:32:08Hallo,
Ik wil een soort rule based engine maken voor mijn ordersysteem. Het moet net zoiets worden als op de onderstaande afbeelding.
De gebruiker moet in het beheer regels kunnen toevoegen en als er een match is dan zouden er acties uitgevoerd moeten worden. Bijvoorbeeld een mail versturen of een status aanpassen.
Heeft iemand hier voorbeelden van?
Ik wil een soort rule based engine maken voor mijn ordersysteem. Het moet net zoiets worden als op de onderstaande afbeelding.
De gebruiker moet in het beheer regels kunnen toevoegen en als er een match is dan zouden er acties uitgevoerd moeten worden. Bijvoorbeeld een mail versturen of een status aanpassen.
Heeft iemand hier voorbeelden van?
PHP hulp
27/11/2024 12:46:488 jaar later...
Nou wil ik ongeveer hetzelfde, een business rule engine (BRE) maar dan ondersteund door de database.
Dus dat je een of meer tabellen hebt waarin business rules passen, die via PHP kunnen worden uitgevoerd op de database (PostgreSQL).
Business rules zijn voor mij expressies, zoals "(A > 2) AND (B < 6)", die bepalen of een bepaalde actie nu wel of niet genomen moet worden.
Ik vond hierover verschillende strategieën:
1. eval() in PHP
2. eval() in PostgreSQL
3. BRE genormaliseerd in de database
Optie 1 en 2 zijn evil. Ik heb nu optie 1 geïmplementeerd maar word er niet blij van (bij omschrijven naar een gecompileerde taal). Optie 3 is het beste. Hierover vond ik dit artikel.
Je moet een (data) boom kunnen opzetten met operators en waarden en variabelen.
Ik stoei nog met de implementatie. Het lijkt er op dat je in ieder geval een tabel nodig hebt met:
- het id
- het parent id
- de operator
- een waarde of een variabele
Maar hoe dat er precies uit moet zien ?
Nou wil ik ongeveer hetzelfde, een business rule engine (BRE) maar dan ondersteund door de database.
Dus dat je een of meer tabellen hebt waarin business rules passen, die via PHP kunnen worden uitgevoerd op de database (PostgreSQL).
Business rules zijn voor mij expressies, zoals "(A > 2) AND (B < 6)", die bepalen of een bepaalde actie nu wel of niet genomen moet worden.
Ik vond hierover verschillende strategieën:
1. eval() in PHP
2. eval() in PostgreSQL
3. BRE genormaliseerd in de database
Optie 1 en 2 zijn evil. Ik heb nu optie 1 geïmplementeerd maar word er niet blij van (bij omschrijven naar een gecompileerde taal). Optie 3 is het beste. Hierover vond ik dit artikel.
Je moet een (data) boom kunnen opzetten met operators en waarden en variabelen.
Ik stoei nog met de implementatie. Het lijkt er op dat je in ieder geval een tabel nodig hebt met:
- het id
- het parent id
- de operator
- een waarde of een variabele
Maar hoe dat er precies uit moet zien ?
Ik zou beginnen met het Specification design pattern. Dat geeft je een solide OOP-basis voor propositielogica.