lino vázquez – pjas at cern gs-ais-hr. declarative programming rules rules engines rete...

53
Introduction to Rules Engines & Drools Lino Vázquez – PJAS at CERN GS-AIS-HR

Upload: ferdinand-mcgee

Post on 23-Dec-2015

218 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

Introduction to Rules Engines& Drools

Lino Vázquez – PJAS at CERNGS-AIS-HR

Page 2: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

Declarative programmingRulesRules EnginesRete algorithmWhy use rules enginesDrools

Agenda

Page 3: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

Declarative programming

Page 4: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

Decribe the “what” instead of the “how”

Define the problem, give some conditions and let the system do the rest

Declarative programming

Page 5: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

In imperative programming we provide the logic and the control in an algorithm

Implicit sequence

In declarative programming we provide logic and we leave the control to the system

Sequence is “irrelevant”

Declarative programming

Page 6: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

Imperative programming

1. Check the battery level of your cellphone

2. If battery is low, go to the bedroom and get the charger from the desk

Declarative programming

Page 7: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

Declarative programming

◦ If low level of batteryGet a charger

◦ If need a chargerGet it from the desk

◦ If need something from the deskGo to the bedroom

Declarative programming

Page 8: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

What is a rule?

Page 9: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

Drools 6.0 user’s manual:

A Production Rule is a two-part structure to infer conclusions which result in actions.

What is a rule?

Page 10: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

A rule is an If – Then where the “then” part is an action over knowledge

What is a rule?

Page 11: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

The condition is usually simple (Properties of a POJO)

The consequence is a modification of the knowledge, adding more knowledge or ereasing knowledge.

Facts fire rules and consequences work on them

What is a rule?

Page 12: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

What is a rule engine?

Page 13: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

Pattern matcherSystem that matches facts against rules

What is a rule engine?

Page 14: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

The matching is performed by the “Inference engine” using an algothim (Rete)

What is a rule engine?

Page 15: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

Forward & Backward chaining

Page 16: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

Forward chainning – Data driven

Backward chainning – Goal driven

Forward & Backward chaining

Page 17: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

Rules enginesArchitecture

Page 18: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

Rule base

Inference engine

Working memory

Architecture

Page 19: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

ProductionMemory

(Rules)

WorkingMemory

(Facts)

Inference Engine

PatternMatcher

Agenda

Architecture

Page 20: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

Rule engine flow

Exit

Agenda evaluation

Select rule

Fire rule

Add

Delete

Edit

Activate possible rules

No rules

Inject facts

Page 21: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

WorkingMemory

(Facts)

Inference Engine(Rete / Leaps)

PatternMatcher

ProductionMemory

(Rules)

Agenda

Agenda

Page 22: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

Rule 1

Rule 2

Rule 3

Rule 4

Rule 5

Rule 6

Rule 7

Rule 1

Rule 2

Rule 3

Rule 4

Rule 5

Rule 6

Rule 7

Rule 1

Rule 2

Rule 3

Rule 4

Rule 5

Rule 6

Rule 7

Rule 1

Rule 2

Rule 3

Rule 4

Rule 5

Rule 6

Rule 7

FactsFacts

*

Agenda

Page 23: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

Rule 1

Rule 2

Rule 3

Rule 4

Rule 5

Rule 6

Rule 7

Rule 1

Rule 2

Rule 3

Rule 4

Rule 5

Rule 6

Rule 7

Rule 1

Rule 2

Rule 3

Rule 5

Rule 6

Rule 7

Rule 1

Rule 2

Rule 3

Rule 4

Rule 5

Rule 6

Rule 7

FactsFacts

*Rule 4

Agenda

Page 24: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

Rule 1

Rule 2

Rule 3

Rule 4

Rule 5

Rule 6

Rule 7

Rule 1

Rule 2

Rule 3

Rule 4

Rule 5

Rule 6

Rule 7

Rule 1

Rule 2

Rule 3

Rule 5

Rule 6

Rule 7

Rule 1

Rule 2

Rule 3

Rule 4

Rule 5

Rule 6

Rule 7

Facts Rule 4

Agenda

Page 25: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

WorkingMemory

(Facts)

Inference Engine(Rete / Leaps)

PatternMatcher

ProductionMemory

