Drools New York City workshop 2011
Upcoming SlideShare
Loading in...5
×
 

Drools New York City workshop 2011

on

  • 3,782 views

 

Statistics

Views

Total Views
3,782
Views on SlideShare
3,782
Embed Views
0

Actions

Likes
0
Downloads
222
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • 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
  • 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
  • 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

Drools New York City workshop 2011 Drools New York City workshop 2011 Presentation Transcript

  • Mark Proctor Project Lead
    • T he 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
  • Drools Vs BRMS Repository Rules and Metadata JBoss Enterprise BRMS Platform JBoss Rules Rules Engine/ Execution Rules Development & Management CEP Complex Events Jboss EWP
  • Drools Vs BRMS
    • 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
    derived
  • JBoss Community & Enterprise Changes Community / Enterprise Platform Delta BRMS Drools Enterprise Platforms - Performance, Scalability, Security and Qualityimprove over time without compromising long-term compatibility. 08/09 12/10 03/11 05/11 Over 150+ defect fixes & 35+ OS/JVM/DB certifications (& counting) between Drools Community 5.1 & JBoss BRMS 5.1.x
  • Evolution of JBoss BRMS 05/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 EWP
  • Back Up
  •  
  • Agenda
    • Community
    • History
    • Declarative Programming
    • Drools Expert
      • Quick Example Stateless/Stateful
      • Conditional elements
      • Timers and Calendars
      • Truth maintenance and Inference
      • Backward chaining
    • Decision Tables
      • Decisions and Decision Tables
      • Types
      • Validation and Verification
      • Transformation
      • Decision tables in guvnor
    • Roadmap
  • Sample Industries and Users
    • Investment
      • Millennium Investment Group (MIG)
    • Logistics
      • Fedex
    • Airline
      • Sabre
    • Mortgage
      • Franklin American
    • Healthcare
      • OSDE
  • 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 Systems
      • Peter Jackson
    • Expert Systems, Principles and Programming
      • Joseph C. Giarratano and Gary D. Riley
  • Oh And There are Drools Books Too
  • Agenda
    • Community
    • History
    • Declarative Programming
    • Drools Expert
      • Quick Example Stateless/Stateful
      • Conditional elements
      • Timers and Calendars
      • Truth maintenance and Inference
      • Backward chaining
    • Decision Tables
      • Decisions and Decision Tables
      • Types
      • Validation and Verification
      • Transformation
      • Decision tables in guvnor
    • Roadmap
  • It All Started Here Birth of CDSS 1970s 1980s Dendral Baobab Mycin Guidon Neomycin Teiresias Puff Emycin WM Sacon Centaur Wheeze Gravida Clot Oncocin
  • Because Not Everyone Is As Smart As He Is
  • Business Rules Engines 1980s 2010s 1990s 2000s OPS5 ART Clips Jess Drools 2 JRules Drools 3 Drools 4 Drools 5
  • Drools History
    • Drools 2
      • Rete like XML Scripting language
    • Drools 3
      • Based on Clips functionality
      • Iterative improves to JRules syntax with Clips functionality
    • Drools 4
      • More declarative
      • Basic functional programming feature with “from”
      • Basic Rule Flow
      • Basic BRMS
    • Drools 5
      • Improved functional programming with 'accumulate'
      • More Advanced Rule Flow integration
      • Complex Event Process
        • Temporal Comparators
        • Sliding Time Windows
      • Production ready BRMS (Guvnor)
  • Drools History
    • Drools 5.1
      • Differential 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 Expert
      • Quick Example Stateless/Stateful
      • Conditional elements
      • Timers and Calendars
      • Truth maintenance and Inference
      • Backward chaining
    • Decision Tables
      • Decisions and Decision Tables
      • Types
      • Validation and Verification
      • Transformation
      • Decision tables in guvnor
    • Roadmap
  • Integrated Systems Semantic Ontologies Rules Event Processes Workflows Rules Workflows Event Processes Semantic Ontologies
  • Integrated Systems
  • 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 FP
      • Map,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 Logic
      • Person Has Name and LivesAt Address
  • Concepts Overview
  • Concepts Overview
  • Concepts Overview
  • Agenda
    • Community
    • History
    • Declarative Programming
    • Drools Expert
      • Quick Example Stateless/Stateful
      • Conditional elements
      • Timers and Calendars
      • Truth maintenance and Inference
      • Backward chaining
    • Decision Tables
      • Decisions and Decision Tables
      • Types
      • Validation and Verification
      • Transformation
      • Decision tables in guvnor
    • Roadmap
  • Classes
  • rule “increase balance for AccountPeriod Credits” when ap : AccountPeriod() acc : Account( $accountNo : accountNo ) CashFlow( type == CREDIT, accountNo == $accountNo, date >= ap.start && <= ap.end, $ammount : ammount ) then acc.balance += $amount; end select * from Account acc, Cashflow cf, AccountPeriod ap where acc.accountNo == cf.accountNo and cf.type == CREDIT cf.date >= ap.start and cf.date <= ap.end trigger : acc.balance += cf.amount Credit Cashflow Rule
  • rule “increase balance for AccountPeriod Credits” when ap : AccountPeriod() acc : Account( $accountNo : accountNo ) CashFlow( type == CREDIT, accountNo == $accountNo, date >= ap.start && <= ap.end, $ammount : ammount ) then acc.balance += $amount; end rule “decrease balance for AccountPeriod Debits” when ap : AccountPeriod() acc : Account( $accountNo : accountNo ) CashFlow( type == DEBIT, accountNo == $accountNo, date >= ap.start && <= ap.end, $ammount : ammount ) then acc.balance -= $amount; end Rules as a “view”
  • Agenda
    • Community
    • History
    • Declarative Programming
    • Drools Expert
      • Quick Example Stateless/Stateful
      • Conditional elements
      • Timers and Calendars
      • Truth maintenance and Inference
      • Backward chaining
    • Decision Tables
      • Decisions and Decision Tables
      • Types
      • Validation and Verification
      • Transformation
      • Decision tables in guvnor
    • Roadmap
  • Definitions public class Applicant { private String name; private int age; private boolean valid; // getter and setter methods here } rule &quot;Is of valid age&quot; when $a : Applicant( age < 18 ) then modify ( $a ) { valid = false }; ends
  • Building KnowledgeBuilder kbuilder = KnowledgeBuilderFactory .newKnowledgeBuilder(); kbuilder .add( ResourceFactory .newClassPathResource( &quot;licenseApplication.drl&quot; , getClass() ), ResourceType.DRL ); if ( kbuilder .hasErrors() ) { System.err.println( kbuilder .getErrors().toString() ); } kbase .addKnowledgePackages( kbuilder .getKnowledgePackages() );
  • Executing StatelessKnowledgeSession ksession = kbase .newStatelessKnowledgeSession(); Applicant applicant = new Applicant ( &quot;Mr John Smith&quot; , 16 ); assertTrue ( applicant .isValid() ); ksession .execute( applicant ); assertFalse ( applicant .isValid() ); rule &quot;Is of valid age&quot; when $a : Applicant( age < 18 ) then modify ( $a ) { valid = false }; ends
  • Agenda
    • Product Overview
    • Community
    • History
    • Declarative Programming
    • Drools Expert
      • Quick Example Stateless/Stateful
      • Conditional elements
      • Timers and Calendars
      • Truth maintenance and Inference
      • Backward chaining
    • Decision Tables
      • Decisions and Decision Tables
      • Types
      • Validation and Verification
      • Transformation
      • Decision tables in guvnor
    • Roadmap
  • Definitions public class Room { private String name // getter and setter methods here } public class Sprinkler { private Room room ; private boolean on ; // getter and setter methods here } public class Fire { private Room room ; // getter and setter methods here } public class Alarm { }
  • Definitions rule &quot;When there is a fire turn on the sprinkler&quot; when Fire ($room : room) $sprinkler : Sprinkler ( room == $room, on == false ) then modify ( $sprinkler ) { on = true }; println ( &quot;Turn on the sprinkler for room &quot; + $room.name ); end rule &quot;When the fire is gone turn off the sprinkler&quot; when $room : Room ( ) $sprinkler : Sprinkler ( room == $room, on == true ) not Fire ( room == $room ) then modify ( $sprinkler ) { on = false }; println ( &quot;Turn off the sprinkler for room &quot; + $room.name ); end
  • Definitions rule &quot;Raise the alarm when we have one or more fires&quot; when exists Fire () then insert ( new Alarm () ); println ( &quot;Raise the alarm&quot; ); end rule &quot;Cancel the alarm when all the fires have gone&quot; when not Fire () $alarm : Alarm () then retract ( $alarm ); println ( &quot;Cancel the alarm&quot; ); end
  • Definitions rule &quot;Status output when things are ok&quot; when not Alarm () not Sprinkler ( on === true ) then println ( &quot;Everything is ok&quot; ); end
  • Executing String [] names = new String []{ &quot;kitchen&quot; , &quot;bedroom&quot; , &quot;office&quot; , &quot;livingroom&quot; }; Map < String , Room > name2room = new HashMap < String , Room >(); for ( String name : names ){ Room room = new Room ( name ); name2room .put( name , room ); ksession .insert( room ); Sprinkler sprinkler = new Sprinkler ( room ); ksession .insert( sprinkler ); } ksession .fireAllRules() > Everything is ok
  • Executing Fire kitchenFire = new Fire ( name2room.get( &quot;kitchen&quot; ) ); Fire officeFire = new Fire ( name2room.get( &quot;office&quot; ) ); 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 &quot;Status output when things are ok&quot; when not Alarm () not Sprinkler ( on === true ) then println ( &quot;Everything is ok&quot; ); end
  • Agenda
    • Community
    • History
    • Declarative Programming
    • Drools Expert
      • Quick Example Stateless/Stateful
      • Conditional elements
      • Timers and Calendars
      • Truth maintenance and Inference
      • Backward chaining
    • Decision Tables
      • Decisions and Decision Tables
      • Types
      • Validation and Verification
      • Transformation
      • Decision tables in guvnor
    • 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 &quot;accumulate&quot; when $sum : Number( intValue > 100 ) from accumulate ( Bus( color == &quot;red&quot; , $t : takings ) sum( $t ) ) then print &quot;sum is “ + $sum; end
  • Accumulate CE Patterns and CE's can be chained with ' from ' rule &quot;collect&quot; when $zipCode : ZipCode() $sum : Number( intValue > 100 ) from accumulate ( Bus( color == &quot;red&quot; , $t : takings ) from $hbn.getNamedQuery( “Find Buses” ) .setParameters( [ “zipCode” : $zipCode ] ) .list(), sum( $t ) ) then print &quot;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 seconds Aggregate ticker price for RHAT over last 5 seconds The 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 events BackAckEvent must occur between 1s and 10s ' after' BuyOrderEvent
  • Agenda
    • Community
    • History
    • Declarative Programming
    • Drools Expert
      • Quick Example Stateless/Stateful
      • Conditional elements
      • Timers and Calendars
      • Truth maintenance and Inference
      • Backward chaining
    • Decision Tables
      • Decisions and Decision Tables
      • Types
      • Validation and Verification
      • Transformation
      • Decision tables in guvnor
    • Roadmap
  • Timers rule “name” timer ( cron: 0 0/15 * * * * ) when Alarm( ) then sendEmail( ”Alert Alert Alert!!!” ) Field Name Mandatory? Allowed Values Allowed Special Characters Seconds YES 0-59 , - * / Minutes YES 0-59 , - * / Hours YES 0-23 , - * / Day of month YES 1-31 , - * ? / L W Month 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 &quot;weekdays are high priority&quot; calendars &quot;weekday&quot; timer (int:0 1h) when Alarm() then send( &quot;priority high - we have an alarm” ); end rule &quot;weekend are low priority&quot; calendars &quot;weekend&quot; timer (int:0 4h) when Alarm() then send( &quot;priority low - we have an alarm” ); end Execute now and after 1 hour duration Execute now and after 4 hour duration
  • Agenda
    • Community
    • History
    • Declarative Programming
    • Drools Expert
      • Quick Example Stateless/Stateful
      • Conditional elements
      • Timers and Calendars
      • Truth maintenance and Inference
      • Backward chaining
    • Decision Tables
      • Decisions and Decision Tables
      • Types
      • Validation and Verification
      • Transformation
      • Decision tables in guvnor
    • Roadmap
  • TMS and Inference rule &quot;Issue Child Bus Pass&quot; when $p : Person ( age < 16 ) then insert(new ChildBusPass ( $p ) ); end rule &quot;Issue Adult Bus Pass&quot; when $p : Person ( age >= 16 ) then insert(new AdultBusPass ( $p ) ); end Couples the logic What happens when the Child stops being 16?
  • TMS and Inference
    • Bad
      • Monolithic
      • 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 ) ) end when $p : Person ( age >= 16 ) then logicalInsert ( new IsAdult ( $p ) ) end de-couples the logic Maintains the truth by automatically retracting
  • TMS and Inference rule &quot;Issue Child Bus Pass&quot; when $p : Person ( ) IsChild ( person =$p ) then logicalInsert ( new ChildBusPass ( $p ) ); end rule &quot;Issue Adult Bus Pass&quot; when $p : Person ( age >= 16 ) IsAdult ( person =$p ) then logicalInsert ( new AdultBusPass ( $p ) ); end The truth maintenance cascades
  • TMS and Inference rule &quot;Issue Child Bus Pass&quot; when $p : Person ( ) not ( ChildBusPass ( person == $p ) ) then requestChildBusPass( $p ); end The truth maintenance cascades
  • TMS and Inference
    • Good
      • De-couple knowledge responsibilities
      • Encapsulate knowledge
      • Provide semantic abstractions for those encapsulation
      • Integrity robustness – truth maintenance
  • Agenda
    • Community
    • History
    • Declarative Programming
    • Drools Expert
      • Quick Example Stateless/Stateful
      • Conditional elements
      • Timers and Calendars
      • Truth maintenance and Inference
      • Backward chaining
    • Decision Tables
      • Decisions and Decision Tables
      • Types
      • Validation and Verification
      • Transformation
      • Decision tables in guvnor
    • Roadmap
  • Backward Chaining query isChild( Person p ) $p : Person ( age <= 16 ) end rule &quot;Issue Child Bus Pass&quot; when $p : Person ( ) ?isChild ( $p ) then logicalInsert ( new ChildBusPass ( $p ) ); end
  • Backward Chaining query isContainedIn( String x, String y ) Location ( x, y; ) or ( Location ( z, y; ) and ?isContainedIn ( x, z; ) ) end rule reactiveLook when Here ( place : place) ?isContainedIn ( place, &quot;keys&quot; ; ) then System.out.println( &quot;We have found your keys&quot; ); end
  • Agenda
    • Community
    • History
    • Declarative Programming
    • Drools Expert
      • Quick Example Stateless/Stateful
      • Conditional elements
      • Timers and Calendars
      • Truth maintenance and Inference
      • Backward chaining
    • Decision Tables
      • Decisions and Decision Tables
      • Types
      • Validation and Verification
      • Transformation
      • Decision tables in guvnor
    • Roadmap
  • Some decisions are simple I want to treat myself
  • Some decisions are simple
  • Some decisions are complex What insurance premium should I charge?
  • Some decisions are complex
    • Business considerations
      • Applicant's age
      • Applicant's experience
      • Sailing qualifications
      • Value of vessel
      • Type of cover
  • Some decisions are complex
    • Business considerations
      • Applicant's age
        • Only insure people over 25 years of age
        • If less than 35 add 10% surcharge
        • If less than 45 add 5% surcharge
  • Some decisions are complex
    • Business considerations
      • Applicant's experience
        • If sailing < 5 years then charge +10%
      • Sailing qualifications
        • None charge +100%
    • Etc...
  • Enter the decision table
    • Extract of decision table
  • Decision Table
  • Decision Table rule &quot;Pricing bracket_10&quot; when Driver(age >= 18, age <= 24, locationRiskProfile == &quot;LOW&quot;, priorClaims == &quot;1&quot;) policy: Policy(type == &quot;COMPREHENSIVE&quot;) then policy.setBasePrice(450); end
  • Decision Tables in Guvnor
    • Generation of DRL
    • Each row compiles into a separate DRL rule
  • Decision Tables in Guvnor
    • Generation of DRL
    • Each row compiles into a separate DRL rule
    • rule &quot;Row 1 dtable&quot;
    • dialect &quot;mvel&quot;
    • when
    • $person : Person( age < &quot;18&quot; )
    • then
    • $person.setHolidayEntitlement( 27 );
    • end
    • rule &quot;Row 2 dtable&quot;
    • dialect &quot;mvel&quot;
    • when
    • $person : Person( age >= &quot;18&quot; , age < &quot;45&quot; , lengthOfService < &quot;15&quot; )
    • then
    • $person.setHolidayEntitlement( 22 );
    • end
  • Agenda
    • Community
    • History
    • Declarative Programming
    • Drools Expert
      • Quick Example Stateless/Stateful
      • Conditional elements
      • Timers and Calendars
      • Truth maintenance and Inference
      • Backward chaining
    • Decision Tables
      • Decisions and Decision Tables
      • Types
      • Validation and Verification
      • Transformation
      • Decision tables in guvnor
    • Roadmap
  • Types
      Types
      • Layout
            • Horizontal
            • Vertical
            • Limited entry
            • Extended entry
      • Categorisation
            • Expanded form, contracted form
            • Multi-hit, all hits
            • Multi-hit, first hit
            • Single hit
  • Layouts
      Horizontal
  • Layouts
      Vertical
  • Layouts
      Limited entry
  • Layouts
      Extended entry
  • Categorisation
      Expanded form
    • Single column for every condition combination
    • The number of columns should equal the product of the number of states for every condition.
      • e.g. 2 conditions, one with 3 states the other 4 (see above):
    3 * 4 = 12 combinations
      • e.g. 2 conditions each with 3 states and 1 condition with 4 states gives:
    3 * 3 * 4 = 36 combinations
  • Categorisation
      Expanded form (continued)
    • Condition states should be digitised
      • e.g. age: <18, 18-35, 36-60, >60 not a free-form integer field
    • Condition states should be continuous
      • e.g. GOOD: age<18, age>=18; BAD: age<18, age>=30
      • Not essential for expansion but ensures completeness
    • This guarantee of completeness of condition combinations is one of the main advantages of decision tables.
  • Categorisation
      Expanded form (continued)
  • Categorisation
      Contracted form
    • Contraction is the first optimisation.
    • Reduces the number of condition columns.
    • Removes impossible combinations
    • If the same actions exist for rules covering all condition states for a given condition they can be combined and the condition state becomes irrelevant.
  • Categorisation
      Contracted form – stage 1 Rules 2 and 3 are impossible conditions
  • Categorisation
      Contracted form – stage 2 Merge adjacent column groups with identical action parts
  • Categorisation
      Multi-hit, all hits
    • To get complete result all rules matching need to have their actions executed.
    • Condition columns are not mutually exclusive
    • If the Condition columns are not exclusive, some combination of conditions are present in more than one column, which may lead to ambiguity or inconsistency.
  • Categorisation
      Multi-hit, all hits
    Given a 35 year old with 15 years service 1. Rule 1 matches, giving 22 days 2. Rule 5 matches, giving an additional 3 days 3. A total of 25 days is assigned
  • Categorisation
      Multi-hit, first hit
    • To get complete result the first rule (from left-to-right) matching needs to have its action executed.
    • Condition columns are not mutually exclusive.
    • If the Condition columns are not exclusive, some combination of conditions are present in more than one column, which may lead to ambiguity or inconsistency.
  • Categorisation
      Multi-hit, first hit
    Given a 35 year old with 15 years service 1. Rule 4 matches, giving 25 days 2. Rule 6 would match but Rule 4 was the first hit
  • Categorisation
      Single hit
    • Each possible combination of conditions matches exactly one, and only one, rule.
    • Condition columns are mutually exclusive
    • As the Condition columns are exclusive; combinations of conditions cannot be present in more than one column which eliminates ambiguity and inconsistency.
    • Classic form if Single-hit is &quot;expanded decision table&quot;; but this can be optimised or “contracted”.
  • Categorisation
      Single hit
    Given a 35 year old with 15 years service 1. Rule 3 matches, giving 25 days 2. No other rules match
  • Agenda
    • Community
    • History
    • Declarative Programming
    • Drools Expert
      • Quick Example Stateless/Stateful
      • Conditional elements
      • Timers and Calendars
      • Truth maintenance and Inference
      • Backward chaining
    • Decision Tables
      • Decisions and Decision Tables
      • Types
      • Validation and Verification
      • Transformation
      • Decision tables in guvnor
    • Roadmap
  • Validation & Verification
    • Redundancy
    • Ambivalence (conflicting)
    • Deficiency
    • Mitigation
  • Validation & Verification
    • Redundancy
    • Duplication
    • Subsumption
      • Two rules have the same actions, but one contains additional conditions in which it will succeed. Whenever the more restrictive rule succeeds, the less restrictive rule also succeeds, resulting in redundancy.
    • Impossible conditions
      • Conditions that do not make sense (e.g. age < 0)
  • Validation & Verification
    • Redundancy - Subsumption
  • Validation & Verification
    • Ambivalence
    • Contradictory rules
      • Two (or more) rules have the same conditions but with different actions.
    • Conflicting rules
      • An action for one rule is the opposite of the same action for the other rule.
    • Ambiguous rules
      • The actions are different but not opposite.
  • Validation & Verification
    • Deficiency
    • Missing rules
      • A situation exists in which a particular action is required, but there is no rule that succeeds in that situation and produces the desired conclusion.
    • Unused input state or domain attribute
    • Missing knowledge
      • The absence of some essential elements from the problem situation.
  • Validation & Verification
    • Deficiency
      • Premium is £500 if applicant age is less than 30
      • Premium is £300 if Years Without Claim is greater than or equal to 10 years.
      • Applicant is 29, premium is £500
      • Applicant has 12 years without claim, premium is £300
      • Applicant is 29 with 12 years without claim, premium is ?!?
  • Agenda
    • Community
    • History
    • Declarative Programming
    • Drools Expert
      • Quick Example Stateless/Stateful
      • Conditional elements
      • Timers and Calendars
      • Truth maintenance and Inference
      • Backward chaining
    • Decision Tables
      • Decisions and Decision Tables
      • Types
      • Validation and Verification
      • Transformation
      • Decision tables in guvnor
    • Roadmap
  • Transformation
    • Decision Trees
    • Requirements
      • Digitised condition states
      • Each Condition in a column becomes a branch
    • Multi-hit
      • Walk every path through tree
    • Single-hit
      • Walk single path through tree
  • Transformation
    • Example - Decision Table
  • Transformation
    • Example - Decision Tree
  • Transformation
    • Paying attention?
    • Rules 1, 2 and 3, 4 have the same action no matter what the state of “Hunger”. Therefore they can be contracted...
  • Agenda
    • Community
    • History
    • Declarative Programming
    • Drools Expert
      • Quick Example Stateless/Stateful
      • Conditional elements
      • Timers and Calendars
      • Truth maintenance and Inference
      • Backward chaining
    • Decision Tables
      • Decisions and Decision Tables
      • Types
      • Validation and Verification
      • Transformation
      • Decision tables in guvnor
    • Roadmap
  • Decision Tables in Guvnor
    • What do we currently provide?
    • Vertical layout
    • Generalised categorisation
      • Multi-hit, all hit; Multi-hit first hit; Single hit
    • Extended entry
    • Digitised condition states (enumerated fields)
    • New decision table editor
      • Foundation for future work
      • Condition and rule negation
      • Cell merging
      • Cell grouping
  • Decision Tables in Guvnor
    • What do we currently provide?
      Cell merging
  • Decision Tables in Guvnor
    • What do we currently provide?
      Cell grouping
  • Decision Tables in Guvnor
    • What do we currently provide?
    • Video demonstration
      • Demonstration available online at http://vimeo.com/21438537
  • Agenda
    • Community
    • History
    • Declarative Programming
    • Drools Expert
      • Quick Example Stateless/Stateful
      • Conditional elements
      • Timers and Calendars
      • Truth maintenance and Inference
      • Backward chaining
    • Decision Tables
      • Decisions and Decision Tables
      • Types
      • Validation and Verification
      • Transformation
      • Decision tables in guvnor
    • Roadmap
  • Roadmap
    • Decision Tables
    • Provision of other layouts
      • Horizontal
      • Limited entry
    • Automated optimisation
    • Improved support for digitised condition states
    • Integration of V&V providing visual feedback
    • Pluggable editors for Model Fact Types
    • Usability enhancements
  • Roadmap
    • Drools
    • Improved backward chaining (open queries)
    • Optimistic backward chaining.
    • Business Semantics (ontologies)
    • Simulation Testing
    • High Availability
    • Distributed (Grid) platform
    • Runtime Management
    • BAM
  • 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?