SlideShare une entreprise Scribd logo
1  sur  57
Mark
    Proctor
   Project Lead




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
Drools Books
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 ....
5



Integrated Systems




         Rules       Rules   Workflows   Workflows

                           Event
                         Processes

                        Semantic
                        Ontologies


                                           Semantic
           Event                           Ontologies
         Processes
generic                 Rules and processes




                                  ?
                                                Decision
                                                Services
SCOPE




                Process
specific




                 Rules




           tightly coupled        COUPLING    loosely coupled
7



Integrated Systems




   Drools      JBPM5             Drools          Drools
   Expert   (Drools Flow)        Fusion          Guvnor




  Drools       Drools           Drools           Drools
  Planner       Grid           Semantics         Chance


             Business Logic integration System
Because Not Everyone
Is As Smart As He Is
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
Definitions

public class Applicant {
    private String      name;
    private int          age;
    private boolean valid;
    // getter and setter methods here
}

rule "Is of valid age" when
   $a : Applicant( age < 18 )
then
   modify( $a ) { valid = false };
ends
Building

KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();


kbuilder.add( ResourceFactory
                 .newClassPathResource( "licenseApplication.drl", getClass() ),
                                               ResourceType.DRL );


if ( kbuilder.hasErrors() ) {
    System.err.println( kbuilder.getErrors().toString() );
}


kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
Spring Configuration
Spring and CamelConfiguration
Executing
rule "Is of valid age" when
   $a : Applicant( age < 18 )
then
   modify( $a ) { valid = false };
ends

StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
Applicant applicant = new Applicant( "Mr John Smith", 16 );
assertTrue( applicant.isValid() );


ksession.execute( applicant );


assertFalse( applicant.isValid() );
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 {
}
Conditional Elements


not Bus( color = “red” )


exists Bus( color = “red” )


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


forall ( $bus : Bus( floors == 2 )
              Bus( this == $bus, color == “red” ) )
Accumulate CE
rule "accumulate"
when
  accumulate( Bus( color == "red", $t : takings );
                    $sum : sum( $t ),
                $min : min( $t ),
                $max : max( $t );
                $min > 100 && $max < 200 && $sum > 500 )
then
  print "sum is “ + $sum;
end
Classes

                                                       C a s h f lo w
     A cco u n t
                                                  D a te d a te
lo n g a c c o u n t N o
                                                  d o u b le a m o u n t
d o u b le b a la n c e
                                                  in t t y p e
                                                  lo n g a c c o u n t N o




                           A c c o u n t in g P e r io d

                           D a te s ta r t
                           D a te e n d
Credit Cashflow Rule

 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


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
Rules as a “view”
  CashFlow                                                  AccountingPeriod
         date       amount           type       accountNo         start               end
  12-Jan-07                  100 CREDIT     1                   01-Jan-07          31-Mar-07
  2-Feb-07                   200 DEBIT      1
  18-May-07                   50 CREDIT     1               Account
  9-Mar-07                    75 CREDIT     1                  accountNo             balance
                                                            1                  0
rule “increase balance for AccountPeriod    rule “decrease balance for AccountPeriod
       Credits”                                    Debits”
  when                                        when
    ap : AccountPeriod()                        ap : AccountPeriod()
    acc : Account( $accountNo : accountNo )     acc : Account( $accountNo : accountNo )

    CashFlow( type == CREDIT,                     CashFlow( type == DEBIT,
                accountNo == $accountNo,                     accountNo == $accountNo,
                date >= ap.start && <= ap.end,               date >= ap.start && <= ap.end,
                $ammount : ammount )                         $ammount : ammount )
  then                                          then
    acc.balance += $amount;                       acc.balance -= $amount;
end CashFlow                                  end CashFlow
           date         amount        type                date         amount         type
    12-Jan-07                  100 CREDIT          2-Feb-07                   200 DEBIT
    9-Mar-07                    75 CREDIT

  Account
     accountNo           balance
  1                -25
TMS and Inference
     rule "Issue Child Bus Pass"
     when
      $p : Person( age < 16 )
     then
      insert(new ChildBusPass( $p ) );
     end
     rule "Issue Adult Bus Pass"
     when
      $p : Person( age >= 16 )
     then
      insert(new AdultBusPass( $p ) );
     end