(Rules)

Agenda

Pattern matcher

Page 26: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

If a person is 18 years old or older and less than 65, is an adult

If a person is an adult, we issue an adult ID card

Person (age >= 18, age < 65)

Person (isAdult == true)

Pattern matcher

Page 27: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

Person (age >= 18, age < 65)

Pattern matcher

Pattern

Type Constrain

Field Restriction

Evaluator Value

Page 28: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

Rete algorithm

Page 29: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

Since 1975

Independent of the number or rules

Heavy memory use

Rete algorithm

Page 30: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

Rule 1: If a new costumer spends more than 100€ and is his birthday, gets a 20% discount

Rule 2: If a new costumer spends more than 100€, gets a 10% discount

Rete algorithm

Page 31: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

New Costumer

More than 100

Birthday

Rule 1*

Rule 2

Rule 1

New Costumer

More than 100

Page 32: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

New Costumer

More than 100

Birthday

Rule 1*

Rule 2

Rule 1

Page 33: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

New Costumer

More than 100

Birthday

Rule 1*

Rule 2

Rule 1

Page 34: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

Why use a rule engine?

Page 35: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

When to use a rule engine?

Page 36: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

Your logic involves significant decision-making You can write decision rules for your logic Your logic is complex (3 or more nested if-

statements) Your logic needs to be flexible

◦ During development◦ After development

Execution speed is not your main goal You want domain experts to review/maintain the

logic

When to use a rule engine?

Page 37: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools
Page 38: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

Born in 2001

Rete algorithm

Bought by Red Hat in 2005

Last stable version 6.1

Drools

Page 39: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

If a person is 18 years old or older and less than 65, is an adult

If a person is an adult, we issue an adult ID card

Person (age >= 18, age < 65)

Person (isAdult == true)

Drools syntax

Page 40: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

when $p : Person (age >= 18, < 65)then modify ($p){

setIsAdult(true) }end

If a person is 18 years old or older and less than 65, is an adult

Drools syntax

Page 41: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

Features

Page 42: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

when $p : Person (isAdult == true)then logicalInsert(new IdCard($p,‘Adult’); end

If a person is an adult, we issue an adult ID card

| Features

Truth Maintenanc

e

Page 43: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

Conditional Elements

◦ not Person( age >=18)

◦ exists Person( age >=18)

◦ forall (Person( age >=18))

| Features

Page 44: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

Keyword ‘from’

when $p : Person( zipcode== “1205”) Car( color == “red” ) from $p.cars

when $z : ZipCode()

Person() from $hbn.getQuery(“FindPeople”).setParameters([“zipCode” :

$z]).list()

| Features

Page 45: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

Keyword ‘collect’

when $list : List( intValue > 100)

from collect (Person(age >= 18))then

print “People“ + $list;end

| Features

Page 46: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

Keyword ‘accumulate’

when $sum : Number( intValue > 100)

from accumulate (Person(age >= 18, $s : savings ) sum

($s))then

print “Total savings “ + $sum;end

| Features

Page 47: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

Timers & Calendars◦ Delays and Intervals◦ Cron

Time operators◦ before, after, coincides, overlaps, during…

Time windows+aggregations (Keyword ‘over’)

| Features

Page 48: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

rule “High number of orders” when   Number( nbOrders : intValue > 100 )

from accumulate(           e: PlaceOrderEvent(session.storeId == “00001”)                          over window:size(12h),                    count(e) )then   System.err.println( "WARNING: Number of orders in

the last 12 hours > 100: " + nbOrders );end

| Features

Page 49: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

Drools at CERN

Page 50: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

Article II 1.01Retirement AgeThe retirement age shall be as follows:

a) For members who joined the Fund on or before 31December 2011, 65 years;

b) For members who joined the Fund on or after 1 January 2012, 67 years.

Drools at CERN

Page 51: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

Rule “Retirement age” when

$m : Member()JoinedFund(member == $m,

date <= “31 –Dec-2011”)then

insert(new RetirementAge($m, 65)

Drools at CERN

Page 52: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools

Thank you

Page 53: Lino Vázquez – PJAS at CERN GS-AIS-HR.  Declarative programming  Rules  Rules Engines  Rete algorithm  Why use rules engines  Drools