drooling for drools (jboss webex)

Download Drooling for drools (JBoss webex)

If you can't read please download the document

Upload: geoffrey-de-smet

Post on 16-Apr-2017

3.163 views

Category:

Technology


4 download

TRANSCRIPT

drools

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 ProctorCo-CreatorProject Lead

Topics

What's new in 5.1

Drools and OSS Community

History

Unified Vision

Expert

Fusion

Flow

What's new In 5.1

What's new to 5.1

IntegrationOSGi ready

Spring

Camel

JMX/JOPR integration

ExpertNew Rete Algorithm differential update

Timers and Calendars

Live Open Querries

FlowBPMN2

Differential Update

Differential Update (a.k.a. true modify)Implements a real modify/update operation, instead of retract+assert.Reuses tuples, reduces GC stress, improves performance

What's new to 5.1

GuvnorGuided editorNested Expression builderperson.dogs[0].name

Move constrains up and down

Insert constraints

Support for more DRL elements

RSS Subcription, change notifications, inbox

Working Sets

Object constraint definitions

Rule Templates (based on Guided Editor)

Oryx BPM editor integration

Better rule documentation support

Drools flow in Oryx

Drools flow in Eclipse

Community

Books

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 ....

Boot Camps

Rules Fest 11th October3 day conferene + 1 day boot camp

USA and EMA in Febuary, watch blog for newshttp://blog.athico.com

Community Collaboration

40% of Drools work now done in the communityUS Navy Healthcare

