buenos aires drools expert presentation

Download Buenos Aires Drools Expert Presentation

If you can't read please download the document

Upload: mark-proctor

Post on 16-Apr-2017

2.466 views

Category:

Technology


0 download

TRANSCRIPT

The SkyNet funding bill is passed.

The system goes online on August 4th, 1997.

Human decisions are removed from strategic defense.

SkyNet begins to learn at a geometric rate.

It becomes self-aware at 2:14am Eastern time, August 29th

In a panic, they try to pull the plug.

And, Skynet fights back

Mark ProctorProject Lead

Drools Vs BRMS

Drools
Grid

Drools
Planner

Drools
Semantics

Drools
Chance Business Logic integration System

Drools
Guvnor

Drools
Fusion

jBPM5(Drools
Flow)

Drools
Expert

RepositoryRules and MetadataJBoss Enterprise BRMS Platform

JBoss RulesRules Engine/ Execution

Rules Development & Management

CEPComplex Events

Jboss EWP

Drools Vs BRMS

derived Stand-alone Framework

Innovation

Fast and Frequent Releases

Tested on developer environments

Suitable for development and prototype

No Patches On to next big thing

Non SLA bound forum support

Fully Integrated Platform

Same Innovated Code + Stability

Stability Includes usability, performance and security issues identified during productization

Certified for Multi-OS, Multi-DB

Best for Development and Production

5 Yr lifecycle Includes patches, updates, backward compatibility

SLA based full support from dedicated support engineers

Open Source Assurance legal protection

JBoss Community & Enterprise Changes

Community / Enterprise Platform Delta

BRMS

5.0

5.1

5.1.0 Drools

Enterprise Platforms - Performance, Scalability, Security and Qualityimprove over time without
compromising long-term compatibility.

08/0912/1003/1105/11

44 bug fixes

8 perf. enhancements

6 security fixes

3 new features

41 bug fixes

4 security fixes

2 additional certs.

22 bug fixes

11 perf. enhancements

60 additional certs.

4 new features

5.1.05.1.1

Over 150+ defect fixes & 35+ OS/JVM/DB certifications (& counting) between Drools Community 5.1 & JBoss BRMS 5.1.x

150+ bug fixes

5 Security Fixes

5+ perf. enhancements

20+ additional certs.

Post GA Certs

15+ additional certs.

15+ bug fixes

Additional certs

Example release/support life cycle, highly simplified (not a roadmap) Multiple Community projects develop their own respective versions

Enterprise Platforms typically integrate many projects

Diagram = binary releases only (all source is public; source version of this diagram would be much more complex)

Community projects are always evolving

Major/minor releases that are annual/quarterly

Milestone releases that are approx. monthly

Community releases are always being evaluated for functional, performance, quality standards for inclusion in a Platform

Many Community releases are skipped over due to deficiencies

e.g. AS5.0 didn't meet perf/stability, so EAP waited for AS5.1; AS6.0 probably will not meet criteria

EAP alpha+beta+GA productization cycle follows Community AS Final release by 2-6 months

During EAP productization period, many Community members move on to work on next release (new features) of Community projects

For a given EAP release, support cycle lasts for 7 years

Full support (4 yrs) support + enhancements + patch releases

Transition (1 yr) support + patch releases

Maintenance (2 yrs) support + security patches only

Evolution of JBoss BRMS

Drools Framework05/08 04/09 12/10 ?

?

Lightweight Business Rules Engine

Business Rules Engine

Authoring and Management App

Repository

EAP Certified

DBs, JVMs

Business Rules Engine

Authoring and Management App

Choice of Repository

Integrated Container

CEP Tech Preview

EAP, EWS, EWP, JVMs, Dbs and more

Performance

Repository

JBoss Enterprise BRMS Platform 5.0

JBoss Rules

BRM

Repository

JBoss Enterprise BRMS Platform 5.1

JBoss Rules

BRM

CEP

Jboss EWPExample release/support life cycle, highly simplified (not a roadmap) Multiple Community projects develop their own respective versions

Enterprise Platforms typically integrate many projects

Diagram = binary releases only (all source is public; source version of this diagram would be much more complex)

Community projects are always evolving

Major/minor releases that are annual/quarterly

Milestone releases that are approx. monthly

Community releases are always being evaluated for functional, performance, quality standards for inclusion in a Platform

Many Community releases are skipped over due to deficiencies

e.g. AS5.0 didn't meet perf/stability, so EAP waited for AS5.1; AS6.0 probably will not meet criteria

EAP alpha+beta+GA productization cycle follows Community AS Final release by 2-6 months

During EAP productization period, many Community members move on to work on next release (new features) of Community projects

For a given EAP release, support cycle lasts for 7 years

Full support (4 yrs) support + enhancements + patch releases

Transition (1 yr) support + patch releases

Maintenance (2 yrs) support + security patches only

Back Up

JBoss Community vs. Enterprise (another view of differences, similar to previous slide but with a few more details)