TMS and Inference
    rule "Issue Child Bus Pass"             Couples the logic
    when
     $p : Person( age < 16 )
    then
     insert(new ChildBusPass( $p ) );
    end
    rule "Issue Adult Bus Pass"         What happens when the Child
                                              stops being 16?
    when
     $p : Person( age >= 16 )
    then
     insert(new AdultBusPass( $p ) );
    end
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 )               de-couples the logic

   then
     logicalInsert( new IsChild( $p ) )
   end
   when
                                      Maintains the truth by
    $p : Person( age >= 16 )          automatically retracting

   then
     logicalInsert( new IsAdult( $p ) )
   end
TMS and Inference
    rule "Issue Child Bus Pass"
    when
     $p : Person( )
           IsChild( person =$p )
    then
     logicalInsert(new ChildBusPass( $p ) );
    end
    rule "Issue Adult Bus Pass"
                                               The truth maintenance
    when                                             cascades

     $p : Person( age >= 16 )
           IsAdult( person =$p )
    then
     logicalInsert(new AdultBusPass( $p ) );
    end
TMS and Inference
rule "Issue Child Bus Pass"
when
 $p : Person( )
       not( ChildBusPass( person == $p ) )
then                                 The truth maintenance
                                           cascades
  requestChildBusPass( $p );
end
TMS and Inference
Good
   De-couple knowledge responsibilities
   Encapsulate knowledge
   Provide semantic abstractions for those encapsulation
   Integrity robustness – truth maintenance
Wumpus World
Wumpus World
Wumpus World
 Cell      Hero      Wumpus    Pitt      Gold
 int row   int row   int row   int row   int row
 Int col   Int col   Int col   Int col   Int col
Wumpus World


Demonstration
http://www.youtube.com/watch?v=4CvjKqUOEzM
What is Complex Event Processing




      1. Detect                    2. Correlate




                     3. React
Time is Money




                                   Business Event
    Value Loss
                 Business Value




                                                                                       Reaction


                                  Time
                                                    Time Loss

                                                           Adapted from a presentation by James Taylor, Sep/2011
Terminology: CEP and ESP


For the scope of this presentation:



    “CEP is used as a common term
      meaning both CEP and ESP.”
EDA vs SOA


EDA is **not** SOA 2.0
Complementary architectures
Metaphor
In our body:
SOA is used to build our muscles and organs
EDA is used to build our sensory system
Event Driven Architectures
edBPM + EDM
Drools Fusion: Enables…


Event Detection:
From an event cloud or set of streams, select all the
meaningful events, and only them.
[Temporal] Event Correlation:
Ability to correlate events and facts declaring both
temporal and non-temporal constraints between them.
Ability to reason over event aggregation
Event Abstraction:
Ability to compose complex events from atomic events
AND reason over them
Drools Fusion


Features:
Event Semantics as First Class Citizens
Allow Detection, Correlation and Composition
Temporal Constraints
Session Clock
Stream Processing
Sliding Windows
CEP volumes (scalability)
(Re)Active Rules
Data Loaders for Input
Drools Fusion


Features:
Event Semantics as First Class Citizens
Allow Detection, Correlation and Composition
Temporal Constraints
Session Clock
Stream Processing
Sliding Windows
CEP volumes (scalability)
(Re)Active Rules
Data Loaders for Input
Event Declaration and Semantics

// declaring existing class
import some.package.VoiceCall   Event semantics:
declare VoiceCall               Point-in-time and Interval
  @role( event )
  @timestamp( calltime )
  @duration( duration )
                                An event is a fact with a few special
end
                                characteristics:
// generating an event class    Usually immutable, but not enforced
declare StockTick
  @role( event )
                                Strong temporal relationships
                                Lifecycle may be managed
  symbol : String
  price : double
                                Allow use of sliding windows
end

                                “All events are facts, but not all facts
                                are events.”
Temporal Reasoning


Semantics for:
time: discrete
events: point-in-time and interval
Ability to express temporal relationships:
Allen’s 13 temporal operators



James F. Allen defined the 13 possible temporal
relations between two events.
Eiko Yoneki and Jean Bacon defined a unified
semantics for event correlation over time and space.
Stream Support (entry-points)


