drools

1,956 views 43 slides Mar 23, 2012
Slide 1
Slide 1 of 43
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43

About This Presentation

drools


Slide Content

slide 1
Instituto de Inovação com TIC
Inovação é com a gente!
DroolsExpert-um framework gerenciador
de regras de negócio
Eduardo Araújo Oliveira ([email protected])
Anderson Neves ([email protected])

2

Drools
Oqueé?
Droolsisabusinessrulemanagement system
(BRMS)withaforwardchaininginferencebased
rulesengine,morecorrectlyknownasa
productionrulesystem,usinganenhanced
implementationoftheRetealgorithm.
3

Drools
-TheBusinessLogicintegrationPlatform
-5Módulosintegrados
-Desde2001
-JbosseRedHat
-OpenSource
-PluginparaEclipse
-http://www.jboss.org/drools
4

Drools -motivação
•Implementaferramentasparadecisõescomplexas
denegócio
•Problemasdosmétodostradicionais:
–If-else(Códigoespaguete)
–Alteraçõesgeralmenteprecisamderecompilaçãoeredeploy
–Nãoseparacódigodeinfraestruturadasregrasdenegócio
5

Drools -motivação
•Permite implementar a lógica de negócio de uma
maneira mais declarativa
•Separa o conhecimento do código de
infraestrutura
•Fornece diferentes ferramentas para cada tipo de
lógica de negócio
–Decisões a partir de dados
–Processos de negócio
–Decisões a partir de eventos
6

Drools
7

Drools
Totalmente integrável com Java
–Integraçãotransparenteatravésdeumplug-indo
Eclipse;
–PodelerclassesJavanascondiçõesdasregras;
–PodechamarmétodosdeJavanaaçãodasregras;
8

Drools
Vantagens
–Fácil entendimento
–Maior facilidade de manutenção
–Desempenho razoável
–Quantidade de regras vsperformance
–Requisitos traduzidos em regras
9

Drools
java
publicbooleaninvalidarMatricula(Aluno aluno) {
if(aluno.getIdade() < 18) {
aluno.getMatricula().setValida(false);
returntrue;
}
returnfalse;
}
drools
rule“Invalidar matricula aluno"
when
$aluno : Aluno(idade < 18)
then
$aluno. getMatricula().setValida(false);
end
10

Drools
Vantagens das regras
–Regras rodam em uma camada separada do código
nativo da aplicação
–Podem ser expressas em uma linguagem diferente, mais
natural (DSL)
–Facilidade de manutenção e leitura
–Introduz a possibilidade do próprio analista de negócios
realizar a autoria e manutenção das regras sabendo
exatamente como serão interpretadas pelo sistema
11

Drools
Desvantagens
–Requer uma curva de aprendizado
–Entender minimamente como funciona uma enginede
regras (máquina de inferência)
–As regras podem gerar recursão, que devem ser
tratadas pelo desenvolvedor
–Em casos de conflitos o desenvolvedor tem que escolher
qual tratamento usar
–Consumo de memória
12

Performance Characteristic
Sacrifices memory for speed
13

Drools License
•JBoss Rules -Apache License v.2.0
TheApachelicenseisparticularlybusiness-friendly,
andyoucantakethecodeanduseitinpretty
muchanywayyouwant,aslongasyou
acknowledgethatyourproductwas'builtusing
Drools'.Youdon'thavetopublishyourchanges
oradditions(asanotherfamous opensource
license,theGPL,requiresyoutodo).
14

Drools
Módulos
15

Drools
16
Enginede regras
Linguagem para regras (DRL)
Linguagem específica do domínio (DSL)
Integrado ao Java
Éomóduloprincipal,quecompreende
omotorderegraselinguagemde
regras.Raciocíniobaseadoemregras
http://www.jboss.org/drools/drools-expert.html

Drools
17
Workflows
BPMN
Editor gráfico do fluxograma
Extensível
Para criar, executar e monitorar processos de
negócio
Adicionaascapacidadesparalidar
comprocessosdenegócio
http://www.jboss.org/drools/drools-flow.html

Drools
18
Processamento de Eventos Complexos (CEP)
-Eventos no tempo
Integrado ao DroolsExpert
Para sistemas de:
–Detecção de fraudes
–Aprovação de crédito
Adicionacapacidadespararealizaro
CEP(Complex EventProcessing).
Decisõesapartirdeeventos
http://www.jboss.org/drools/drools-fusion.html

Drools
19
BRMS (não só regras)
Repositório centralizado do conhecimento
Aplicação Web
Versionamento
Foco nas regras de negócio
FerramentaparaGerênciadasregras
denegócio(BRMS).
http://www.jboss.org/drools/drools-guvnor.html

Drools
20
Problemas com restrições
Problemas como:
–Escalas de empregados
–Horário escolar
–Caixeiro viajante
http://www.jboss.org/drools/drools-fusion.html

Drools
21

Sistemas de Produção
•Fatos: x,y
•Regras:x & y => p
•Encadeamentoparaa frente(Forward
chaining)
–Dados x e y, derive entãop
•Encadeamentoparatrás(Backward
chaining)
–p é verdade? Entãoverificareix e y.
–Prolog

Módulos de Sistemas de Produção
•Base de Regras ou memória permanente
–regras se-então e fatos conhecidos
•Memória de Trabalho ou temporária
–percepções do agente, fatos iniciais e gerados a partir da
BR pelo mecanismo de inferência
•Mecanismo (motor) de Inferência
–determina o método de raciocínio utilizado (progressivo
ou regressivo)
–Executa a busca com casamento (unificação)
–resolve conflitos e executa ações.

Como funciona?
24