Security Errata

Certifications

Out-of-the-box experience (e.g. configurations)

Management/monitoring tools

Software assurance / legal protection

Agenda

Community

History

Declarative Programming

Drools ExpertQuick Example Stateless/Stateful

Conditional elements

Timers and Calendars

Truth maintenance and Inference

Backward chaining

Roadmap

Sample Industries and Users

InvestmentMillennium Investment Group (MIG)

LogisticsFedex

AirlineSabre

MortgageFranklin American

HealthcareOSDE

Boot Camps

San Francisco 2009 (40+ attendees)Sponsored by Third Pillar

Sun, FAMC, OSDE, Kaseya, Fedex, TU Group, Intermountain Healthcare, Gap, Sony Pictures, Lockheed Martin, Kaiser, HP, Wells Fargo, US Navy Research, FOLIOfn, Boeing .....

San Diego 2010 (80+ attendess)Sponsored by US Navy

5 day event, with 2 days focus on the healthcare industry

OSDE, AT&T, SAIC, US Navy Research, Kaiser, Clinica, Intermountain Healthcare, GE Healthcare, VA, Boeing, Nationwide ....

Books

Introduction to Expert SystemsPeter Jackson

Expert Systems, Principles and ProgrammingJoseph C. Giarratano and Gary D. Riley

Oh And There are Drools Books Too

Agenda

Community

History

Declarative Programming

Drools ExpertQuick Example Stateless/Stateful

Conditional elements

Timers and Calendars

Truth maintenance and Inference

Backward chaining

Roadmap

It All Started Here
Birth of CDSS

DendralBaobabMycinGuidonNeomycinTeiresiasPuffEmycinWMSaconCentaurWheezeGravidaClot

Oncocin

1970s

1980s

Because Not Everyone
Is As Smart As He Is

Business Rules Engines

OPS5ARTClipsJessDrools 2JRules

1980s

2010s

Drools 3

1990s

2000s

Drools 4Drools 5

Drools History

Drools 2Rete like XML Scripting language

Drools 3 Based on Clips functionality

Iterative improves to JRules syntax with Clips functionality

Drools 4More declarative

Basic functional programming feature with from

Basic Rule Flow

Basic BRMS

Drools 5Improved functional programming with 'accumulate'

More Advanced Rule Flow integration

Complex Event ProcessTemporal Comparators

Sliding Time Windows

Production ready BRMS (Guvnor)

Drools History

Drools 5.1Differential Diff (true modify)

Drools 5.2 (this month)Freeform expressions between patterns

Multi-function accumulates

Prolog like derivation queries

Decision tables and rule templates (Guvnor)

Pure GWT (Guvnor)

Agenda

Community

History

Declarative Programming

Drools ExpertQuick Example Stateless/Stateful

Conditional elements

Timers and Calendars

Truth maintenance and Inference

Backward chaining

Roadmap

Integrated Systems

Semantic
OntologiesRulesEventProcessesWorkflowsRules Workflows

EventProcesses

Semantic
Ontologies

Integrated Systems

Drools
Grid

Drools
Planner

Drools
Semantics

Drools
Chance Business Logic integration System

Drools
Guvnor

Drools
Fusion

JBPM5(Drools Flow)

Drools
Expert

Declarative Programming

Production Rule Systems PRD (forward chaining)Reactive

when Alarm( status == alert )
then send( warning )

Logic Programming LP (backward chaining)Query

descendant( mary, jane)

Functional Programming FPMap,Fold, Filter

avg([12, 16, 4, 6])Returns single value 9.5

round([10.3, 4.7, 7.8] )Returns List [10, 5, 8]

Description LogicPerson Has Name and
LivesAt Address

Concepts Overview

Concepts Overview

Concepts Overview

Agenda

Community

History

Declarative Programming

Drools ExpertQuick Example Stateless/Stateful

Conditional elements

Timers and Calendars

Truth maintenance and Inference

Backward chaining

Roadmap

Classes

