Download - En 20 minutos ... Charla drools
© 2015. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
Introducción a Drools
Antonio Mendoza Pé[email protected] JUSTO/GINVESTProyecto e-Lara
© 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
© 2015. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
¿Qué es Drools?
http://drools.org/
© 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.
© 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
© 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
© 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 !!
© 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
© 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.
© 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.
© 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 importetotal como la suma de los importes =(cantidad * percioUnidad).
© 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"
© 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)
© 2015. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
¿Cómo genero un evento?
© 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.....
© 2015. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
'Sliding windows'
Time sliding windows 'Lengh sliding windows'
© 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...
© 2015. Área de las Tecnologías de la Información y las Comunicaciones Aplicadas.
reglas + eventos + procesos(expert + fusion + jBPM)
PedidoEntregadoPedidoEntregadoPedidoEntregado
< 3d
© 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