Risposte:
Quali sono i pro e i contro dell'adozione dei motori di regole Java JESS e Drools?
Utilizzare un motore di regole se è necessario separare le regole aziendali dalla logica dell'applicazione. L'articolo Il tuo progetto ha bisogno di un motore di regole ha un buon esempio:
Ad esempio, un tipico sistema di vetrina potrebbe coinvolgere il codice per calcolare uno sconto:
if (product.quantity > 100 && product.quantity < 500) { product.discount = 2; } else if (product.quantity >= 500 && product.quantity < 2000) { product.discount = 5; } else if (product.quantity >= 2000) { product.discount = 10; }
Un motore di regole sostituisce quanto sopra con un codice simile a questo:
ruleEngine.applyRules(product);
Sta a te decidere se mettere una console di amministrazione delle regole nelle mani di persone non tecniche è una buona cosa o no :)
Maggiori dettagli in Dovrei usare un motore di regole? , Perché utilizzare un motore di regole? , Alcune linee guida per decidere se utilizzare un motore di regole e su Google .
Ci sono altri giocatori?
Altri giocatori includono JRules, Corticon (JRules è l'IMO più famoso, il che non significa il migliore).
come si confrontano in altre aree come facilità d'uso, prestazioni, livello di integrazione con il codice?
Non posso dirti con precisione, ho solo una piccola (positiva) esperienza con Drools. Ma riceverai un feedback da post di blog come JBoss Drools vs ILog JRules - una storia aneddotica (assicurati di leggerla) o Working with Drools da una prospettiva di JRules . Sono sicuro che puoi trovarne altri su Google (ma proverei Drools).
Stiamo valutando le regole da utilizzare con il nostro server delle applicazioni. Ci siamo imbattuti in OpenRules , che è facile da integrare con Java e, per quanto dimostrato dai nostri test, abbastanza veloce. Il vantaggio principale di OpenRules rispetto agli altri è il modo in cui le regole vengono modificate e gestite. Tutto accade nelle tabelle di Excel, che è il modo più semplice per i non programmatori. Tutti i soggetti coinvolti, anche le persone non tecniche, hanno capito tutto perfettamente :-)
Abbiamo anche integrato sbavature, ma le regole sono molto più complicate da capire in quanto si tratta di un approccio più programmatico. Ecco perché, molto probabilmente, ci atterremo a OpenRules.
Abbiamo avuto una domanda simile con noi, finalmente abbiamo raccolto Drools, si dovrebbe usare sbavature se si ha quanto segue:
Ulteriori dettagli al seguente URL
Aggiungo solo che molte persone sono alla ricerca di qualcosa di più simile a gestire se determinate condizioni sono soddisfatte per abilitare o disabilitare determinate funzionalità in un'applicazione.
Mi sono stancato di reimplementare lo stesso modello più e più volte ovunque andassi, quindi ho deciso di creare un progetto OSS chiamato Roolie http://sourceforge.net/projects/roolie/
L'ho appena modificato e poiché non sono stati segnalati bug dal 2010 quando è stato rilasciato, l'ho aggiornato alla v 1.0 senza modifiche oltre a quelle necessarie per ospitarlo su Maven Central (cosa che sto facendo ).
Fondamentalmente JSR-94 è eccessivo per la maggior parte delle cose, e c'è un'enorme curva di apprendimento e overhead che vanno di pari passo con le offerte attuali. Va bene se è quello che vuoi. Ma se vuoi solo concatenare semplici regole scritte in Java insieme a XML per mantenere i tuoi test di stato, Roolie è un modo molto veloce per farlo. Nessuna dipendenza e nessuna curva di apprendimento.
Quando avevamo bisogno di un motore di regole, abbiamo deciso di lanciarne uno nostro, perché quelli disponibili erano troppo complicati per i nostri semplici compiti. Se hai anche remotamente esperienza con l'analisi delle espressioni che gli utenti possono inserire, non è molto difficile da fare. Nel nostro caso, la maggior parte delle specifiche è gestita da un XSD e solo pochi campi vengono ulteriormente analizzati.