rule increase balance for AccountPeriod Credits when ap : AccountPeriod() acc : Account( $accountNo : accountNo ) CashFlow( type == CREDIT, accountNo == $accountNo, date >= ap.start && = ap.start and cf.date = ap.start && = ap.start && Everything is ok

Executing

Fire kitchenFire = new Fire( name2room.get( "kitchen" ) );Fire officeFire = new Fire( name2room.get( "office" ) );

FactHandle kitchenFireHandle = ksession.insert( kitchenFire );FactHandle officeFireHandle = ksession.insert( officeFire );

ksession.fireAllRules();

> Raise the alarm> Turn on the sprinkler for room kitchen> Turn on the sprinkler for room office

Executing

ksession.retract( kitchenFireHandle );ksession.retract( officeFireHandle );

ksession.fireAllRules()

> Turn off the sprinkler for room office> Turn off the sprinkler for room kitchen> Cancel the alarm> Everything is ok

rule "Status output when things are ok" when not Alarm() not Sprinkler( on === true ) then println( "Everything is ok" );end

Agenda

Community

History

Declarative Programming

Drools ExpertQuick Example Stateless/Stateful

Conditional elements

Timers and Calendars

Truth maintenance and Inference

Backward chaining

Roadmap

not Bus( color = red )

Conditional Elements

exists Bus( color = red )

forall ( $bus : Bus( floors == 2 ) Bus( this == $bus, color == red ) )

forall ( $bus : Bus( color == red ) )

Accumulate CE

rule "accumulate"when $sum : Number( intValue > 100 ) from accumulate( Bus( color == "red", $t : takings ) sum( $t ) )then print "sum is + $sum;end

Accumulate CE

Patterns and CE's can be chained with 'from'

rule "collect"when $zipCode : ZipCode() $sum : Number( intValue > 100 ) from accumulate( Bus( color == "red", $t : takings ) from $hbn.getNamedQuery(Find Buses) .setParameters( [ zipCode : $zipCode ] ) .list(), sum( $t ) )then print "sum is + $sum;end

Aggregations

Rule Engines do not deal with aggregations

$n : Number( intValue > 100 ) from accumulate( $s : StockTicker( symbol == RHAT ) over window:time( 5s ), average( $s.price ) )

Over 5 secondsAggregate ticker price for RHAT over last 5 secondsThe pattern 'Number' reasons 'from' the accumulate result

$c : Custumer( type == VIP )$oe : BuyOrderEvent( customer == $c ) from entry-point Home Broker Stream not BuyAckEvent( relatedEvent == $oe.id, this after[1s, 10s] $oe ) from entry-point Stock Trader Stream

Operators

Existing Drools 'not' Conditional Elements can be used to detect non-occurrence of eventsBackAckEvent must occur between 1s and 10s 'after' BuyOrderEvent

Agenda

Community

History

Declarative Programming

Drools ExpertQuick Example Stateless/Stateful

Conditional elements

Timers and Calendars

Truth maintenance and Inference

Backward chaining

Roadmap

Timers

rule name timer ( cron: 0 0/15 * * * * )when Alarm( )then sendEmail( Alert Alert Alert!!! )

Field Name Mandatory? Allowed Values Allowed Special CharactersSeconds YES 0-59 , - * /Minutes YES 0-59 , - * /Hours YES 0-23 , - * /Day of month YES 1-31 , - * ? / L WMonth YES 1-12 or JAN-DEC , - * /Day of week YES 1-7 or SUN-SAT , - * ? / L #Year NO empty, 1970-2099 , - * /

Send alert every quarter of an hour

Calendars

rule "weekdays are high priority" calendars "weekday" timer (int:0 1h)when Alarm()then send( "priority high - we have an alarm );end

rule "weekend are low priority" calendars "weekend" timer (int:0 4h)when Alarm()then send( "priority low - we have an alarm );end

Execute now and after
1 hour durationExecute now and after
4 hour duration

Agenda

Community

History

Declarative Programming

Drools ExpertQuick Example Stateless/Stateful

Conditional elements

Timers and Calendars

Truth maintenance and Inference

Backward chaining

Roadmap

TMS and Inference

rule "Issue Child Bus Pass"when $p : Person( age < 16 )then insert(new ChildBusPass( $p ) );endrule "Issue Adult Bus Pass"when $p : Person( age >= 16 )then insert(new AdultBusPass( $p ) );end

Couples the logicWhat happens when the Child stops being 16?

TMS and Inference

BadMonolithic

Leaky

Brittle integrity - manual maintenance

TMS and Inference

A rule logically inserts an object

When the rule is no longer true, the object is retracted.

when $p : Person( age < 16 )then logicalInsert( new IsChild( $p ) )endwhen $p : Person( age >= 16 )then logicalInsert( new IsAdult( $p ) )end

de-couples the logicMaintains the truth by
automatically retracting

TMS and Inference

rule "Issue Child Bus Pass"when $p : Person( ) IsChild( person =$p )then logicalInsert(new ChildBusPass( $p ) );endrule "Issue Adult Bus Pass"when $p : Person( age >= 16 ) IsAdult( person =$p )then logicalInsert(new AdultBusPass( $p ) );end

The truth maintenance cascades

TMS and Inference

rule "Issue Child Bus Pass"when $p : Person( ) not( ChildBusPass( person == $p ) )then requestChildBusPass( $p );end

The truth maintenance cascades

TMS and Inference

GoodDe-couple knowledge responsibilities

Encapsulate knowledge

Provide semantic abstractions for those encapsulation

Integrity robustness truth maintenance

Agenda

Community

History

Declarative Programming

Drools ExpertQuick Example Stateless/Stateful

Conditional elements

Timers and Calendars

Truth maintenance and Inference

Backward chaining

Roadmap

Backward Chaining

query isChild( Person p ) $p : Person( age