25slide 25
Como funciona?
•Working Memory -Memória de Trabalho
–É onde residem os fatos.
•Production Memory -Base de Conhecimento
–É onde reside todo o conhecimento de negócio (regras).
•Pattern Matcher -Reconhecedor de padrões
–Responsável por casar os fatos na memória de trabalho
com as condições das regras e criar ativações a partir
dos casamentos.
•Agenda
–Responsável pela ordenação das ativações para
execução.

Basic RETE Network
26

Conceitos Básicos
Fatos:
•São objetos que representam um determinado
estado do domínio
Regras de negócio
•Toda regra é representada por dois elementos
principais, seguindo a sintaxe:
quando
<condições (LHS)>
então
<ações (RHS)>

Conceitos Básicos
•Representam conhecimento com pares condição-
ação
–Secondição(ou premissaou antecedente) ocorre
entãoação(resultado, conclusãoou conseqüente)
deverá ocorrer.
•Regras de produção produzemnovos fatos a
partir dos fatos e regras da PM.
–Esses novos fatos passam a fazer parte da WM
–Novas regras da PM podem ser disparadas
•Lógica de primeira ordem

DroolsExpert-Conceitos Básicos
package bank.model;
rule "basic rule"
when // condition
Account( balance < 100 )
then // consequence
System.out.println("Account balance is less than
100");
end

DroolsExpert-Conceitos Básicos
O package funciona como um namespace
–Nomes de regras em um pacote tem que ser
únicas
basic rule é o nome da regra
when indica a condição (premissa)
–LHS (Left Hand Side)
then indica a consequência da regra
–RHS (Right Hand Side)
// é usado para comentários

DroolsExpert-Conceitos Básicos
Várias condições
Account( balance == 200 )
Customer( name== "John" )
Variáveis nas regras
$account: Account( $type: type)
Tipos
–String
Customer( namematches "[A-Z][a-z]+" )
–Date
Account( dateCreated> "01-Jan-2008" )
–Boolean
Transaction( approved== true)
–Enum
Account( type== Account.Type.SAVINGS )
Comentários
#Comentário de única linha
//Comentário de única linha
/*Comentário de
várias linhas*/

DroolsExpert-Conceitos Básicos
Imports
importcom.mycompany.mypackage.MyClass;
importcom.mycompany.anotherPackage.*;
Variáveis Globais
Funções
functiondoublecalculateSquare(doublevalue) {
returnvalue* value;
}
Condição da regra
–And
Customer( name== "John", age < 26 )
–Or
Customer( name== "John" ||age < 26 )
Customer( age < 26 ||> 70 )
–Not
notAccount( type== Account.Type.SAVINGS )
–Exists
existsAccount( type== Account.Type.SAVINGS )

DroolsExpert-Conceitos Básicos
Quandotodasascondiçõesdeumaregrasão
satisfeitas,aregraéativada
Umaregraativadaédisparada,segundoa
estratégiaderesoluçãodeconflito
Aexecuçãodasregraspodemativaroutrasregras
Oprocessoérepetidoatéquenenhumaregraseja
ativada

DroolsExpert-Conceitos Básicos
Alguns comandos usados na consequênciada regra
–update(objeto);
–insert(newObjeto());
–insertLogical(newObjeto());
–retract(objeto);
–drools.halt();
–drools.getRule().getName();
–kcontext.getKnowledgeRuntime().halt();
http://www.ibm.com/developerworks/java/library/j -drools/

DroolsExpert-Conceitos Básicos
Alguns atributos das regras
–salience(prioridade)
Default é 0
salience100
–no-loop
–date-effective
date-effective"01-Jan-2011”
–date-expires
date-expires "01-Jan-2011"
–duration
duration3000
http://www.ibm.com/developerworks/java/library/j -drools/

Exemplos
36
HelloWorld

Exemplos
37

Exemplos
38

DSL
DomainSpecificLanguages
Omotorderegraspossuiumapoderosamaneirade
mapearsualinguagemnativa,expressanosdrl's,
parauma linguagem maisnatural,como
mostradanosprimeirosexemplos.
Estemapeamento sedáatravésdasDomain
SpecificLanguages,oudsl's.
dsl´ssãoexpressasemarquivos.dsl,comuma
sintaxebastantesimples,bemparecidacomum
arquivo.properties
39

DSL
DomainSpecificLanguagesporexemplo:
[keyword]rule=regra
[keyword]when=quando
[keyword]then=então
[keyword]end=fim
[when]OAlunoemquestãopossui=a:Aluno($pf:
pessoaFisica)pf:PessoaFisica($p:
pessoa)from$pfp:Pessoa($dataNasc:dataNascimento,
$nome:nome)from$p
[when]- idade menor que {idadeMinima}=eval(
subtraiData(dataAtual,$dataNasc)<
{idadeMinima})
[then]Invalidarmatrícula=mensagemMenorDeIdade ($nome);
a.getMatricula().invalidar();
40

DSL
Aregraanteriorpoderiaserreescritadaseguinte
maneira:
regra"devesermaiordeidade"
salience0
ruleflow-group"validacao"
quando
Oalunoemquestãopossui
-idademenorque18
então
Invalidarmatrícula
fim
41

Exemplos
http://imasters.com.br/artigo/12444/desenvolvimento/d
e_forca_ao_usuario_com_o_drools_parte_1/
http://imasters.com.br/artigo/12708/java/de_forca_ao_
usuario_com_drools_parte_2/
http://imasters.com.br/artigo/15646/desenvolvimento/d
e-forca-ao-usuario-com-drools-parte-03/
códigos:
http://diegopacheco.svn.beanstalkapp.com/sandbox/trunk/
JBossDrools-test/src/com/blogspot/diegopacheco/drools/
42

perguntas ???
Eduardo Araújo Oliveira ([email protected])
Anderson Neves ([email protected])