SlideShare ist ein Scribd-Unternehmen logo
1 von 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?

Weitere ähnliche Inhalte

Was ist angesagt?

Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...
Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...
Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...Edureka!
 
Introduction to jQuery
Introduction to jQueryIntroduction to jQuery
Introduction to jQueryZeeshan Khan
 
jQuery Tutorial For Beginners | Developing User Interface (UI) Using jQuery |...
jQuery Tutorial For Beginners | Developing User Interface (UI) Using jQuery |...jQuery Tutorial For Beginners | Developing User Interface (UI) Using jQuery |...
jQuery Tutorial For Beginners | Developing User Interface (UI) Using jQuery |...Edureka!
 
Spring I/O 2012: Natural Templating in Spring MVC with Thymeleaf
Spring I/O 2012: Natural Templating in Spring MVC with ThymeleafSpring I/O 2012: Natural Templating in Spring MVC with Thymeleaf
Spring I/O 2012: Natural Templating in Spring MVC with ThymeleafThymeleaf
 
Jquery Complete Presentation along with Javascript Basics
Jquery Complete Presentation along with Javascript BasicsJquery Complete Presentation along with Javascript Basics
Jquery Complete Presentation along with Javascript BasicsEPAM Systems
 
JavaScript - Chapter 11 - Events
 JavaScript - Chapter 11 - Events  JavaScript - Chapter 11 - Events
JavaScript - Chapter 11 - Events WebStackAcademy
 
Basic Javascript
Basic JavascriptBasic Javascript
Basic JavascriptBunlong Van
 
HTML presentation for beginners
HTML presentation for beginnersHTML presentation for beginners
HTML presentation for beginnersjeroenvdmeer
 
An Introduction to the DOM
An Introduction to the DOMAn Introduction to the DOM
An Introduction to the DOMMindy McAdams
 
JavaScript: The Good Parts Or: How A C# Developer Learned To Stop Worrying An...
JavaScript: The Good Parts Or: How A C# Developer Learned To Stop Worrying An...JavaScript: The Good Parts Or: How A C# Developer Learned To Stop Worrying An...
JavaScript: The Good Parts Or: How A C# Developer Learned To Stop Worrying An...Doug Jones
 
Deep dive into SoapUI
Deep dive into SoapUIDeep dive into SoapUI
Deep dive into SoapUIAndrey Oleynik
 
Laravel presentation
Laravel presentationLaravel presentation
Laravel presentationToufiq Mahmud
 
Javascript 101
Javascript 101Javascript 101
Javascript 101Shlomi Komemi
 
Java 8 Lambda and Streams
Java 8 Lambda and StreamsJava 8 Lambda and Streams
Java 8 Lambda and StreamsVenkata Naga Ravi
 

Was ist angesagt? (20)

Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...
Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...
Node.js Tutorial for Beginners | Node.js Web Application Tutorial | Node.js T...
 
Drools
DroolsDrools
Drools
 
Introduction to jQuery
Introduction to jQueryIntroduction to jQuery
Introduction to jQuery
 
jQuery Tutorial For Beginners | Developing User Interface (UI) Using jQuery |...
jQuery Tutorial For Beginners | Developing User Interface (UI) Using jQuery |...jQuery Tutorial For Beginners | Developing User Interface (UI) Using jQuery |...
jQuery Tutorial For Beginners | Developing User Interface (UI) Using jQuery |...
 
jQuery PPT
jQuery PPTjQuery PPT
jQuery PPT
 
Spring I/O 2012: Natural Templating in Spring MVC with Thymeleaf
Spring I/O 2012: Natural Templating in Spring MVC with ThymeleafSpring I/O 2012: Natural Templating in Spring MVC with Thymeleaf
Spring I/O 2012: Natural Templating in Spring MVC with Thymeleaf
 
Jquery Complete Presentation along with Javascript Basics
Jquery Complete Presentation along with Javascript BasicsJquery Complete Presentation along with Javascript Basics
Jquery Complete Presentation along with Javascript Basics
 
Drools Ecosystem
Drools EcosystemDrools Ecosystem
Drools Ecosystem
 
JavaScript - Chapter 11 - Events
 JavaScript - Chapter 11 - Events  JavaScript - Chapter 11 - Events
JavaScript - Chapter 11 - Events
 
Basic Javascript
Basic JavascriptBasic Javascript
Basic Javascript
 
HTML presentation for beginners
HTML presentation for beginnersHTML presentation for beginners
HTML presentation for beginners
 
Introducing Kogito
Introducing KogitoIntroducing Kogito
Introducing Kogito
 
An Introduction to the DOM
An Introduction to the DOMAn Introduction to the DOM
An Introduction to the DOM
 
Dom
Dom Dom
Dom
 
JavaScript: The Good Parts Or: How A C# Developer Learned To Stop Worrying An...
JavaScript: The Good Parts Or: How A C# Developer Learned To Stop Worrying An...JavaScript: The Good Parts Or: How A C# Developer Learned To Stop Worrying An...
JavaScript: The Good Parts Or: How A C# Developer Learned To Stop Worrying An...
 
Deep dive into SoapUI
Deep dive into SoapUIDeep dive into SoapUI
Deep dive into SoapUI
 
Laravel presentation
Laravel presentationLaravel presentation
Laravel presentation
 
Document Object Model
Document Object ModelDocument Object Model
Document Object Model
 
Javascript 101
Javascript 101Javascript 101
Javascript 101
 
Java 8 Lambda and Streams
Java 8 Lambda and StreamsJava 8 Lambda and Streams
Java 8 Lambda and Streams
 

