2012-12-11 22 views
9

Nel nostro progetto dobbiamo implementare la logica di business riguardante la mappatura di determinati oggetti ad alcune azioni. Avremo una serie di condizioni per specifici tipi di oggetti da verificare prima che una certa azione venga finalmente risolta. In altre parole per 7 tipi di oggetti possiamo avere una serie di azioni (da quasi 45 azioni).Drools è il modo più efficiente per mappare le regole/le logiche aziendali?

Stavamo pensando di utilizzare Drools per annotare le regole di cui sopra. Qualcuno ha qualche esperienza positiva/negativa con l'utilizzo di Drools per quanto riguarda la sua efficienza? C'è anche il framework jBPM che può essere usato (se non sbaglio vengono usati Drools lì) - qualcuno ha familiarità con quel framework? Forse hai qualche altra idea su come risolvere il problema?

risposta

7

Per quanto riguarda l'efficienza, non dovresti avere alcun problema con Drools. Mi sembra una serie piuttosto piccola di fatti e regole. Il motore di Rete su cui si basa è quasi certamente più veloce nel prendere decisioni rispetto a qualsiasi pila di istruzioni if-then-else che si codificano da soli. E un particolare vantaggio che ho notato è che i tempi di risposta sono estremamente prevedibili.

Ovviamente tutti i modelli di fatto e le regole sono diversi, ma ad esempio, l'applicazione che sto attualmente costruendo ha centinaia di fatti nella memoria di lavoro in qualsiasi momento e più di 1000 regole. È in grado di prendere decisioni sulle richieste in entrata in circa 20 millisecondi.

Il framework jBPM completo non sembra necessario per ciò che viene descritto. Tuttavia, è buono in quello che fa. Ad esempio c'è una GUI per la modellazione dei processi se stai cercando di progettare i flussi di lavoro, e Guvnor può essere utilizzabile per gli autori di regole non tecniche se il team tecnico si impegna in prima linea nello scrivere DSL e nella costruzione di tabelle decisionali.

Per completezza, i principali concorrenti sono probabilmente FICO Blaze Adviser o IBM ILog JRules. Generalmente quando si tratta di benchmark, quelli tendono ad essere leggermente più avanti di Drools, ma sono costosi. Certo, se decidi di pagare i contratti di servizio JBoss/RedHat, allora non è molto diverso, ma se sei felice di ricevere il supporto della community su Drools, allora è gratis!

+0

Grazie per la risposta! Abbiamo deciso di utilizzare Drools nel nostro progetto e ne siamo davvero felici. Una cosa molto buona è che manteniamo le nostre regole nei file DRL e non dobbiamo ridistribuire l'applicazione ogni volta. –

4

La mia unica preoccupazione per Drools è che non esiste una GUI decente per questo che un business business non IT possa realmente utilizzare. Molti prodotti sostengono di fornire tale interfaccia utente, ma si rivela sempre non vera. Quindi, devi accettare il fatto che il tuo team di sviluppo finirà per creare e testare tutte quelle regole basate su tabelle decisionali o altri formati.

Oltre a ciò, Drools è un ottimo BRE utilizzato da governi, banche e grandi aziende.

+1

100% vero. Ma, secondo la spiegazione che sta dando, forse un tavolo decisionale potrebbe essere un buon candidato. Se questo è il caso, le regole potrebbero essere gestite da ragazzi IT con una piccola quantità di dolore. –

+3

@EstebanAliverti Teoricamente hai assolutamente ragione. L'intera premessa delle tabelle decisionali era quella di astrarre l'IT dal business. In realtà questo non funziona mai, però. Ho lavorato con BREs per 15 anni, ho attraversato tutti i più grandi. Non ho mai visto un progetto in cui gli uomini d'affari creassero/modificassero tabelle senza alcun aiuto.assistenza dall'IT. Formato/azioni/condizioni cambiano continuamente, arrivano nuovi uomini d'affari, ecc. – Kizz

+1

Grazie per le tue risposte! Abbiamo deciso di utilizzare Drools nel nostro progetto e ne siamo davvero felici. Ovviamente c'è un problema con la GUI ma puoi sovrascriverlo usando le tabelle decisionali nei fogli di calcolo. Ho un post sul mio blog [collegamento] (http://toomuchcoding.blogspot.com/2013/02/drools-decision-tables-with-camel-and.html) –

1

Drools è molto efficiente e veloce. Ma come con qualsiasi tecnologia &, avrà bisogno di un investimento da integrare nel tuo progetto e non è una bacchetta magica. È necessario considerare:

  • Quante regole avrai? Non consiglierei alcun motore di regole se ci sono meno di 20 regole. Potrebbe non giustificare lo sforzo che spenderete per la complicazione di aggiungere un motore di regole solo per 7 oggetti e 45 azioni ...
  • Avrete bisogno di funzionalità DSL (Domain Specific Language)? Vale a dire. le persone non tecniche scriveranno le regole? IMHO questo non è molto utilizzabile in Drools rispetto ad es. Oracle OPA. Ma ancora una volta non ho visto una persona non tecnica armeggiare in sicurezza con un sistema di regole. Oltre a cambiare i valori in una tabella di decisioni.
  • Quanto cambieranno le tue regole? Se hai bisogno di un sistema centralizzato per gestire, versione, pacchetto, prova le tue regole allora Drools Guvnor è un prodotto molto capace.
1

jBPM non è un motore di regole, è un motore di flusso di lavoro. Drools è un motore di regole. Quindi Drools è quello che stai cercando.

Drools e jBPM sono progetti complementari: si integrano molto bene se sono necessari flussi di lavoro con regole.

Drools va bene JBPM è un po 'complesso rispetto ad altri motori BPMN. Suggerirei di andare su Activiti perché è un po 'più semplice e l'integrazione di qualcosa dice Spring, LDAP ecc .; con Activiti è più facile. Inoltre puoi integrare Drools con Activiti .. quindi scegli Activiti come motore per il flusso di lavoro e Drools per un motore di regole.