Download - Drooling for drools (JBoss webex)
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 /