Ă„hnlich wie SkyNet Funding Bill Passes, System Goes Online August 4th 1997

Lille2010markp
Lille2010markpLille2010markp
Lille2010markpCh'ti JUG
 
JUDCon India 2012 Drools Expert
JUDCon  India 2012 Drools ExpertJUDCon  India 2012 Drools Expert
JUDCon India 2012 Drools ExpertMark Proctor
 
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 2013Mark Proctor
 
Drools 6.0 (CamelOne 2013)
Drools 6.0 (CamelOne 2013)Drools 6.0 (CamelOne 2013)
Drools 6.0 (CamelOne 2013)Mark Proctor
 
Hybrid rule engines (rulesfest 2010)
Hybrid rule engines (rulesfest 2010)Hybrid rule engines (rulesfest 2010)
Hybrid rule engines (rulesfest 2010)Geoffrey De Smet
 
Buenos Aires Drools Expert Presentation
Buenos Aires Drools Expert PresentationBuenos Aires Drools Expert Presentation
Buenos Aires Drools Expert PresentationMark Proctor
 
Classic Games Development with Drools
Classic Games Development with DroolsClassic Games Development with Drools
Classic Games Development with DroolsMark Proctor
 
Drools New York City workshop 2011
Drools New York City workshop 2011Drools New York City workshop 2011
Drools New York City workshop 2011Geoffrey De Smet
 
JBoss World 2011 - Drools
JBoss World 2011 - DroolsJBoss World 2011 - Drools
JBoss World 2011 - DroolsGeoffrey De Smet
 
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 2016Mark Proctor
 
Serverless Functions and Vue.js
Serverless Functions and Vue.jsServerless Functions and Vue.js
Serverless Functions and Vue.jsSarah Drasner
 
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)Chris Richardson
 
Drools Introduction
Drools IntroductionDrools Introduction
Drools IntroductionJBug Italy
 
rules, events and workflow
rules, events and workflowrules, events and workflow
rules, events and workflowMark Proctor
 
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)Mark Proctor
 
Teaching Your Machine To Find Fraudsters
Teaching Your Machine To Find FraudstersTeaching Your Machine To Find Fraudsters
Teaching Your Machine To Find FraudstersIan Barber
 
2011-03-29 London - drools
2011-03-29 London - drools2011-03-29 London - drools
2011-03-29 London - droolsGeoffrey De Smet
 
SQL Server 2008 Portfolio
SQL Server 2008 PortfolioSQL Server 2008 Portfolio
SQL Server 2008 Portfolioanthonyfeliciano
 

Ă„hnlich wie SkyNet Funding Bill Passes, System Goes Online August 4th 1997 (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
 

Mehr von Mark Proctor

Rule Modularity and Execution Control
Rule Modularity and Execution ControlRule Modularity and Execution Control
Rule Modularity and Execution ControlMark Proctor
 
Drools, jBPM OptaPlanner presentation
Drools, jBPM OptaPlanner presentationDrools, jBPM OptaPlanner presentation
Drools, jBPM OptaPlanner presentationMark Proctor
 
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...Mark Proctor
 
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)Mark Proctor
 
Drools Happenings 7.0 - Devnation 2016
Drools Happenings 7.0 - Devnation 2016Drools Happenings 7.0 - Devnation 2016
Drools Happenings 7.0 - Devnation 2016Mark Proctor
 
RuleML2015 : Hybrid Relational and Graph Reasoning
RuleML2015 : Hybrid Relational and Graph Reasoning RuleML2015 : Hybrid Relational and Graph Reasoning
RuleML2015 : Hybrid Relational and Graph Reasoning Mark Proctor
 
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 RoadmapsMark Proctor
 
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 TechnologyMark Proctor
 
Drools and jBPM 6 Overview
Drools and jBPM 6 OverviewDrools and jBPM 6 Overview
Drools and jBPM 6 OverviewMark Proctor
 
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)Mark Proctor
 
Property Reactive RuleML 2013
Property Reactive RuleML 2013Property Reactive RuleML 2013
Property Reactive RuleML 2013Mark Proctor
 
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)Mark Proctor
 
Drools 6.0 (JudCon 2013)
Drools 6.0 (JudCon 2013)Drools 6.0 (JudCon 2013)
Drools 6.0 (JudCon 2013)Mark Proctor
 
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)Mark Proctor
 
UberFire (JudCon 2013)
UberFire (JudCon 2013)UberFire (JudCon 2013)
UberFire (JudCon 2013)Mark Proctor
 
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)Mark Proctor
 
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 engineMark Proctor
 
Drools & jBPM future roadmap talk
Drools & jBPM future roadmap talkDrools & jBPM future roadmap talk
Drools & jBPM future roadmap talkMark Proctor
 
Drools @ IntelliFest 2012
Drools @ IntelliFest 2012Drools @ IntelliFest 2012
Drools @ IntelliFest 2012Mark Proctor
 
JUDCon India 2012 Drools Fusion
JUDCon  India 2012 Drools FusionJUDCon  India 2012 Drools Fusion
JUDCon India 2012 Drools FusionMark Proctor
 

Mehr von 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
 
Drools and jBPM 6 Overview
Drools and jBPM 6 OverviewDrools and jBPM 6 Overview
Drools and jBPM 6 Overview
 
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
 

KĂĽrzlich hochgeladen

The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 

KĂĽrzlich hochgeladen (20)

The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 

SkyNet Funding Bill Passes, System Goes Online August 4th 1997

  • 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?