JavadayIV - A look Inside JBoss Rules

download JavadayIV - A look Inside JBoss Rules

If you can't read please download the document

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