business rules com drools

29
Business Rules com Drools Rafael Liu JBoss Consultant

Upload: rafaelliu

Post on 25-May-2015

1.119 views

Category:

Technology


1 download

DESCRIPTION

The Developer's Conference 2011 São Paulo, 08/07/2011 e Goiânia, 30/10/2011

TRANSCRIPT

Page 1: Business Rules com Drools

Business Rulescom Drools

Rafael LiuJBoss Consultant

Page 2: Business Rules com Drools

Agenda

Intro drools Demo

Demo Drools Expert

Drools Expert Drools Guvnor

Drools Guvnor Mais demo!

Mais demo! Perguntas?

Page 3: Business Rules com Drools

JBoss Drools

Images copyright http://www.drools.com

● Business Logic Integration Platform (BLiP)

● Open Souce!!

Page 4: Business Rules com Drools

JBoss Drools

Images copyright http://www.drools.com

● Business Logic Integration Platform (BLiP)

● Open Souce!!

Planer

Page 5: Business Rules com Drools

JBoss Drools

Images copyright http://www.drools.com

● Business Logic Integration Platform (BLiP)

● Open Souce!!

Fusion

Page 6: Business Rules com Drools

JBoss Drools

Images copyright http://www.drools.com

● Business Logic Integration Platform (BLiP)

● Open Souce!!

Flow/jBPM

Page 7: Business Rules com Drools

JBoss Drools

Images copyright http://www.drools.com

● Business Logic Integration Platform (BLiP)

● Open Souce!!

Expert

Page 8: Business Rules com Drools

JBoss Drools

Images copyright http://www.drools.com

Guvnor

● Business Logic Integration Platform (BLiP)

● Open Souce!!

Page 9: Business Rules com Drools

Images copyright http://www.drools.com

Page 10: Business Rules com Drools

Business Rule Engines

● Por que / quando?● Desacoplamento● Linguagem própria● Otimizações

● Como?● Regras● Fatos● Inferência (Truth Maintenance)

Page 11: Business Rules com Drools

Business Rule Engines

Page 12: Business Rules com Drools

Drools Expert

● POJO● ReteOO● MVEL● JSR-94● Várias formas de definir regras

● Drools Rule Language● Domain Specific Language Rules● Decision Tables

Page 13: Business Rules com Drools

Linguagem (DRL)

rule "<nome>"

[atributos]

when

[bloco]

then

<bloco>

end

Page 14: Business Rules com Drools

Exemplo 1

rule "Duh"

when

then

System.out.println( "Hello World" );

end

Page 15: Business Rules com Drools

Exemplo 2

rule "Blitz"

when

Motorista( idade < 18 )

then

System.out.println( "Crime!" );

end

Page 16: Business Rules com Drools

Exemplo 3

rule "Blitz"

when

$m: Motorista( idade < 18 )

then

insert( new Notificacao( $m ) );

end

Page 17: Business Rules com Drools

Exemplo 4

rule "Infracao"

when

$i1: Notificacao( $m : motorista )

$i2: Notificacao( this != $i1,

motorista == $m )

then

insert( new Infracao( $m ) );

end

Page 18: Business Rules com Drools

Exemplo 5

rule "Crime"

when

$m : Motorista( )

Number ( intValue > 20 ) from accumulate (

$i : Infracao( motorista == $m ),

sum( $i.getPontos() ) )

then

$m.setHabilitado( false );

end

Page 19: Business Rules com Drools

API

Page 20: Business Rules com Drools

Stateful? Stateless?

λ StatefulKnowledgeSession

Page 21: Business Rules com Drools

Stateful? Stateless?

λ StatelessKnowledgeSession

Page 22: Business Rules com Drools

API

KnowledgeBuilder kb = KnowledgeBuilderFactory.newKnowledgeBuilder();

kb.add( ResourceFactory.newClassPathResource("my.drl"), ResourceType.DRL );

if ( kb.hasErrors() ) {

throw new RuntimeException( "Compilation error.\n" + kb.getErrors().toString() );

}

KnowledgeBase kbase = kb.newKnowledgeBase();

Page 23: Business Rules com Drools

API

StatefulKnowledgeSession kession = kbase.newStatefulKnowledgeSession();

kession.insert( new Motorista(15, Estado.BEBADO) );

kession.insert( new Motorista(21, Estado.BEBADO) );

kession.insert( new Motorista(35, Estado.SOBRIO) );

kession.fireAllRules();

StatelessKnowledgeSession kession = kbase.newStatelessKnowledgeSession();

kession.execute( Arrays.asList(

new Motorista(15, Estado.BEBADO),

new Motorista(21, Estado.BEBADO),

new Motorista(35, Estado.SOBRIO) ));

ou então...

Page 24: Business Rules com Drools

Images copyright http://www.drools.com

Page 25: Business Rules com Drools

Business Rule Management System

● Definição (wikipedia):● Repositório● Tooling● Runtime

● Por que / quando?● Aproximação de SMEs● Gerenciamento de business rules● Ponto único de verdade (consistência)

Page 26: Business Rules com Drools

Drools Guvnor

● Repositório● Authoring● Colaboração● Versionamento● Testes● Snapshots● Organização

Page 27: Business Rules com Drools

The full picture

Page 28: Business Rules com Drools

Ganhos● Declarativo, não imperativo

● Maior expressividade● Melhor visualização

● Separação da lógica do sistema● Maior interatividade● Dinamicidade

● Centralização● Administração

Page 29: Business Rules com Drools

Obrigado!

Contato: @rafaelliu http://rafaelliu.net

Referência: http://jboss.org/drools http://blog.athico.com