JavadayIV - A look Inside JBoss Rules
-
Upload
jbug-italy -
Category
Technology
-
view
1.394 -
download
1
Transcript of JavadayIV - A look Inside JBoss Rules
A look inside JBossRules
A look inside JBossRules
Dal BRMS al BLiP
Perch dovrei usare un Rule Engine? E che cosa ci faccio?
Business Rules VS Metodi di Business
Oltre il BPM... BPM+Rules
E quando (quando?quasi sempre!) il business praticamente scritto su fogli excel???
Sistemi Esperti? BRL?? Pattern Matching??? Rete???? AI?????
A look inside JBossRules
Avvertimenti
programmare a regole, usare motori di regole, pu portarci
spesso
ad esagerare e a
voler sparare ad una mosca con un cannone
ma allo stesso tempo sono sicuro che in moltissime delle
applicazioni su cui
avete o state lavorando ci sarebbe spazio per le regole...
anche perch (come spero ve ne accorgerete :-) e come spero
si possa sfatare un falso mito )
OO programming + rules formano un binomio perfetto!
A look inside JBossRules
Chi sono
System Architect per ValueTeam SPA
http://www.valueteam.com
Uno dei coordinatori del JBoss User Group Roma
http://www.jbugroma.org
http://tech.groups.yahoo.com/group/roma-jbug
Membro e sostenitore delle attivit del Jug Roma
My buzzwords:
BRMS BPM APM JBoss platform CI - GateIn
Spring Agile techniques - Flex Python pygtk Grails -
Debian
Twitter:
http://twitter.com/giomarigi
A look inside JBossRules
Agenda
Sistemi Esperti VS Programmazione
Applicazione dei sistemi esperti
JBossRules/Drools5
Drools Expert
Drools Expert Demo
BRMS: Drools Guvnor
A look inside JBossRules
I computer sono incredibilmente veloci, accurati e stupidi. Gli
uomini sono incredibilmente lenti, inaccurati e
intelligenti.Insieme sono una potenza che supera
l'immaginazione
(Albert Einstein)
Sistemi Esperti VS Programmazione
Expert SystemInference EngineProduction
Memory
Knowledge
BaseREGOLEIF-THENREGOLEIF-THENREGOLEIF-THENRULES
REGOLEIF-THENREGOLEIF-THENREGOLEIF-THENFACTS
Interface
Apps, Programs, Facts
Solutions, Decisions, Actions
Sistemi Esperti VS Programmazione
Un sistema esperto pu essere definito come un modulo software che cerca di riprodurre il comportamento e il modo di ragionamento che una o pi persone attuerebbero in uno specifico dominio di cui sono esperti.
Pu un sistema esperto emulare le prestazione di un umano?
Un sistema esperto non equivale a dire sistema intelligente!
Un sistema pu apprendere, pu essere semi-intelligente ma avr
sempre una conoscenza limitata!
Un sistema esperto deve agire in domini limitati!
Sistemi Esperti VS Programmazione
Un sistema esperto specifica cosa il nostro modulo deve fare e non
come farlo!!!
Usa euristiche e non detto che arrivi sempre a una soluzione e nel
caso in cui la trovi
non detto che sia ottima e corretta.
Lo sviluppatore non definisce i passi per arrivare alla soluzione,
ma essi sono impliciti!
Definire logica di business attraverso un linguaggio di
programmazione implica anche
(e soprattutto) scrivere come il nostro modulo deve
implementarla
(if else, switch,loop, polimorfismo,ecc...).
Gli algoritmi sono delle sequenze esplicite (scritte quindi dal
programmatore)
Riusciremo sempre a scrivere una logica corretta e robusta?
E le prestazioni? (es.complessit asintotica)
E se la logica cambia?
Sistemi Esperti VS Programmazione
Fonte:
http://www.codeproject.com/KB/work/Business_Rules_Systems.aspx
Logic and data separation
In un sistema esperto gli oggetti di dominio (fatti) contengono le
propriet distintive dell'oggetto(stato) La logica (i metodi di
business dei domain object) viene separata dall'oggetto e definita
attraverso un insieme di production rules.
Cross domain logic
Decentralizzare lo stato dalle regole permette di utilizzare da pi
oggetti, da controllers, uno stesso insieme di regole
Vi mai capitato di scrivere in pi parti del vostro progetto dei
metodi molto simili (a prescindere dal fatto che l'oggetto
su cui lavori sia di un tipo o di un altro tipo?
Non mentite!!!)
z
Sistemi Esperti VS Programmazione
Fonte:
http://www.ibm.com/developerworks/library/ar-busrules2/fig03.gif
Sistemi Esperti VS Programmazione
Open the box
Le regole possono essere gestite ed amministrate non solo dagli
sviluppatori e dagli architetti
ma addirittura dal cliente stesso (od altri stakeholders) concetto
di business ownership...
Se pensate che questa sia una limitazione al nostro lavoro pensate
invece alla possibilit di
creare sistemi con una lifetime e una flexibility estrema. E se il
sistema sta in piedi per tanto
tempo e bene,questa significa: fiducia, nuovi sviluppi, nuovi
scenari...
Business decisions are everywhere...why to hide them? Open to
changes
Cambiare, aggiungere, rimuovere regole di business diverso da
cambiare,aggiungere,
rimuovere dei metodi o accorgersi di dover stravolgere il design di
qualche modulo perch
ci hanno chiesto una change request...
Se la logica di business cambia velocemente un sistema esperto
basato su regole
pu diventare non solo una soluzione ma la soluzione.
Applicazione dei sistemi esperti
Un sistema esperto deve essere applicato per risolvere classi di problemi non banali e che non possono essere risolti con algoritmi e metodi tradizionali
La definizione sicuramente vera ed indubbio che molti problemi
possono essere solamente risolti con un sistema esperto...
ma...
Applicazione dei sistemi esperti
La logica pu anche essere non cos complessa ma soggetta
a numerosi cambiamenti (aggiunte,variazioni,potature)
Il business definito da un numero elevato di condizioni,
difficili da assemblare e da mettere insieme
Il business risiede in fonti diverse e difficili da integrare nel
codice in modo organico (fogli excel,procedure DBMS,metodi di
business infarciti di if..else, switch, loop)
Un sistema esperto apprende...molte condizioni che saremmo
costretti a scrivere nel codice nel tempo potrebbero venirci
gratis
Applicazione dei sistemi esperti
Calcolo
es. calcolo rate di un mutuo
Routing e Filtering
es. antispam instradamento di messaggi verso le destinazioni con le
migliori caratteristiche
Pianificazione e Schedulazione di risorse
es. creazione di piani efficienti di distribuzione della forza
lavoro in sistemi di WFM
Forecasting e Previsioning
es. andamento mercati finanziari, previsione del rischio in polizze
assicurative, analisi curve di traffico in sistemi di WFM per
prevedere una forza lavoro
Diagnosi mediche
Ricerca di itinerari e TSP (commesso viaggiatore)
Giochi
Applicazione dei sistemi esperti
We need to schedule matches between N teams while
respecting the following hard constraints:
Each team plays twice against every other team:
once home and once away.
Each team has exactly 1 match on each playing day.
No team must have more than 3 consecutive
home or 3 consecutive away matches.
No repeaters: no 2 consecutive matches of the
same 2 opposing teams.
Minimize the total distance traveled by all teams.
Il problema pu sembrare semplice ma non sono state trovate
soluzioni ottime anche per N piccoli!!!
Un TSP
Fonte:
http://blog.athico.com/
Alcune soluzioni battle proven:
http://mat.tepper.cmu.edu/TOURN
JBossRules/Drools 5
Chiariamo subito che JBossRules e Drools sono
la stessa cosa dal punto di vista dei moduli software.
Drools diventa JBossRules nella versione enterprise,
ovvero quando viene venduto all'utente finale con il
supporto RedHat e con il bug fixing incluso.
Come tutti i progetti JBoss, Drools sviluppato
interamente da committer all'interno della community
jboss.org
L'ultima release di Drools la 5.0 del maggio 2009
JBossRules/Drools 5
JBoss Community projects are
for individual developers who want to
integrate,
maintain and support their projects
themselves. JBoss Enterprise products are for
Enterprise Developers who are building
applications for businesses
and public sector institutions that are
planned to go into production or require
tested, integrated
software with certified patches and
updates, and/or SLA-based support
with a declared Support Policy
from Red Hat.
JBossRules/Drools 5
Drools 5 pu essere, senza essere troppo
pretenziosi, definito una vera rivoluzione.
Con Drools 5 non si parla pi solamente di BRMS ma di una
piattaforma unificata in cui trovano spazio un Rule Engine
(Expert), un BRMS (Guvnor), un Rules Workflow engine,BPM+Rules
(Flow), un Event Processing Engine driven by Rules (Fusion) e un
Solver
non ancora stata creata un img per il solver...
Con Drools 5 il BRMS diventa solo uno dei componenti di una piattaforma unificata e completa per realizzare sistemi esperti basati su regole...Una piattaforma di questo tipo denominata BLiP, Business Logic integration Platform
Drools Expert
Drools Expert un motore di regole (Rule Engine) con un motore
inferenziale di tipo forward chaining che sfrutta un
implementazione object-oriented dell'algoritmo Rete
Drools Expert permette quindi di realizzare sistemi esperti in cui
la base di conoscenza costituita da fatti e da un insieme di
business rules (o production rules).
Un software del genere viene classificato come Production Rule
System
Drools Expert costruito sulle specifiche JSR-94
JSR-000094 JavaTM Rule Engine API
Un Rule Engine di fatto il fondamento su cui si basano tutti gli altri moduli che costituiscono un BLiP (tra cui il BRMS, Drools Guvnor)
Drools Expert
Fonte Drools Official Documentation:
http://www.jboss.org/drools
Drools Expert: WorkingMemory
I fatti vengono immagazzinati in un'area denominata
WorkingMemory e non sono quindi parte della Knowledge Base
(ProductionMemory).
I fatti sono infatti legati ad una KnowledgeSession (pensate ad una
sessione Hibernate)
I fatti non sono altro che oggetti di dominio (pojo) e
rappresentano l'esperienza che un sistema esperto possiede ed
acquisisce rispetto ad un dominio su cui lavora e ragiona
In Drools Expert una sessione pu essere stateless (StatelessKnowledgeSession) o stateful (StatefulKnowledgeSession)
L'interfaccia WorkingMemoryEntryPoint fornisce i metodi di accesso alla WorkingMemory, in modo da poter manipolare i fatti (insert-update-remove)
Una WorkingMemory pu essere partizionata in modo tale da isolare
tipologie di fatti fra di loro
Drools Expert: WorkingMemory
Fonte Drools Official Documentation:
http://www.jboss.org/drools
Drools Expert: ProductionMemory
Un qualsiasi motore di inferenza per poter prendere delle
decisioni e compiere azioni deve confrontare
la sua esperienzadeterminata dai fatti con un insieme di
regole (Production Rules).
Questo processo viene chiamato Pattern Matching.
In Drools vengono caricate non solo regole ma anche
funzioni,processi,
type models
Le regole sono dei predicati espressi nella semplice forma:
when
then
Il business di un qualsiasi modulo software espresso attraverso
regole;
un linguaggio di programmazione tradizionale tende ad allontanarsi
e a realizzare in una forma diversa (sovra-struttura) un insieme di
requisiti condizione-azione
Drools Expert: ProductionMemory
Expert supporta la definizione di regole in Java, Python,
Groovy e MVEL. Si possono definire regole attraverso la definizione
di DSL!
Le regole possono risiedere in file *.drl, oppure possono venir
caricate da fonti esterne, diverse ed etereogenee (changeset
feature).
C' supporto per tutti i protocolli definiti in java.net.URL +
caricamento da classpath
Oltre a file *.drl possono venir caricate decision table in formato
*.xls (resource-type DTABLE), il contenuto di una
cartella,...
Drools Expert: ProductionMemory
Tutte le regole (ma anche eventuali processi, decision
tables)
formano la knowledge base (ProductionMemory), costruita in Expert
come
un vero e proprio repository.
I fatti non sono parte della base di conoscenza ma vengono inseriti
a partire da sessioni di lavoro creati da una base di conoscenza su
cui si vuole inferire qualcosa!
Costruire una knowledge base un processo che richiede risorse-->
cacharla quando possibile!
Drools Expert: ProductionMemory
Fonte Drools Official Documentation:
http://www.jboss.org/drools
Drools Expert: Pattern Matching
Torniamo al Pattern Matching...
Esistono due modalit con cui un motore inferenziale pu
ragionare
utilizzando regole: Forward Chaining e Backword Chaining
Drools Expert usa esclusivamente il meccanismo di Forward
Chaining!
Il Forward Chaining un meccanismo di ragionamento data-driven in
quanto il processo parte dai fatti...
Tra le regole di inferenza che applica quella basilare il modus
ponens
in logica... [(A --> B) A] --> B
FC cerca fra le regole finch non ne trova una che pu asserire come
vera eseguendone quindi la parte then
Sono i fatti iniziali che determinano quale insieme di regole FC
deve considerare.
La parte then pu tramutarsi in azioni, decisioni o aggiornamenti
sullo stato dei fatti.
Questo meccanismo continua finch un obiettivo prefissato viene
raggiunto.
Non detto che tutte le regole vengano scatenate! (anzi)
Drools Expert: Pattern Matching
Fonte Drools Official Documentation:
http://www.jboss.org/drools
Drools Expert: Rete
Expert come algoritmo di pattern matching di tipo forward
chaining usa Rete
Rete fu inventato e formalizzato dal Dott. Charles Forgy
Rete l'algoritmo pi famoso ed utilizzato dai motori di regole presenti al momento sul mercato... lo usa anche JRules di ILog Expert implementa una versione di Rete chiamata ReteOO ottimizzata per lavorare su oggetti
Per una spiegazione esaudiente di come lavora Rete (non abbiamo
tempo :-( )* Charles Forgy, "On the efficient implementation of
production systems." Ph.D. Thesis, Carnegie-Mellon University,
1979.* Charles Forgy, "Rete: A Fast Algorithm for the Many
Pattern/Many Object Pattern Match Problem", Artificial
Intelligence, 19, pp 1737, 1982
* RedHat Documentation
Drools Expert: Demo
Fatti: Ordini,Estratto Conto
Regole: Condizioni che il sito da cui compro applica sugli ordini
effettuati e da evadere. Le condizioni sono relative all'anno
2010Obiettivi/Azioni: Sapere quanto ho speso e quanti punti premio
ho accumulato
Stateless/Stateful: Stateless
Drools Expert: Demo
Nel caso di un ordine base, l'estratto conto del cliente deve
essere aggiornato addebitando il prezzo dell'oggetto comprato ed
incrementando il saldo punti fedelt
Nel caso di un ordine su un oggetto che prevede uno
sconto,l'estratto conto del cliente deve essere aggiornato
addebitando il prezzo dell'oggetto a cui viene applicata la % di
sconto ed incrementando il saldo punti fedelt
Nel caso di un ordine su un oggetto che prevede uno sconto e nel
caso in cui il cliente utilizzi per l'acquisto dei punti
fedelt,l'estratto conto del cliente deve essere aggiornato
addebitando il prezzo dell'oggetto a cui viene applicata la % di
sconto; il prezzo viene ulteriormente decrementato di una % di
sconto pari a 0.1% * il numero di punti utilizzati.
Il saldo punti deve essere incrementato secondo il valore
determinato da: punti previsti per l'oggetto punti fedelt
spesi
La spedizione tramite Corriere costa 4 euro, tramite Pacco Celere 3
euro, tramite posta prioritaria 2 euro
Drools Expert: Demo
Nel caso di un ordine base, l'estratto conto del cliente deve
essere aggiornato addebitando il prezzo dell'oggetto comprato ed
incrementando il saldo punti fedelt
Nel caso di un ordine su un oggetto che prevede uno
sconto,l'estratto conto del cliente deve essere aggiornato
addebitando il prezzo dell'oggetto a cui viene applicata la % di
sconto ed incrementando il saldo punti fedelt
Nel caso di un ordine su un oggetto che prevede uno sconto e nel
caso in cui il cliente utilizzi per l'acquisto dei punti
fedelt,l'estratto conto del cliente deve essere aggiornato
addebitando il prezzo dell'oggetto a cui viene applicata la % di
sconto; il prezzo viene ulteriormente decrementato di una % di
sconto pari a 0.1% * il numero di punti utilizzati.
Il saldo punti deve essere incrementato secondo il valore
determinato da: punti previsti per l'oggetto punti fedelt
spesi
La spedizione tramite Corriere costa 4 euro, tramite Pacco Celere 3
euro, tramite posta prioritaria 2 euro
Drools Expert: Demo
Plugin per Eclipse 3.4 (e superiori) per poter creare progetti
Drools
http://www.jboss.org/drools/downloads.html
http://anonsvn.jboss.org/repos/labs/labs/jbossrules/trunk
JSE 1.5.x
Componenti necessari:
- drools-core.jar: il rule engine di expert
- drools-compiler.jar: compilazione ed installazione delle regole
nella production memory - drools-api.jar: interfacce e
factoriesExtra:- drools-decisiontables.jar: compilatore per regole
inserite in file xls e csv
Bug: org.eclipse.jdt.core_3.5.1.v_972_R35x.jar va messo come
external jar
Drools Expert: Demo
Editor testaule e grafico
per creare business rule
Wizard per creare
Drools Project
Rules Debugging
Rules Code Assist
Eclipse View sui vari
componenti di Expert:
WorkingMemoryView
AuditView
AgendaView
Drools Expert: Demo
Rule Gui Editor
Drools Expert: Demo
package it.gmarigi.javaday2010.drools.rules
import it.gmarigi.javaday2010.drools.pojo.Ordine;import it.gmarigi.javaday2010.drools.pojo.Bilancio;
rule "acquisto base"when bilancio : Bilancio() Ordine(
$nomeOggetto:nomeOggetto, $prezzo : prezzo,
$puntiAcquisiti:puntiAcquisiti, puntiSpesi == null, scontoUsato ==
null)thenbilancio.aggiungiOrdine(
$nomeOggetto,$prezzo,$puntiAcquisiti);end
rule "acquisto con sconto"when bilancio : Bilancio() Ordine( $nomeOggetto:nomeOggetto, $prezzo : prezzo, $scontoUsato : scontoUsato, $puntiAcquisiti:puntiAcquisiti, puntiSpesi == null, scontoUsato != null)thenbilancio.aggiungiOrdine($nomeOggetto,$prezzo-(($prezzo*$scontoUsato)/100),$puntiAcquisiti);end
Ordini.drl
Drools Expert: Demo
rule "acquisto con sconto ed utilizzo punti"when bilancio : Bilancio() Ordine( $nomeOggetto:nomeOggetto, $prezzo : prezzo, $scontoUsato : scontoUsato, $puntiAcquisiti:puntiAcquisiti, $puntiSpesi:puntiSpesi, puntiSpesi != null, scontoUsato != null)then bilancio.aggiungiOrdine($nomeOggetto, $prezzo - (($prezzo*$scontoUsato)/100) (($prezzo*($puntiSpesi*0.1f))/100) ,$puntiAcquisiti-$puntiSpesi);end
rule "Spedizione Corriere"when $bilancio : Bilancio() Ordine(tipoSpedizione=="CORRIERE") then $bilancio.setSommaSpesa($bilancio.getSommaSpesa()+4f);end
rule "Spedizione Pacco Celere"when $bilancio : Bilancio() Ordine(tipoSpedizione=="PACCO CELERE") then $bilancio.setSommaSpesa($bilancio.getSommaSpesa()+3f);end
Drools Expert: Demo
rule "Spedizione Posta Prioritaria"when $bilancio : Bilancio() Ordine(tipoSpedizione=="POSTA PRIORITARIA") then $bilancio.setSommaSpesa($bilancio.getSommaSpesa()+2f);end
rule "Stampa Bilancio"salience -100when $bilancio : Bilancio() then System.out.println("\n\nBilancio di["+$bilancio.getNominativo()+"]\n\nSomma Spesa:"+ $bilancio.getSommaSpesa()+"(euro)\nPunti Accumulati:"+ $bilancio.getPuntiTotali() ); end
Il rule language di Drools molto potente e completo doc
ufficiale
Il simbolo $ fa s che la variabile sia utilizzabile anche nella
parte then di una regola
Il rule language molto java-oriented
L'azione definita nella regola "Stampa Bilancio" un azione
didattica;questa regola non propriamente una business rule
Drools Expert: Demo
//Creazione Working memory(Base di conoscenza)kbase = KnowledgeUtil.readKnowledgeBase();//Creazione sessioneksession = kbase.newStatefulKnowledgeSession();//Aggiunta event handlers alla sessione (auditing sui componenti del rule engine)KnowledgeUtil.addCustomListeners(ksession);//Logging su filelogger = KnowledgeRuntimeLoggerFactory.newFileLogger(ksession,"ordini");
/***********************CREAZIONE FATTI**********************************/Ordine ordine1 = new Ordine("RAM 2GB","15/03/2010",100f);ordine1.setPuntiAcquisiti(50);ordine1.setTipoSpedizione("CORRIERE");
........
Bilancio bilancio = new Bilancio();bilancio.setNominativo("Antonio Rossi");/**********************************************************************/
//Inserimento dei fatti nella working memoryksession.insert(ordine1);ksession.insert(ordine2);ksession.insert(ordine3);ksession.insert(ordine4);ksession.insert(bilancio);
//Pattern matching con tutte le production rulesksession.fireAllRules();
La sessione di lavoro valuter tutte le regole
sui fatti inseriti fireAllRules
Drools Expert: Demo
Dovendo valutare tutte le regole della production memory, per un
determinato
set di fatti possibile che esattamente tutte le regole definite
vengano
soddisfatte (con la conseguente azione associata)
Nel nostro caso quindi molto probabile che l'azione associata alla
regola Stampa Bilancio venga eseguita non per ultima! (e quindi non
sapremo il bilancio finale relativo ai nostri 4 ordini )
Quello che succede che esistono pi Activations che vanno in
conflitto fra di loro. Le activations vengono accumulate in un
modulo del Rule Engine chiamato
Agenda
Agenda deve avere una funzione che gli permette di risolvere i vari
conflitti fra regole e per poterli risolvere deve attuare una
determinata strategia
Drools Expert: Demo
rule "Stampa Bilancio"salience -100when $bilancio : Bilancio() then System.out.println("\n\nBilancio di["+$bilancio.getNominativo()+"]\n\nSomma Spesa:"+ $bilancio.getSommaSpesa()+"(euro)\nPunti Accumulati:"+ $bilancio.getPuntiTotali() ); end
Si pu istruire Agenda (e quindi suggerirle una strategia)
applicando una priorit di esecuzione sulle regole (salience)
Per default tutte le regole hanno un salience pari a 0.
Mettendo sulla regola "Stampa Bilancio" una salience negativa siamo
sicuri che l'azione di questa regola verr eseguita per ultima
Drools Expert: Demo
Vorrei che gli ordini siano stampati in ordine sulla base della
loro data di evasione...
Nella sessione vista avevano un motore inferenziale che non
aveva bisogno di aggiornare (e quindi acquisire esperienza) la sua
base di conoscenza con lo stato interno dei fatti!
Questa sessione era per natura una sessione stateless; sessioni
di
questo tipo vengono usate per decision service type scenarios
(StatelessKnowledgeSession)
Nella demo abbiamo usato una sessione
stateful(StatefulKnowledgeSession) solamente per poter sfruttare il
metodo fireAllRules()...ma la natura era stateless
Per garantire questo requisito il motore inferenziale deve
quantomeno poter ordinare sulla base della data evasione i fatti
che deve valutare...
questa inferenza!
Drools Expert: Demo
rule "Stampa Ordini" salience -100when $ordine : Ordine( $data : data) not Ordine( data < $data)then System.out.println("Ordine: "+$ordine); retract($ordine);end
La regola Stampa Ordine istruisce il motore di regole a rimuovere un fatto dalla WorkingMemory... in questo modo avremo una stampa degli ordini coerente con il requisito
Otterremo anche che al termine della valutazione di questa
regola la working memory non avr pi esperienza di alcun fatto (per
questo va eseguita per ultima altrimenti comprometterebbe le altre
regole di business)
Sulla WM si pu fare insert,update,retract
BRMS: Drools Guvnor
Il BRMS (Business Rules Management System) in
Drools 5 realizzato dal modulo Drools Guvnor
Un BRMS non altro che un ambiente (tipicamente una web-application) che permette di lavorare e di gestire set di business rules offrendo delle viste user friendly
Attraverso il BRMS il dominio e le regole su cui esso si basa,
vengono resi gestibili ed amministrabili da diversi stakeholders:
business analysts,developers,il cliente stesso.
Occorre anche individuare amministratori di un BRMS!
Guvnor permette di fare versioning delle regole (historicals
assets) e di organizzare le regole in categorie. Le regole in
Guvnor si chiamano Assets
Possono essere creati users con differenti ruoli sul BRMS
BRMS: Drools Guvnor
Guvnor una web-application (.war); pu essere
deployata su qualsiasi Application Server
http:///drools-guvnor
Usa come repository per gli assets e per tutti gli oggetti che
amministra Apache JackRabbit.
Per default il data store su file, potete comunque decidere di
mettere il repository su un qualsiasi RDBMS
Potete sincronizzare sul repository di Guvnor i progetti Drools che
create con Eclipse direttamente dall'IDE
Il Rule GUI Editor in Guvnor ha molte pi funzionalit di quello che
c' in Eclipse...
(non bisogna per forza essere degli esperti in scrittura di rules
per usare Guvnor )
BRMS: Drools Guvnor
BRMS: Drools Guvnor
BRMS: Drools Guvnor
BRMS: Drools Guvnor
Keep moving!
Drools 5
http://www.jboss.org/drools
Drools Official Blog
http://blog.athico.com
Drools Mailing Lists
http://www.jboss.org/drools/lists.html
Drools Wiki
http://community.jboss.org/wiki/JBossRules
JBoss User Group Roma
http://www.jbugroma.org
BRMS: Drools Guvnor
Grazie per aver assistito
al talk!!!
Giovanni Marigi gio.marigi at gmail.com JBoss User Group Roma
Javaday IV Roma 30 gennaio 2010