Mi chiedo se esiste un buon pattern esistente (il linguaggio è Python / Django ma è anche interessato al livello più astratto) per creare un livello di business logic che può essere creato senza codifica.
Ad esempio, supponiamo che l'affitto di una casa debba essere disponibile solo in un momento specifico. Un coder potrebbe creare la seguente classe:
from bizlogic import rules, LogicRule
from orders.models import Order
class BeachHouseAvailable(LogicRule):
def check(self, reservation):
house = reservation.house_reserved
if not (house.earliest_available < reservation.starts < house.latest_available )
raise RuleViolationWhen("Beach house is available only between %s and %s" % (house.earliest_available, house.latest_available))
return True
rules.add(Order, BeachHouseAvailable, name="BeachHouse Available")
Questo va bene, ma non voglio dover codificare qualcosa di simile ogni volta che è necessaria una nuova regola.
Mi piacerebbe creare qualcosa di dinamico, idealmente qualcosa che possa essere memorizzato in un database.
Il fatto è che dovrebbe essere abbastanza flessibile da comprendere un'ampia varietà di regole:
- evitare duplicati / sovrapposizioni (per continuare l'esempio "Hai già una prenotazione per questo orario / luogo")
- regole logiche ("Non puoi affittare una casa a te stesso", "Questa casa è in un posto diverso dalla destinazione scelta")
- test di integrità ("Hai fissato un prezzo di affitto di 10 volte la tariffa normale. Sei sicuro che sia il prezzo giusto?"
Cose del genere.
Prima di ricreare la ruota, mi chiedo se ci sono già dei metodi per fare qualcosa del genere.