Rule based engine php

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Patrick S

patrick S

15/05/2014 17:32:08
Quote Anchor link
Hallo,

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.
Afbeelding

Heeft iemand hier voorbeelden van?
 
PHP hulp

PHP hulp

04/11/2024 13:37:06
 

08/11/2022 11:46:16
Quote Anchor link
8 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 ?
Gewijzigd op 08/11/2022 11:49:20 door
 
Ward van der Put
Moderator

Ward van der Put

08/11/2022 15:09:19
Quote Anchor link
Ik zou beginnen met het Specification design pattern. Dat geeft je een solide OOP-basis voor propositielogica.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.