Mais conteúdo relacionado Semelhante a En 20 minutos ... Charla drools (20) Mais de Sección de Metodologías, Normalización y Calidad del Software (6) En 20 minutos ... Charla drools1. © 2015. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Introducción a Drools
Antonio Mendoza Pérez
amendoza@um.es
Grupo JUSTO/GINVEST
Proyecto e-Lara
2. © 2015. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
¿Qué es una regla de negocio?
>> qué tiene que pasar bajo determinadas circunstancias.
Aplicar 20% de
descuento en pedido
a cliente VIP
>> nuestras aplicaciones están repletas de reglas de este tipo.
Enviar bono descuento
si realiza más de tres
pedidos en 48h
3. © 2015. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
¿Qué es Drools?
http://drools.org/
4. © 2015. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Proyecto KIE
Proyecto maven + kmodule.xml
Entidades, conectores, utilidades...
Reglas y procesos.
Configuración.
5. © 2015. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
¿Dónde escribimos las reglas?
*.drl
*.dslr
*.xls
package
imports
consultas
reglas
6. © 2015. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Hello World!!
- 2 partes, condición (LHS) y consecuencia (RHS);
- defino variables que puedo utilizar tanto en la parte LHS como en RHS;
- accedemos directamente al valor de la variable nombre.
LHS
RHS
7. © 2015. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Hello World – V2!!
- el orden no importa;
- el motor reacciona a los cambios en los datos (insert, modify,
retract).
Test:
cliente.setNombre("Antonio");
ksession.insert(cliente);
Salida de consola:
2015-04-09 16:22:37 DEBUG -
Cambiando nombre a ANTONIO
2015-04-09 16:22:37 INFO -
Hola ANTONIO !!
8. © 2015. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Métodos vs. Reglas
Métodos:
- son invocados directamente;
- pasando instancias específicas;
- una invocación da lugar a una ejecución.
Reglas:
- no pueden ser invocadas directamente;
- no se pueden pasar instancias específicas;
- las reglas se ejecutan por coincidencias contra
los datos que hay en el motor;
- dependiendo de estas coincidencias, una regla
puede ser ejecutada una, muchas o ninguna vez.
http://docs.jboss.org/drools/release/6.2.0.Final/drools-docs/html_single/index.html#d0e4324
9. © 2015. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Atributos
●
no-loop
●
lock-on-active
●
salience
●
agenda-group
●
auto-focus
●
ruleflow-group
●
activation-group
●
dialect
●
date-effective
●
date-expires
●
enabled
●
duration
- los atributos nos permiten guiar el comportamiento de las reglas.
10. © 2015. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Operadores y elementos
condicionales
●
in, not in
●
&&, ||
●
>, <, =...
●
contain, not contains
●
! (null-safe)
●
memberOf , not
memberOf
●
...
●
and, or
●
not, exists
●
forall
●
from
●
collect
●
accumulate
●
...
Agrupa las lineas que cumplen una condición;
crea una lista;
Asigna el valor a la variable $lineasPedido.
11. © 2015. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Operadores y elementos
condicionales
●
in, not in
●
&&, ||
●
>, <, =...
●
contain, not contains
●
! (null-safe)
●
memberOf , not
memberOf
●
...
●
and, or
●
not, exists
●
forall
●
from
●
collect
●
accumulate
●
...
Agrupa las líneas de un pedido y calcula el importe
total como la suma de los importes =
(cantidad * percioUnidad).
12. © 2015. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Join ('Cross Products')
Select pedido.* from pedido, cliente
where pedido.clienteId = cliente.id and cliente.tipo = “VIP"
13. © 2015. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
¿Qué es un evento?
>> es un cambio de estado en un dominio concreto en un
momento determinado.
●
Inmutable.
●
Contiene información temporal.
• Momento en que se produce
• [Duración del evento]
●
Contiene información relacionada con el cambio de estado.
Ejemplos:
●
PedidoPagado(pedidoId, clienteId, timestamp)
●
PedidoEntretado(pedidoId, clienteId, timestamp)
14. © 2015. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
¿Cómo genero un evento?
15. © 2015. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Operadores temporales
●
after
●
before
●
coincides
●
during
●
finishes
●
finished By
●
includes
●
meets
●
met By
●
overlaps
●
overlapped By
●
starts
●
started By
Si para un evento del tipo PedidoEntregado(pedidoId, clienteId)
no se ha generado un evento del tipo
PedidoPagado (pedidoId, clienteId) en las dos siguientes horas.....
16. © 2015. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
'Sliding windows'
Time sliding windows 'Lengh sliding windows'
17. © 2015. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
'Sliding windows'
Time sliding windows
Dado un cliente, si los pedidos entregados en
tres días son >= tres...
18. © 2015. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
reglas + eventos + procesos
(expert + fusion + jBPM)
PedidoEntregadoPedidoEntregadoPedidoEntregado
< 3d
19. © 2015. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Oficial:
●
http://drools.org/
Blogs:
●
http://blog.athico.com/
●
http://salaboy.com/
●
kverlaen.blogspot.com
●
mswiderski.blogspot.com/
Libros:
●
Instant Drools Starter
●
Drools JBoss Rules 5.X Developer’s Guide
●
Drools Developer's Cookbook
Referencias
20. © 2015. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Gracias
Introducción a Drools