2011-12-14 14 views
5

stavo considerando usando Drools Fusion per attuare le seguenti regole esemplari:Drools Fusion for persistenti, lungo eventi

  • se il cliente ha acquistato due stessi prodotti in un anno, si ottiene terzo gratis
  • per la spesa più di 200 USD in un massimo di tre transazioni consecutive il cliente ottiene uno sconto
  • quando il cliente è inattivo da più di un anno viene generato un promemoria
  • un supervisore viene avvisato quando un singolo ordine è maggiore di una media valore di ordine entro ultimi sei monhts
  • ... e così via, questi sono solo esempi dalla parte superiore della mia testa

Tutte queste regole possono essere facilmente espressi utilizzando Drools Fusion. Tuttavia, dopo aver creato un prototipo e aver esaminato la documentazione, sembra che questo prodotto sia più adatto per eventi transitori a breve termine (mercato azionario, processo decisionale in tempo reale).

La domanda è: è necessario memorizzare tutti gli eventi in memoria? (probabilmente milioni di acquisti molto vecchi). Inoltre, può eseguire Drools Fusion eventi del negozio in modo che sopravvivano al riavvio del server? (Idealmente nel database).

So eventi Drools Fusion sono semplicemente fatti Drools Expert, così forse la questione può essere ampliato a: può Drools Expert persistono e pigramente caricare fatti?

risposta

3

È possibile caricare le informazioni sulla cronologia per cliente ogni volta che si riceve una nuova transazione per quel cliente. O periodicamente caricare le informazioni per rivedere i clienti inattivi. Tutti gli esempi che menzioni mi sembrano fatti. Ovviamente è possibile modellare tutto come eventi, ma quando si menziona ciò causerà la necessità di avere tutto in memoria. Per rispondere alla tua domanda sullo store/handle di milioni di eventi, devi prima rispondere alla domanda se la JVM supporterà di avere tutti quegli oggetti in memoria.

Cheers

+0

Grazie mille. Questo significa che sia Drools Expert che Drools Fusion richiedono sempre tutti i fatti/eventi in memoria? Pensavo che Drools sarebbe stato in grado di caricare pigramente i dati per l'elaborazione e scartare quelli che non sono più necessari ... –

+2

Sì, questo significa che è possibile implementare il caricamento pigro per alcuni fatti, ma il motore funzionerà meglio, ovviamente avendo tutti i fatti nel principale memoria. Per gli eventi, hai una funzione di gestione del ciclo di vita automatica. Ciò significa che tutti gli eventi che non vengono abbinati per nessuna regola verranno automaticamente scartati. Nell'esperto è possibile utilizzare le asserzioni logiche per rimuovere i fatti di cui non viene più eseguito il backup per la regola che li inserisce. – salaboy