2010-01-24 10 views
9

Sto lavorando a un motore di valutazione di decisioni/motori di regole. Per esempio:Quali modelli/motivi funzionano meglio per lo sviluppo di un motore di regole/decisioni

ingresso: Cliente e tutte le offese fatte dal cliente

uscita: Conseguenze dei reati

Un caso di esempio potrebbe essere:

Ingresso: Il cliente (Jhonny Chimpo, 999 -00-1111), Reati (finestra Broke, schiaffeggiato capo, cavo della squadra calci all'inguine)

uscita: Ottiene slip rosa

Quindi il pezzo di codice che voglio scrivere valuta diversi reati basati su regole per ogni reato e reato combinato. Il codice corrente è solo un labirinto di dichiarazioni if ​​e else. Sono sicuro che questi problemi di business sono comuni. Quale modello di progettazione/impresa viene solitamente utilizzato per risolvere un problema come questo?

È lo schema delle specifiche? Voglio che il codice sia aperto per l'estensione, pulito e flessibile.

+0

Vuoi scriverne uno? Potresti dare un'occhiata a Jess http://www.jessrules.com/ – Joe

risposta

3

Fondamentalmente le regole di business sembrano

forall rules: 
    if <condition> then doAction(); 

Che dire di classificare tutte le infrazioni per gravità utilizzando i punteggi, forse extra bonus per frequenti "malvagità" oers ", alcuni reati possono diventare prescritti e quanto richiesto.

Poi una bozza di un algoritmo potrebbe essere:

  • Somma di tutti gli spartiti di un cliente (ponderata)
  • confrontare al massimo

Questo sarebbe semplice utilizzando strutture di dati invece di molti (possibilmente profondamente annidati) se ... poi ... ecco le cose.

+0

il codice corrente che abbiamo è labirinto di if-else loops – Perpetualcoder

-1

Penso che tu stia cercando di sviluppare un sistema esperto. È possibile controllare il termine e quindi controllare i linguaggi di programmazione appropriati come prolog ecc.

+0

Non sto cercando di costruire un sistema esperto. – Perpetualcoder

+2

@Perpetualcoder in realtà, quello che hai elencato è proprio un sistema esperto. –

+0

non è un sistema esperto anche una macchina didattica per fare un lavoro specifico? – Perpetualcoder

1

Non sono sicuro che nessuna delle risposte precedenti sia stata così utile.

Ho scritto componenti simili usando expression trees. È possibile creare espressioni lambda che rappresentano i predicati, compilarli ed eseguirli, tutti in modo dinamico, quindi attivare un'azione in risposta. Questo approccio è potente, flessibile e toglie tutto il se/altro horror (che non è sicuramente la strada da percorrere).

Tuttavia, ciò di cui si sta veramente parlando è la programmazione logica. Esistono numerose implementazioni di Prolog su .NET.Il Prolog è un linguaggio basato sulla logica, usato molto per le applicazioni AI, che inizia a diventare seriamente potente una volta che hai la testa attorno al suo paradigma.

Date un'occhiata ad alcuni di questi ..

+0

questo è qualcosa di veramente interessante. Non sono un fan dei motori di regole aziendali o – Perpetualcoder

+0

ma ..:) ... Non sono nemmeno un fan di Prolog .. lo trovo semplicemente fantastico :) – Perpetualcoder

+0

check out expression trees. – flesh

0

Credo che qualsiasi algoritmo rete basato su Rule Engine per cui avrebbe funzionato il tuo caso. Puoi provare Drools.

Problemi correlati