A scoping abstraction for stream support
Rule compiler gather all entry-point declarations and
expose them through the session API
Engine manages all the scoping and synchronization
behind the scenes.
rule “Stock Trade Correlation”
when
      $c : Customer( type == “VIP” )
      BuyOrderEvent( customer == $c, $id : id ) from entry-point “Home Broker Stream”
      BuyAckEvent( sourceEvent == $id ) from entry-point “Stock Trader Stream”
then
      // take some action
end
Delaying Rules


Negative patterns may require rule firings to be delayed.

    rule “Order timeout”
    when
           $bse : BuyShares ( $id : id )
           not BuySharesAck( id == $id, this after[0s,30s] $bse )
    then
           // Buy order was not acknowledged. Cancel operation
           // by timeout.
    end
Temporal Relationships


rule “Shipment not picked up in time”
when
   Shipment( $pickupTime : scheduledPickupTime )
   not ShipmentPickup( this before $pickupTime )
then
   // shipment not picked up... action required.
end
Temporal Relationships


rule “Shipment not picked up in time”
when
   Shipment( $pickupTime : scheduledPickupTime )
   not ShipmentPickup( this before $pickupTime )
then
   // shipment not picked up... Action required.
end



                     Temporal
                    Relationship
Allen’s 13 Temporal Operators


                    Point-Point   Point-Interval   Interval-Interval

                A
 A before B     B

                A
 A meets B      B

                A
A overlaps B
                B

                A
A finishes B    B

                A
A includes B
                B

                A
 A starts B     B

                A
A coincides B
                B
Allen’s 13 Temporal Operators


                     Point-Point   Point-Interval   Interval-Interval

                 A
   A after B     B

                 A
  A metBy B      B

                 A
A overlapedBy B
                 B

                 A
A finishedBy B   B

                 A
  A during B
                 B

                 A
  A finishes B   B
Sliding Window Support


Allows reasoning over a moving window of “interest”
Time
Length
                 Sliding window 1




                      Sliding window 2




                    Joined window
Sliding Window Support



accumulate( $s : StockTicker( symbol == “RHAT” ) over window:time( 5s );
            $avg : avg( $s.price );
            $avg > 100 )



                                              Aggregate ticker price for RHAT over last 5 se
Sliding Window Support


Allows reasoning over a moving window of “interest”
Time
Length
rule “Average Order Value over 12 hours”
when
      $c : Customer()
      accumulate(
                BuyOrder( customer == $c, $p : price )
                                  over window:time( 12h );
                $a : avg( $p );
                $a > 10 )
then
      // do something
end
Calendars
rule "weekdays are high priority"
  calendars "weekday"
  timer (int:0 1h)                 Execute now and after
                                      1 hour duration
when
   Alarm()
