Rules Engine (Approach / Pattern / Framework) per applicare query di filtro ai dati

0

Ho ereditato un modello di dati un po 'complicato in un database SQL che presto avrò un'opportunità (leggi: nececssity) da revisionare. Il modello dati rappresenta un catalogo prodotti. Quindi c'è una tabella di prodotti con molte e molte altre tabelle di 1-3 generazioni contenenti dati di categoria, dati localizzati, stato ecc. E c'è un API sopra questo modello di dati che consente ad altri sistemi di interrogarlo.

Il nocciolo della questione è che esistono numerose "regole aziendali" complesse che definiscono i filtri globali quali dati restituisce l'API. (ad esempio, escludi i prodotti dal produttore M nella categoria X, se è dopo il 10 del mese, e lo stock nel rivenditore Y sta mostrando < = Z)

Queste regole sono state ingenuamente implementate nel database in una vista. API -> EntityFramework Query -> View (Containing hacked in Where Clauses) -> Underlying Tables

I problemi sono ovvi (manutenzione, mancanza di testabilità, prestazioni ecc ...)

Questo sembra un problema di regole aziendali in base a un insieme di circostanze / condizioni, abbiamo bisogno di applicare alcuni set di filtri globali.

Una cosa che ho visto è il pattern delle specifiche, dove potevo, in base a determinati criteri (regole), iniettare una serie di specifiche che definiscono questi filtri di query.

Questo ha il vantaggio di portare sia le regole che l'amp; i filtri arrivano al codice. Supporterà anche un'architettura più basata su plugin in cui la specifica potrebbe essere iniettata in fase di runtime, quindi non dovremmo necessariamente passare attraverso un ciclo di distribuzione per aggiungere nuove regole.

Mi chiedo solo se c'è qualcos'altro che dovrei considerare, o se ci sono schemi / approcci o esistenti su quel software per scaffali dovrei anche dare un'occhiata.

    
posta Eoin Campbell 05.12.2017 - 12:31
fonte

0 risposte