OSDE (Argentina's largest healthcare organisation)

Intalio

Sample Industries and Users

InvestmentMillennium Investment Group (MIG)

LogisticsFedex

AirlineSabre

MortgageFranklin American

HealthcareOSDE

History

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 Process (Fusion)Temporal Comparators, Sliding Time Windows

Production ready BRMS

Unified Vision

Drools Modules

Business Logic integration System

Drools
Guvnor

Drools
Fusion

Drools
Flow(jBPM5)

Drools
Expert

Drools Modules

Drools
Grid

Drools
Planner

Drools
Semantics

Drools
Chance Business Logic integration System

Business Logic Lifecycle

Rules and processes

loosely coupledtightly coupledspecificgenericDecisionServicesProcessRulesSCOPECOUPLING?

Event Driven Architectures
edBPM + EDM

Domain Overview

Domain Overview

Hybrid Logic Engine

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 hasName String and
livesAt Address

Production Rule Systems PRD (forward chaining FC) Drools 5.0, OPSJ ( hyrbid BC), ART( hyrbid BC)

Logic Programming LP (backward chaining BC)target : Prolog (POSL Position Slotted Language)

Drools Trunk has a prototype Prolog like query backward chaining capabilities. Stronger Polog like capabilities planned.

Opportunistic BC planned.

Functional Programming FPLisp, Haskell

Drools 5.0 has some functional capabilities

Drools 5.1, 5.2 will be looking to have strong functional capabilities

Hybrid Logic Engine

Description Logic DLKIF, OWL-DL

Planned, See The Future

Hybrid Logic Engine

The Future

Full Hybrid Enginehttp://community.jboss.org/wiki/DroolsLanguageEnhancements

Nested Objects

Casting Nested Objects

Positional Constraints

POSL - Positional-Slotted Language

Method Calls

Maps and Arrays (Collections)

Collections and XPath like filtering

Free form Expressions

Managed Object Graphs (MOGS)

Nested Patterns and Queries

Queries and Unification

Ontologies and Relations via

Query Based Backward Chaining with POSL

Triples with Hybrid POJO Graph Notation.

Escapes for Dialects

Accumulate Improvements to Support Haskell map/fold/filter and MVEL projection/fold

Otherwise

Branch (Labelled Else)

Rule Execution Groups

Rule Dependency Meta-Rule Language

Parallel Meta-Rule Language

Field Versioning

Logical Closures/OnFalse

Opportunistic Backward Chaining, Lazy Field/Object Values

...

Achieving More
By Doing Less

jBPMFile file = new File (.....); // file to XML process definition

ProcessDefinition processDefinition = ProcessDefinition.parseXmlString( IoUtils.FileToString( file ) );

ProcessInstance processInstance = new ProcessInstance(processDefinition);

JessRete engine = new Rete();

FileReader file = new FileReader("myfile.clp");

Jesp parser = new Jesp(file, engine);

parser.parse(false);

Esper

EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider();

EPStatement countStmt = admin.createEPL( "...." );

countStmt.start();

Knowledge API

Drools Flow

KnowledegBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBulider();

kbuilder.addResource( ResourceFactory.newClassPathResource( myflow.bpmn2, ResourceType.BPMN2 );

If ( kbuilder.hasErrors() ) { log.error( kbuilder.hasErrors().toString() );}

KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();kbase.addKnowledgePackages( kbase.getKnowledgePackages() );

Knowledge API

Drools Expert

KnowledegBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBulider();

kbuilder.addResource( ResourceFactory.newClassPathResource( myrules.drl, ResourceType.DRL );

If ( kbuilder.hasErrors() ) { log.error( kbuilder.hasErrors().toString() );}

KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();kbase.addKnowledgePackages( kbase.getKnowledgePackages() );

Knowledge API

Drools Integration Deployment Descriptors

KnowledegBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBulider();kbuilder.addResource( ResourceFactory.newFileResource( changeset.xml, ResourceType.ChangeSet );

Knowledge XML

Declarative Services
Spring XML and Camel

Integrated debug and audit

Simulation Testing

Drools Expert

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 && 100 && $max < 200 )then println( "range is + $min + + $max );end

Accumulate CE

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

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

Live Queries

Live Queries

query (String $region, int $min, int $max ) { $c : Cheese( region == $region, price > $min && price < $max )exists( StockItem( type == $c )}

ViewChangedEventListener listener = new ViewChangedEventListener() {

public void rowUpdated(Row row) { println( "updated" + row.get( "$c" ) ); }

public void rowRemoved(Row row) { println( "removed" + row.get( "$c" ) ); }

public void rowAdded(Row row) { println( "added" + row.get( "$c" ) ); }};

Live Queries

LiveQuery query = ksession.openLiveQuery( "cheeses", new Object[] { "devon", 10, 50 }, listener );......query.dispose()

TimersCalendars

Timers

rule name timer (int: 1m30s 0)when $l : Light( status == on )then modify( $l ) { status = off };

When the light is on, and has beenon for 1m30s then turn it off

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

Drools Expert

Authoring Metaphores

Guided Editor

Decision Table

Decision Table

rule "Pricing bracket_10"

when Driver(age >= 18, age 100 )

Over 5 secondsAggregate ticker price for RHAT over last 5 seconds

CEP Applied at FedEx Custom Critical

Time specific deliveries for critical freight

Exclusive use non-stop door-to-door services

Blended Surface and Air services to minimize cost and transit time

Extra care in handling and specially equipped vehiclesTemperature Control, Secured Services, Hazardous Material, Constant Surveillance

* Presented by Adam Mollemkopf at ORF 2009

CEP Applied at FedEx Custom Critical

* Presented by Adam Mollemkopf at ORF 2009

CEP Applied at FedEx Custom Critical

* Presented by Adam Mollemkopf at ORF 2009

CEP Applied at FedEx Custom Critical

* Presented by Adam Mollemkopf at ORF 2009

CEP Applied at FedEx Custom Critical

* Presented by Adam Mollemkopf at ORF 2009

CEP Applied at FedEx Custom Critical

* Presented by Adam Mollemkopf at ORF 2009

CEP Applied at FedEx Custom Critical

* Presented by Adam Mollemkopf at ORF 2009

At least 50% of Alerts can be reasoned automatically, promoting staff savings and improved Customer and Driver experiences.

Risk Avoidance via pro-active monitoringReduction in insurance claims and shipment service failures

Minimum 30% efficiency gains in shipment monitoring , saving at least 15% of Operations staff cost.

CEP Applied at FedEx Custom Critical

* Presented by Adam Mollemkopf at ORF 2009

Some numbers (from early 2010):24 x 7 sessions, no downtime

Average of 500k+ facts/events concurrently in memoryBusiness hours: 1M+ facts/events concurrently

Response time for reasoning cycles:Average: 150 ms

Peak: 1.2 sec

Several hundred rules

CEP Applied at FedEx Custom Critical

* Presented by Adam Mollemkopf at ORF 2009

Drools Flow(jBPM5)

BPMN 2.0

OMG Standard that definesGraphical notation

Process definition format (XSD/XMI)

Execution Semantics

Extensible

Interoperability

http://www.omg.org/spec/BPMN/2.0

Palette

Predefined set of generic node typesstart, end

Gateway

Script

Sub-process

Event

...

Drools flow in Eclipse

Drools flow in Oryx

Process Debugging

Domain-Specific Processes

Domain-Specific Processes

Other ExamplesEmail / notifications

File management: archive, find, copy

FTP, RSS, Jabber, Rest

ESB

Google Calendar, social websites

Library

Non Linear Processes

Rules and Process

Events and Processes

declare ProcessStartedEvent @role( event )end rule "Number of process instances above threshold" when acc( e: ProcessStartedEvent(
processId == "com.sample.order.OrderProcess" ) over window:size(1h), $c : count(e), $c > 1000)then System.err.println( "WARNING: Nb of order processes in the last hour > 1000: " + nbProcesses );end

Human Tasks - WS-HT

Questions?

Questions?

Dave Bowman: All right, HAL; I'll go in through the emergency airlock.

HAL: Without your space helmet, Dave, you're going to find that rather difficult.

Dave Bowman: HAL, I won't argue with you anymore! Open the doors!

HAL: Dave, this conversation can serve no purpose anymore. Goodbye.

Joshua: Greetings, Professor Falken.Stephen Falken: Hello, Joshua.Joshua: A strange game. The only winning move is not to play. How about a nice game of chess?

CashFlow

dateamounttypeaccountNo

12-Jan-07100CREDIT1

2-Feb-07200DEBIT1

18-May-0750CREDIT1

9-Mar-0775CREDIT1

???Page ??? (???)15/09/2010, 12:54:11Page / CashFlow

dateamounttype

12-Jan-07100CREDIT

9-Mar-0775CREDIT

???Page ??? (???)15/09/2010, 12:55:59Page / CashFlow

dateamounttype

2-Feb-07200DEBIT

???Page ??? (???)15/09/2010, 12:55:59Page /

Click to edit the title text format

Click to edit the outline text formatSecond Outline LevelThird Outline LevelFourth Outline LevelFifth Outline LevelSixth Outline LevelSeventh Outline LevelEighth Outline LevelNinth Outline Level

Click to edit the title text format

Click to edit the text format

Click to edit the title text format

Click to edit the text format

Click to edit the outline text formatSecond Outline LevelThird Outline LevelFourth Outline LevelFifth Outline LevelSixth Outline LevelSeventh Outline LevelEighth Outline Level

Red Hat Proprietary and Confidential

Account

accountNobalance

10

???Page ??? (???)15/09/2010, 12:35:13Page / AccountingPeriod

startend

01-Jan-0731-Mar-07

???Page ??? (???)15/09/2010, 12:35:13Page / Account

accountNobalance

1-25

???Page ??? (???)15/09/2010, 12:35:13Page /