then
   send( "priority high - we have an alarm” );
end

rule "weekend are low priority"
  calendars "weekend"
  timer (int:0 4h)                Execute now and after
                                     4 hour duration
when
   Alarm()
then
   send( "priority low - we have an alarm” );
end
Timers
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                 ,-*?/LW
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
rule “name”
  timer ( cron: 0 0/15 * * * * )
when
   Alarm( )
then
  sendEmail( ”Alert Alert Alert!!!” )
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 monitoring
Reduction 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 memory
Business hours: 1M+ facts/events concurrently
Response time for reasoning cycles:
Average: 150 ms
Peak: 1.2 sec
Several hundred rules
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
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.


en.
o, Joshua.
he only winning move is not to play. How about a nice game of chess?

Contenu connexe

Tendances

Introduction to Drools
Introduction to DroolsIntroduction to Drools
Introduction to Drools
giurca
 

Tendances (20)

Rule Engine & Drools
Rule Engine & DroolsRule Engine & Drools
Rule Engine & Drools
 
Spring boot introduction
Spring boot introductionSpring boot introduction
Spring boot introduction
 
Drools 6 deep dive
Drools 6 deep diveDrools 6 deep dive
Drools 6 deep dive
 
React Components Lifecycle | React Tutorial for Beginners | ReactJS Training ...
React Components Lifecycle | React Tutorial for Beginners | ReactJS Training ...React Components Lifecycle | React Tutorial for Beginners | ReactJS Training ...
React Components Lifecycle | React Tutorial for Beginners | ReactJS Training ...
 
Deep Dive Java 17 Devoxx UK
Deep Dive Java 17 Devoxx UKDeep Dive Java 17 Devoxx UK
Deep Dive Java 17 Devoxx UK
 
Kotlin @ Coupang Backend 2017
Kotlin @ Coupang Backend 2017Kotlin @ Coupang Backend 2017
Kotlin @ Coupang Backend 2017
 
Joy of scala
Joy of scalaJoy of scala
Joy of scala
 
Introduction to Drools
Introduction to DroolsIntroduction to Drools
Introduction to Drools
 
ReactJS
ReactJSReactJS
ReactJS
 
Asynchronous JavaScript Programming
Asynchronous JavaScript ProgrammingAsynchronous JavaScript Programming
Asynchronous JavaScript Programming
 
Jsp presentation
Jsp presentationJsp presentation
Jsp presentation
 
Form認証で学ぶSpring Security入門
Form認証で学ぶSpring Security入門Form認証で学ぶSpring Security入門
Form認証で学ぶSpring Security入門
 
Introducing Kogito
Introducing KogitoIntroducing Kogito
Introducing Kogito
 
Practical Event Sourcing
Practical Event SourcingPractical Event Sourcing
Practical Event Sourcing
 
Introduction to Redux
Introduction to ReduxIntroduction to Redux
Introduction to Redux
 
Final field semantics
Final field semanticsFinal field semantics
Final field semantics
 
Gradle
GradleGradle
Gradle
 
Threading Made Easy! A Busy Developer’s Guide to Kotlin Coroutines
Threading Made Easy! A Busy Developer’s Guide to Kotlin CoroutinesThreading Made Easy! A Busy Developer’s Guide to Kotlin Coroutines
Threading Made Easy! A Busy Developer’s Guide to Kotlin Coroutines
 
Spring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjugSpring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjug
 
ReactJS presentation.pptx
ReactJS presentation.pptxReactJS presentation.pptx
ReactJS presentation.pptx
 

Similaire à Drools Expert and Fusion Intro : London 2012

Lille2010markp
Lille2010markpLille2010markp
Lille2010markp
Ch'ti JUG
 
Hybrid rule engines (rulesfest 2010)
Hybrid rule engines (rulesfest 2010)Hybrid rule engines (rulesfest 2010)
Hybrid rule engines (rulesfest 2010)
Geoffrey De Smet
 
Drools New York City workshop 2011
Drools New York City workshop 2011Drools New York City workshop 2011
Drools New York City workshop 2011
Geoffrey De Smet
 
2011-03-29 London - drools
2011-03-29 London - drools2011-03-29 London - drools
2011-03-29 London - drools
Geoffrey De Smet
 

Similaire à Drools Expert and Fusion Intro : London 2012 (20)

Lille2010markp
Lille2010markpLille2010markp
Lille2010markp
 
JUDCon India 2012 Drools Expert
JUDCon  India 2012 Drools ExpertJUDCon  India 2012 Drools Expert
JUDCon India 2012 Drools Expert
 
What's new in Drools 6 - London JBUG 2013
What's new in Drools 6 - London JBUG 2013What's new in Drools 6 - London JBUG 2013
What's new in Drools 6 - London JBUG 2013
 
Drools 6.0 (CamelOne 2013)
Drools 6.0 (CamelOne 2013)Drools 6.0 (CamelOne 2013)
Drools 6.0 (CamelOne 2013)
 
Hybrid rule engines (rulesfest 2010)
Hybrid rule engines (rulesfest 2010)Hybrid rule engines (rulesfest 2010)
Hybrid rule engines (rulesfest 2010)
 
Buenos Aires Drools Expert Presentation
Buenos Aires Drools Expert PresentationBuenos Aires Drools Expert Presentation
Buenos Aires Drools Expert Presentation
 
Classic Games Development with Drools
Classic Games Development with DroolsClassic Games Development with Drools
Classic Games Development with Drools
 
Drools New York City workshop 2011
Drools New York City workshop 2011Drools New York City workshop 2011
Drools New York City workshop 2011
 
JBoss World 2011 - Drools
JBoss World 2011 - DroolsJBoss World 2011 - Drools
JBoss World 2011 - Drools
 
Learning Rule Based Programming using Games @DecisionCamp 2016
Learning Rule Based Programming using Games @DecisionCamp 2016Learning Rule Based Programming using Games @DecisionCamp 2016
Learning Rule Based Programming using Games @DecisionCamp 2016
 
Serverless Functions and Vue.js
Serverless Functions and Vue.jsServerless Functions and Vue.js
Serverless Functions and Vue.js
 
Clojure workshop
Clojure workshopClojure workshop
Clojure workshop
 
Improving application design with a rich domain model (springone 2007)
Improving application design with a rich domain model (springone 2007)Improving application design with a rich domain model (springone 2007)
Improving application design with a rich domain model (springone 2007)
 
Drools Introduction
Drools IntroductionDrools Introduction
Drools Introduction
 
rules, events and workflow
rules, events and workflowrules, events and workflow
rules, events and workflow
 
Drools and BRMS 6.0 (Dublin Aug 2013)
Drools and BRMS 6.0 (Dublin Aug 2013)Drools and BRMS 6.0 (Dublin Aug 2013)
Drools and BRMS 6.0 (Dublin Aug 2013)
 
Teaching Your Machine To Find Fraudsters
Teaching Your Machine To Find FraudstersTeaching Your Machine To Find Fraudsters
Teaching Your Machine To Find Fraudsters
 
CQRS and Event Sourcing
CQRS and Event SourcingCQRS and Event Sourcing
CQRS and Event Sourcing
 
2011-03-29 London - drools
2011-03-29 London - drools2011-03-29 London - drools
2011-03-29 London - drools
 
SQL Server 2008 Portfolio
SQL Server 2008 PortfolioSQL Server 2008 Portfolio
SQL Server 2008 Portfolio
 

Plus de Mark Proctor

Drools 6.0 (JudCon 2013)
Drools 6.0 (JudCon 2013)Drools 6.0 (JudCon 2013)
Drools 6.0 (JudCon 2013)
Mark Proctor
 

Plus de Mark Proctor (20)

Rule Modularity and Execution Control
Rule Modularity and Execution ControlRule Modularity and Execution Control
Rule Modularity and Execution Control
 
Drools, jBPM OptaPlanner presentation
Drools, jBPM OptaPlanner presentationDrools, jBPM OptaPlanner presentation
Drools, jBPM OptaPlanner presentation
 
Reducing the Cost of the Linear Growth Effect using Adaptive Rules with Unlin...
Reducing the Cost of the Linear Growth Effect using Adaptive Rules with Unlin...Reducing the Cost of the Linear Growth Effect using Adaptive Rules with Unlin...
Reducing the Cost of the Linear Growth Effect using Adaptive Rules with Unlin...
 
Drools, jBPM and OptaPlanner (NYC and DC Sept 2017 - Keynote Talk Video)
Drools, jBPM and OptaPlanner (NYC and DC Sept 2017 - Keynote Talk Video)Drools, jBPM and OptaPlanner (NYC and DC Sept 2017 - Keynote Talk Video)
Drools, jBPM and OptaPlanner (NYC and DC Sept 2017 - Keynote Talk Video)
 
Drools Happenings 7.0 - Devnation 2016
Drools Happenings 7.0 - Devnation 2016Drools Happenings 7.0 - Devnation 2016
Drools Happenings 7.0 - Devnation 2016
 
RuleML2015 : Hybrid Relational and Graph Reasoning
RuleML2015 : Hybrid Relational and Graph Reasoning RuleML2015 : Hybrid Relational and Graph Reasoning
RuleML2015 : Hybrid Relational and Graph Reasoning
 
Red Hat Summit 2015 : Drools, jBPM and UberFire Roadmaps
Red Hat Summit 2015 : Drools, jBPM and UberFire RoadmapsRed Hat Summit 2015 : Drools, jBPM and UberFire Roadmaps
Red Hat Summit 2015 : Drools, jBPM and UberFire Roadmaps
 
Red Hat JBoss BRMS and BPMS Workbench and Rich Client Technology
Red Hat JBoss BRMS and BPMS Workbench and Rich Client TechnologyRed Hat JBoss BRMS and BPMS Workbench and Rich Client Technology
Red Hat JBoss BRMS and BPMS Workbench and Rich Client Technology
 
UberFire Quick Intro and Overview (early beta Aug 2013)
UberFire Quick Intro and Overview (early beta Aug 2013)UberFire Quick Intro and Overview (early beta Aug 2013)
UberFire Quick Intro and Overview (early beta Aug 2013)
 
Property Reactive RuleML 2013
Property Reactive RuleML 2013Property Reactive RuleML 2013
Property Reactive RuleML 2013
 
Reactive Transitive Closures with Drools (Backward Chaining)
Reactive Transitive Closures with Drools (Backward Chaining)Reactive Transitive Closures with Drools (Backward Chaining)
Reactive Transitive Closures with Drools (Backward Chaining)
 
Drools 6.0 (JudCon 2013)
Drools 6.0 (JudCon 2013)Drools 6.0 (JudCon 2013)
Drools 6.0 (JudCon 2013)
 
UberFire Quick Intro and Overview (early beta Jul 2013)
UberFire Quick Intro and Overview (early beta Jul 2013)UberFire Quick Intro and Overview (early beta Jul 2013)
UberFire Quick Intro and Overview (early beta Jul 2013)
 
UberFire (JudCon 2013)
UberFire (JudCon 2013)UberFire (JudCon 2013)
UberFire (JudCon 2013)
 
Drools 6.0 (Red Hat Summit 2013)
Drools 6.0 (Red Hat Summit 2013)Drools 6.0 (Red Hat Summit 2013)
Drools 6.0 (Red Hat Summit 2013)
 
Games development with the Drools rule engine
Games development with the Drools rule engineGames development with the Drools rule engine
Games development with the Drools rule engine
 
Drools & jBPM future roadmap talk
Drools & jBPM future roadmap talkDrools & jBPM future roadmap talk
Drools & jBPM future roadmap talk
 
Drools @ IntelliFest 2012
Drools @ IntelliFest 2012Drools @ IntelliFest 2012
Drools @ IntelliFest 2012
 
JUDCon India 2012 Drools Fusion
JUDCon  India 2012 Drools FusionJUDCon  India 2012 Drools Fusion
JUDCon India 2012 Drools Fusion
 
Drools & jBPM Info Sheet
Drools & jBPM Info SheetDrools & jBPM Info Sheet
Drools & jBPM Info Sheet
 

Dernier

Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Dernier (20)

Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 

Drools Expert and Fusion Intro : London 2012

  • 1. Mark Proctor Project Lead 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
  • 3. Sample Industries and Users Investment Millennium Investment Group (MIG) Logistics Fedex Airline Sabre Mortgage Franklin American Healthcare OSDE
  • 4. 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 ....
  • 5. 5 Integrated Systems Rules Rules Workflows Workflows Event Processes Semantic Ontologies Semantic Event Ontologies Processes
  • 6. generic Rules and processes ? Decision Services SCOPE Process specific Rules tightly coupled COUPLING loosely coupled
  • 7. 7 Integrated Systems Drools JBPM5 Drools Drools Expert (Drools Flow) Fusion Guvnor Drools Drools Drools Drools Planner Grid Semantics Chance Business Logic integration System
  • 8. Because Not Everyone Is As Smart As He Is
  • 9. 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
  • 10. Definitions public class Applicant { private String name; private int age; private boolean valid; // getter and setter methods here } rule "Is of valid age" when $a : Applicant( age < 18 ) then modify( $a ) { valid = false }; ends
  • 11. Building KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add( ResourceFactory .newClassPathResource( "licenseApplication.drl", getClass() ), ResourceType.DRL ); if ( kbuilder.hasErrors() ) { System.err.println( kbuilder.getErrors().toString() ); } kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
  • 14. Executing rule "Is of valid age" when $a : Applicant( age < 18 ) then modify( $a ) { valid = false }; ends StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession(); Applicant applicant = new Applicant( "Mr John Smith", 16 ); assertTrue( applicant.isValid() ); ksession.execute( applicant ); assertFalse( applicant.isValid() );
  • 15. 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 { }
  • 16. Conditional Elements not Bus( color = “red” ) exists Bus( color = “red” ) forall ( $bus : Bus( color == “red” ) ) forall ( $bus : Bus( floors == 2 ) Bus( this == $bus, color == “red” ) )
  • 17. Accumulate CE rule "accumulate" when accumulate( Bus( color == "red", $t : takings ); $sum : sum( $t ), $min : min( $t ), $max : max( $t ); $min > 100 && $max < 200 && $sum > 500 ) then print "sum is “ + $sum; end
  • 18. Classes C a s h f lo w A cco u n t D a te d a te lo n g a c c o u n t N o d o u b le a m o u n t d o u b le b a la n c e in t t y p e lo n g a c c o u n t N o A c c o u n t in g P e r io d D a te s ta r t D a te e n d
  • 19. Credit Cashflow Rule 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 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
  • 20. Rules as a “view” CashFlow AccountingPeriod date amount type accountNo start end 12-Jan-07 100 CREDIT 1 01-Jan-07 31-Mar-07 2-Feb-07 200 DEBIT 1 18-May-07 50 CREDIT 1 Account 9-Mar-07 75 CREDIT 1 accountNo balance 1 0 rule “increase balance for AccountPeriod rule “decrease balance for AccountPeriod Credits” Debits” when when ap : AccountPeriod() ap : AccountPeriod() acc : Account( $accountNo : accountNo ) acc : Account( $accountNo : accountNo ) CashFlow( type == CREDIT, CashFlow( type == DEBIT, accountNo == $accountNo, accountNo == $accountNo, date >= ap.start && <= ap.end, date >= ap.start && <= ap.end, $ammount : ammount ) $ammount : ammount ) then then acc.balance += $amount; acc.balance -= $amount; end CashFlow end CashFlow date amount type date amount type 12-Jan-07 100 CREDIT 2-Feb-07 200 DEBIT 9-Mar-07 75 CREDIT Account accountNo balance 1 -25
  • 21. TMS and Inference rule "Issue Child Bus Pass" when $p : Person( age < 16 ) then insert(new ChildBusPass( $p ) ); end rule "Issue Adult Bus Pass" when $p : Person( age >= 16 ) then insert(new AdultBusPass( $p ) ); end
  • 22. TMS and Inference rule "Issue Child Bus Pass" Couples the logic when $p : Person( age < 16 ) then insert(new ChildBusPass( $p ) ); end rule "Issue Adult Bus Pass" What happens when the Child stops being 16? when $p : Person( age >= 16 ) then insert(new AdultBusPass( $p ) ); end
  • 23. TMS and Inference Bad Monolithic Leaky Brittle integrity - manual maintenance
  • 24. 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 ) de-couples the logic then logicalInsert( new IsChild( $p ) ) end when Maintains the truth by $p : Person( age >= 16 ) automatically retracting then logicalInsert( new IsAdult( $p ) ) end
  • 25. TMS and Inference rule "Issue Child Bus Pass" when $p : Person( ) IsChild( person =$p ) then logicalInsert(new ChildBusPass( $p ) ); end rule "Issue Adult Bus Pass" The truth maintenance when cascades $p : Person( age >= 16 ) IsAdult( person =$p ) then logicalInsert(new AdultBusPass( $p ) ); end
  • 26. TMS and Inference rule "Issue Child Bus Pass" when $p : Person( ) not( ChildBusPass( person == $p ) ) then The truth maintenance cascades requestChildBusPass( $p ); end
  • 27. TMS and Inference Good De-couple knowledge responsibilities Encapsulate knowledge Provide semantic abstractions for those encapsulation Integrity robustness – truth maintenance
  • 30. Wumpus World Cell Hero Wumpus Pitt Gold int row int row int row int row int row Int col Int col Int col Int col Int col
  • 32. What is Complex Event Processing 1. Detect 2. Correlate 3. React
  • 33. Time is Money Business Event Value Loss Business Value Reaction Time Time Loss Adapted from a presentation by James Taylor, Sep/2011
  • 34. Terminology: CEP and ESP For the scope of this presentation: “CEP is used as a common term meaning both CEP and ESP.”
  • 35. EDA vs SOA EDA is **not** SOA 2.0 Complementary architectures Metaphor In our body: SOA is used to build our muscles and organs EDA is used to build our sensory system
  • 37. Drools Fusion: Enables… Event Detection: From an event cloud or set of streams, select all the meaningful events, and only them. [Temporal] Event Correlation: Ability to correlate events and facts declaring both temporal and non-temporal constraints between them. Ability to reason over event aggregation Event Abstraction: Ability to compose complex events from atomic events AND reason over them
  • 38. Drools Fusion Features: Event Semantics as First Class Citizens Allow Detection, Correlation and Composition Temporal Constraints Session Clock Stream Processing Sliding Windows CEP volumes (scalability) (Re)Active Rules Data Loaders for Input
  • 39. Drools Fusion Features: Event Semantics as First Class Citizens Allow Detection, Correlation and Composition Temporal Constraints Session Clock Stream Processing Sliding Windows CEP volumes (scalability) (Re)Active Rules Data Loaders for Input
  • 40. Event Declaration and Semantics // declaring existing class import some.package.VoiceCall Event semantics: declare VoiceCall Point-in-time and Interval @role( event ) @timestamp( calltime ) @duration( duration ) An event is a fact with a few special end characteristics: // generating an event class Usually immutable, but not enforced declare StockTick @role( event ) Strong temporal relationships Lifecycle may be managed symbol : String price : double Allow use of sliding windows end “All events are facts, but not all facts are events.”
  • 41. Temporal Reasoning Semantics for: time: discrete events: point-in-time and interval Ability to express temporal relationships: Allen’s 13 temporal operators James F. Allen defined the 13 possible temporal relations between two events. Eiko Yoneki and Jean Bacon defined a unified semantics for event correlation over time and space.
  • 42. Stream Support (entry-points) A scoping abstraction for stream support Rule compiler gather all entry-point declarations and expose them through the session API Engine manages all the scoping and synchronization behind the scenes. rule “Stock Trade Correlation” when $c : Customer( type == “VIP” ) BuyOrderEvent( customer == $c, $id : id ) from entry-point “Home Broker Stream” BuyAckEvent( sourceEvent == $id ) from entry-point “Stock Trader Stream” then // take some action end
  • 43. Delaying Rules Negative patterns may require rule firings to be delayed. rule “Order timeout” when $bse : BuyShares ( $id : id ) not BuySharesAck( id == $id, this after[0s,30s] $bse ) then // Buy order was not acknowledged. Cancel operation // by timeout. end
  • 44. Temporal Relationships rule “Shipment not picked up in time” when Shipment( $pickupTime : scheduledPickupTime ) not ShipmentPickup( this before $pickupTime ) then // shipment not picked up... action required. end
  • 45. Temporal Relationships rule “Shipment not picked up in time” when Shipment( $pickupTime : scheduledPickupTime ) not ShipmentPickup( this before $pickupTime ) then // shipment not picked up... Action required. end Temporal Relationship
  • 46. Allen’s 13 Temporal Operators Point-Point Point-Interval Interval-Interval A A before B B A A meets B B A A overlaps B B A A finishes B B A A includes B B A A starts B B A A coincides B B
  • 47. Allen’s 13 Temporal Operators Point-Point Point-Interval Interval-Interval A A after B B A A metBy B B A A overlapedBy B B A A finishedBy B B A A during B B A A finishes B B
  • 48. Sliding Window Support Allows reasoning over a moving window of “interest” Time Length Sliding window 1 Sliding window 2 Joined window
  • 49. Sliding Window Support accumulate( $s : StockTicker( symbol == “RHAT” ) over window:time( 5s ); $avg : avg( $s.price ); $avg > 100 ) Aggregate ticker price for RHAT over last 5 se
  • 50. Sliding Window Support Allows reasoning over a moving window of “interest” Time Length rule “Average Order Value over 12 hours” when $c : Customer() accumulate( BuyOrder( customer == $c, $p : price ) over window:time( 12h ); $a : avg( $p ); $a > 10 ) then // do something end
  • 51. Calendars rule "weekdays are high priority" calendars "weekday" timer (int:0 1h) Execute now and after 1 hour duration when Alarm() then send( "priority high - we have an alarm” ); end rule "weekend are low priority" calendars "weekend" timer (int:0 4h) Execute now and after 4 hour duration when Alarm() then send( "priority low - we have an alarm” ); end
  • 52. Timers 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 ,-*?/LW 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 rule “name” timer ( cron: 0 0/15 * * * * ) when Alarm( ) then sendEmail( ”Alert Alert Alert!!!” )
  • 53. CEP Applied at FedEx Custom Critical * Presented by Adam Mollemkopf at ORF 2009
  • 54. 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 monitoring Reduction in insurance claims and shipment service failures Minimum 30% efficiency gains in shipment monitoring , saving at least 15% of Operations staff cost.
  • 55. 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 memory Business hours: 1M+ facts/events concurrently Response time for reasoning cycles: Average: 150 ms Peak: 1.2 sec Several hundred rules
  • 56. 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
  • 57. 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. en. o, Joshua. he only winning move is not to play. How about a nice game of chess?