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

Drools Books
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
Integrated Systems




              Rules       Rules   Workflows   Workflows

                                Event
                              Processes

                             Semantic
                             Ontologies


                                                Semantic
                Event                           Ontologies
              Processes
6
Integrated Systems




      Drools            JBPM5         Drools     Drools
      Expert         (Drools Flow)    Fusion     Guvnor




     Drools             Drools        Drools     Drools
     Planner             Grid        Semantics   Chance
7
Rules and processes
 generic




                              ?
                                           Decision
                                           Services
 SCOPE




                 Process
 specific




                  Rules




            tightly coupled   COUPLING   loosely coupled
8

Some Areas of Artificial Intelligence




                           Vision
           Robotics                       Natural
                       Some Areas of     Language
                          Artificial
         Speech         Intelligence     Understanding

            Neural Nets      Rule Base Systems/
                             Expert System Tools
9



Knowledge Representation and Reasoning

The study of Knowledge is Epistemology
  ● Nature Structure and Origins of Knowledge

  ● Core or AI




Rule based systems
 ● Expert System tools

 ● Knowledge Representation and Reasoning

 ● Facilitate the codification of knowledge into a

    knowledge base which can be used for reasoning
10
Knowledege Representation and Reasoning

    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
11
Knowledege Representation and Reasoning

      Description Logic
        ● Man

        ● Father

           ● is a Man

           ● has at least one child

        ● All Fathers have sunday off




       ●   Individual == instance
             ● Adhoc

                ● Classes and properties

                  added and inferred over time
       ●   Does a Man with two children have sundays off?
12
         It All Started Here
         Birth of CDSS

                       Dendral
1970s
                        Mycin


                                                          WM
                            Teiresias      Emycin
        Baobab
                                 Puff
             Guidon
                                        Sacon

                                                Centaur

                                                     Gravida

                                                Wheeze         Clot


1980s       Neomycin   Oncocin
13

Because Not Everyone
Is As Smart As He Is
14

And some day we'll build him!!!
15
Concepts Overview
16
Concepts Overview
18

                  What is a Rule


                                     salience     <int>
Quotes on Rule names are
                                     agenda-group <string>
optional if the rule name has
                                     no-loop      <boolean>
no spaces.
                                     auto-focus  <boolean>
                                     duration     <long>
                                     ....
   • rule “<name>”
         <attribute> <value>
         when
              <LHS>
         then
              <RHS>        RHS can be any valid java.
                           Or MVEL. Other languages
     end                   could be added.
19

                What is a Rule

             Methods that must                   specific passing of
             be called directly                  instances


        •         public void helloMark(Person person) {
Rules can never       if ( person.getName().equals( “mark” ) {
be called directly        System.out.println( “Hello Mark” );
                      }               Specific instances
                  }                   cannot be passed.

        •   rule “Hello Mark”                      LHS
                when
                     Person( name == “mark” )
                then
                     System.out.println( “Hello Mark” );
            end
                                      RHS
20

                  What is a Pattern

                                P a tte rn

   O b je c t T y p e                   F ie ld C o n s t r a in t

                            F ie ld N a m e                      R e s t r ic t io n


                                                          E v a lu a t o r      V a lu e



S h o w e r ( te m p e r a tu re = = “ h o t” )
21
                   Classes


                                                         C a s h f lo w
     A cco un 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
22
             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
23
                         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
24


                               Production Rule System
                               Approximated by SQL and Views



T a b le s   A cco unt              A c c o u n t in g P e r io d              C a s h f lo w




                                                                                           O b je c t T y p e s   A cco unt              A c c o u n t in g P e r io d              C a s h f lo w
V ie w s                 v ie w 1                                   v ie w 2




V ie w
                                      m a in v ie w                                        R u le s                           r u le 1                                   r u le 2




                                                                                           agenda
                                                                                                                                              agenda
25
                            Two Phase System

                                       Determine
                                     possible rules to
                                           fire
                                                               Agenda Evaluation




Working Memory Action




                                                              Rule
      insert                modify
                                                             Found             Select
                                                 Fire Rule
                                                                             Rule to Fire


                  retract




                                                                               No Rule
                                                                                Found




                                                                                   exit
26


             Conflict Resolution with Salience


                      Salience

rule “Print blance for AccountPeriod”
      salience -50
   when
      ap : AccountPeriod()
      acc : Account( )
   then
      System.out.println( acc.accountNo + “ : “ acc.balance );
end




Agenda
     1            increase balance
     2            decrease balance               arbitrary
     3            increase balance
     4            print balance
27
RuleFlow

           rule “increase balance for AccountPeriod Credits”
                ruleflow-group “calculation”
              when
                 ap : AccountPeriod()
                 acc : Account( $accountNo : accountNo )
                 CashFlow( type == CREDIT,
                            accountNo == $accountNo,
                            date >= ap.start && <= ap.end,
                            $ammount : ammount )
              then
                 acc.balance += $amount;
           end

                             ruleflow-group

           rule “Print blance for AccountPeriod”
                ruleflow-group “report”
              when
                 ap : AccountPeriod()
                 acc : Account( )
              then
                 System.out.println( acc.accountNo + “ : “ acc.balance );
           end
28
      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
29
                    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() );
30
                    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() );
31
                    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() );
32
              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 {
}
33
                 Definitions
rule "When there is a fire turn on the sprinkler" when
   Fire($room : room)
   $sprinkler : Sprinkler( room == $room, on == false )
then
   modify( $sprinkler ) { on = true };
   println( "Turn on the sprinkler for room " + $room.name );
end

rule "When the fire is gone turn off the sprinkler" when
   $room : Room( )
   $sprinkler : Sprinkler( room == $room, on == true )
   not Fire( room == $room )
then
   modify( $sprinkler ) { on = false };
   println( "Turn off the sprinkler for room " + $room.name );
end
34
               Definitions
rule "Raise the alarm when we have one or more fires" when
   exists Fire()
then
   insert( new Alarm() );
   println( "Raise the alarm" );
end

rule "Cancel the alarm when all the fires have gone" when
   not Fire()
   $alarm : Alarm()
then
   retract( $alarm );
   println( "Cancel the alarm" );
end
35
               Definitions


rule "Status output when things are ok" when
   not Alarm()
   not Sprinkler( on == true )
then
   println( "Everything is ok" );
end
36
                   Executing

String[] names = new String[]{"kitchen", "bedroom", "office", "livingroom"};
Map<String,Room> name2room = new HashMap<String,Room>();

for( String name: names ){
   Room room = new Room( name );
   name2room.put( name, room );
   ksession.insert( room );
   Sprinkler sprinkler = new Sprinkler( room );
   ksession.insert( sprinkler );
}

ksession.fireAllRules()


> Everything is ok
37
                   Executing

Fire kitchenFire = new Fire( name2room.get( "kitchen" ) );
Fire officeFire = new Fire( name2room.get( "office" ) );

FactHandle kitchenFireHandle = ksession.insert( kitchenFire );
FactHandle officeFireHandle = ksession.insert( officeFire );

ksession.fireAllRules();



> Raise the alarm
> Turn on the sprinkler for room kitchen
> Turn on the sprinkler for room office
38
                    Executing

ksession.retract( kitchenFireHandle );
ksession.retract( officeFireHandle );

ksession.fireAllRules()

> Turn off the sprinkler for room office
> Turn off the sprinkler for room kitchen
> Cancel the alarm
> Everything is ok

rule "Status output when things are ok" when
   not Alarm()
   not Sprinkler( on == true )
then
   println( "Everything is ok" );
end
39
             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” ) )
40
Accumulate CE

 rule "accumulate"
 when
    accumulate( Bus( color == "red", $t : takings );
                  $sum : sum( $t ) )
 then
    print "sum is “ + $sum;
 end

   accumulate( Bus( color == "red", $t : takings );
               $sum : sum( $t ),
               $min : min( $t )
               $max : max( $t );
               $min > 100 && $max < 200 )
41

             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!!!” )
42

                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
43
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
  when                                       stops being 16?
    $p : Person( age >= 16 )
  then
    insert(new AdultBusPass( $p ) );
  end
44
TMS and Inference

     Bad
       ●   Monolithic
       ●   Leaky
       ●   Brittle integrity - manual maintenance
45
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
46
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 cascades
  when
    $p : Person()
         IsAdult( person =$p )
  then
    logicalInsert(new AdultBusPass( $p ) );
  end
47
TMS and Inference

  rule "Issue Child Bus Pass"
  when
    $p : Person( )
         not( ChildBusPass( person == $p ) )
  then
     requestChildBusPass( $p );
  end                                   The truth maintenance cascades
48
TMS and Inference

     Good
       ●   De-couple knowledge responsibilities
       ●   Encapsulate knowledge
       ●   Provide semantic abstractions for those encapsulation
       ●   Integrity robustness – truth maintenance
49
Backward Chaining


     query isChild( Person p )
       $p := Person( age <= 16 )
     end

     rule "Issue Child Bus Pass"
     when
      $p : Person( )
            isChild( $p; )
     then
      logicalInsert(new ChildBusPass( $p ) );
     end
50
Reasoning with Graphs

                                       House



       ●Location( “office”,”house” )      ●Location( “kitchen”,”house” )




                     ●Location( “desk”,”office” )            ●Location( “chair”,”office” )



  Location( “lamp”,”desk” )
  ●
                                                 ●   Location( “computer”,”desk” )

                      ●  Location( “draw”,”desk” )




                          Location( “key”,”draw” )
                          ●
51
Backward Chaining


  query isContainedIn( String x, String y )
    Location( x, y; )
    or
    ( Location( z, y; ) and ?isContainedIn( x, z; ) )
  end
52
Backward Chaining
query isContainedIn( String x, String y )
  Location( x, y; )
  or
  ( Location( z, y; ) and ?isContainedIn( x, z; ) )
end                          House



         ●Location( “office”,”house” )    Location( “kitchen”,”house” )
                                          ●




                      ●Location( “desk”,”office” )      ●   Location( “chair”,”office”
                                                        )

   ●Location( “lamp”,”desk” )
                                                ●Location( “computer”,”desk” )

                      ●   Location( “draw”,”desk” )




                          Location( “key”,”draw” )
                          ●
53
             Questions?

                          • Dave Bowman: All right, HAL; I'll go in
                            through the emergency airlock.
                          • HAL: Without your space helmet, Dave,
                            you're going to find that rather difficult.
                          • Dave Bowman: HAL, I won't argue with
                            you anymore! Open the doors!
                          • HAL: Dave, this conversation can serve
                            no purpose anymore. Goodbye.




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

Weitere ähnliche Inhalte

Andere mochten auch

eServices-Tp4: esb++
eServices-Tp4: esb++eServices-Tp4: esb++
eServices-Tp4: esb++Lilia Sfaxi
 
eServices-Tp2: bpel
eServices-Tp2: bpeleServices-Tp2: bpel
eServices-Tp2: bpelLilia Sfaxi
 
eServices-Tp1: Web Services
eServices-Tp1: Web ServiceseServices-Tp1: Web Services
eServices-Tp1: Web ServicesLilia Sfaxi
 
eServices-Chp4: ESB
eServices-Chp4: ESBeServices-Chp4: ESB
eServices-Chp4: ESBLilia Sfaxi
 
eServices-Chp2: SOA
eServices-Chp2: SOAeServices-Chp2: SOA
eServices-Chp2: SOALilia Sfaxi
 
eServices-Chp1: Introduction
eServices-Chp1: IntroductioneServices-Chp1: Introduction
eServices-Chp1: IntroductionLilia Sfaxi
 
Microservices with Apache Camel
Microservices with Apache CamelMicroservices with Apache Camel
Microservices with Apache CamelClaus Ibsen
 
Chp1- Introduction aux Technologies Web et SOA
Chp1- Introduction aux Technologies Web et SOAChp1- Introduction aux Technologies Web et SOA
Chp1- Introduction aux Technologies Web et SOALilia Sfaxi
 
N-Tier Application Architecture
N-Tier Application ArchitectureN-Tier Application Architecture
N-Tier Application ArchitectureManoj Kumar
 
eServices-Chp3: Composition de Services
eServices-Chp3: Composition de ServiceseServices-Chp3: Composition de Services
eServices-Chp3: Composition de ServicesLilia Sfaxi
 
eServices-Chp6: WOA
eServices-Chp6: WOAeServices-Chp6: WOA
eServices-Chp6: WOALilia Sfaxi
 
Drools 6.0 (Red Hat Summit)
Drools 6.0 (Red Hat Summit)Drools 6.0 (Red Hat Summit)
Drools 6.0 (Red Hat Summit)Mark Proctor
 
Rule Engine & Drools
Rule Engine & DroolsRule Engine & Drools
Rule Engine & DroolsSandip Jadhav
 
Chp3 - Fonctionnement des ERP
Chp3 - Fonctionnement des ERPChp3 - Fonctionnement des ERP
Chp3 - Fonctionnement des ERPLilia Sfaxi
 
eServices-Chp5: Microservices et API Management
eServices-Chp5: Microservices et API ManagementeServices-Chp5: Microservices et API Management
eServices-Chp5: Microservices et API ManagementLilia Sfaxi
 
BigData_Chp3: Data Processing
BigData_Chp3: Data ProcessingBigData_Chp3: Data Processing
BigData_Chp3: Data ProcessingLilia Sfaxi
 
Conference MicroServices101 - 1ere partie
Conference MicroServices101 - 1ere partieConference MicroServices101 - 1ere partie
Conference MicroServices101 - 1ere partieZenika
 

Andere mochten auch (20)

eServices-Tp4: esb++
eServices-Tp4: esb++eServices-Tp4: esb++
eServices-Tp4: esb++
 
eServices-Tp2: bpel
eServices-Tp2: bpeleServices-Tp2: bpel
eServices-Tp2: bpel
 
eServices-Tp1: Web Services
eServices-Tp1: Web ServiceseServices-Tp1: Web Services
eServices-Tp1: Web Services
 
eServices-Chp4: ESB
eServices-Chp4: ESBeServices-Chp4: ESB
eServices-Chp4: ESB
 
eServices-Chp2: SOA
eServices-Chp2: SOAeServices-Chp2: SOA
eServices-Chp2: SOA
 
eServices-Chp1: Introduction
eServices-Chp1: IntroductioneServices-Chp1: Introduction
eServices-Chp1: Introduction
 
Microservices with Apache Camel
Microservices with Apache CamelMicroservices with Apache Camel
Microservices with Apache Camel
 
Chp1- Introduction aux Technologies Web et SOA
Chp1- Introduction aux Technologies Web et SOAChp1- Introduction aux Technologies Web et SOA
Chp1- Introduction aux Technologies Web et SOA
 
N-Tier Application Architecture
N-Tier Application ArchitectureN-Tier Application Architecture
N-Tier Application Architecture
 
eServices-Chp3: Composition de Services
eServices-Chp3: Composition de ServiceseServices-Chp3: Composition de Services
eServices-Chp3: Composition de Services
 
eServices-Chp6: WOA
eServices-Chp6: WOAeServices-Chp6: WOA
eServices-Chp6: WOA
 
Drools 6.0 (Red Hat Summit)
Drools 6.0 (Red Hat Summit)Drools 6.0 (Red Hat Summit)
Drools 6.0 (Red Hat Summit)
 
Rule Engine & Drools
Rule Engine & DroolsRule Engine & Drools
Rule Engine & Drools
 
Chp3 - Fonctionnement des ERP
Chp3 - Fonctionnement des ERPChp3 - Fonctionnement des ERP
Chp3 - Fonctionnement des ERP
 
IBM BPM & ODM
IBM BPM & ODMIBM BPM & ODM
IBM BPM & ODM
 
eServices-Chp5: Microservices et API Management
eServices-Chp5: Microservices et API ManagementeServices-Chp5: Microservices et API Management
eServices-Chp5: Microservices et API Management
 
BigData_Chp3: Data Processing
BigData_Chp3: Data ProcessingBigData_Chp3: Data Processing
BigData_Chp3: Data Processing
 
Drools et les moteurs de règles
Drools et les moteurs de règlesDrools et les moteurs de règles
Drools et les moteurs de règles
 
Conference MicroServices101 - 1ere partie
Conference MicroServices101 - 1ere partieConference MicroServices101 - 1ere partie
Conference MicroServices101 - 1ere partie
 
Introduction aux BRMS
Introduction aux BRMSIntroduction aux BRMS
Introduction aux BRMS
 

Ähnlich wie Drools @ IntelliFest 2012

Developing applications with rules, workflow and event processing (it@cork 2010)
Developing applications with rules, workflow and event processing (it@cork 2010)Developing applications with rules, workflow and event processing (it@cork 2010)
Developing applications with rules, workflow and event processing (it@cork 2010)Geoffrey De Smet
 
Ruleml2012 - A production rule-based framework for causal and epistemic reaso...
Ruleml2012 - A production rule-based framework for causal and epistemic reaso...Ruleml2012 - A production rule-based framework for causal and epistemic reaso...
Ruleml2012 - A production rule-based framework for causal and epistemic reaso...RuleML
 
Gerald.mulenburg
Gerald.mulenburgGerald.mulenburg
Gerald.mulenburgNASAPMC
 
Basho and Riak at GOTO Stockholm: "Don't Use My Database."
Basho and Riak at GOTO Stockholm:  "Don't Use My Database."Basho and Riak at GOTO Stockholm:  "Don't Use My Database."
Basho and Riak at GOTO Stockholm: "Don't Use My Database."Basho Technologies
 
Keynote Gartner Business Process Management Summit, February 2009, London
Keynote Gartner Business Process Management Summit, February 2009, London Keynote Gartner Business Process Management Summit, February 2009, London
Keynote Gartner Business Process Management Summit, February 2009, London Wil van der Aalst
 
Sigma Knowledge Engineering Environment
Sigma Knowledge Engineering EnvironmentSigma Knowledge Engineering Environment
Sigma Knowledge Engineering EnvironmentKingsley Uyi Idehen
 
Health Insurance Predictive Analysis with Hadoop and Machine Learning. JULIEN...
Health Insurance Predictive Analysis with Hadoop and Machine Learning. JULIEN...Health Insurance Predictive Analysis with Hadoop and Machine Learning. JULIEN...
Health Insurance Predictive Analysis with Hadoop and Machine Learning. JULIEN...Big Data Spain
 
Drools5 Community Training Module#1: Drools5 BLiP Introduction
Drools5 Community Training Module#1: Drools5 BLiP IntroductionDrools5 Community Training Module#1: Drools5 BLiP Introduction
Drools5 Community Training Module#1: Drools5 BLiP IntroductionMauricio (Salaboy) Salatino
 
Replacing Teachers with Crowds
Replacing Teachers with CrowdsReplacing Teachers with Crowds
Replacing Teachers with Crowdsjondron
 
Bluffers guide to Terminology
Bluffers guide to TerminologyBluffers guide to Terminology
Bluffers guide to TerminologyJim Gough
 
Foundations of Intelligence Agents
Foundations of Intelligence AgentsFoundations of Intelligence Agents
Foundations of Intelligence Agentsmahutte
 
Expert Systems & Prolog
Expert Systems & PrologExpert Systems & Prolog
Expert Systems & PrologFatih Karatana
 
Break Some Paradigms
Break Some ParadigmsBreak Some Paradigms
Break Some Paradigmsjimmybear
 
Barnan Das PhD Preliminary Exam
Barnan Das PhD Preliminary ExamBarnan Das PhD Preliminary Exam
Barnan Das PhD Preliminary ExamBarnan Das
 
Bluffers guide to elitist jargon - Martijn Verburg, Richard Warburton, James ...
Bluffers guide to elitist jargon - Martijn Verburg, Richard Warburton, James ...Bluffers guide to elitist jargon - Martijn Verburg, Richard Warburton, James ...
Bluffers guide to elitist jargon - Martijn Verburg, Richard Warburton, James ...JAX London
 
JBoss Drools - Open-Source Business Logic Platform
JBoss Drools - Open-Source Business Logic PlatformJBoss Drools - Open-Source Business Logic Platform
JBoss Drools - Open-Source Business Logic Platformelliando dias
 
Scientific data management from the lab to the web
Scientific data management   from the lab to the webScientific data management   from the lab to the web
Scientific data management from the lab to the webJose Manuel Gómez-Pérez
 

Ähnlich wie Drools @ IntelliFest 2012 (20)

Developing applications with rules, workflow and event processing (it@cork 2010)
Developing applications with rules, workflow and event processing (it@cork 2010)Developing applications with rules, workflow and event processing (it@cork 2010)
Developing applications with rules, workflow and event processing (it@cork 2010)
 
Ruleml2012 - A production rule-based framework for causal and epistemic reaso...
Ruleml2012 - A production rule-based framework for causal and epistemic reaso...Ruleml2012 - A production rule-based framework for causal and epistemic reaso...
Ruleml2012 - A production rule-based framework for causal and epistemic reaso...
 
Gerald.mulenburg
Gerald.mulenburgGerald.mulenburg
Gerald.mulenburg
 
1. The Game Of The Century
1. The Game Of The Century1. The Game Of The Century
1. The Game Of The Century
 
Basho and Riak at GOTO Stockholm: "Don't Use My Database."
Basho and Riak at GOTO Stockholm:  "Don't Use My Database."Basho and Riak at GOTO Stockholm:  "Don't Use My Database."
Basho and Riak at GOTO Stockholm: "Don't Use My Database."
 
Keynote Gartner Business Process Management Summit, February 2009, London
Keynote Gartner Business Process Management Summit, February 2009, London Keynote Gartner Business Process Management Summit, February 2009, London
Keynote Gartner Business Process Management Summit, February 2009, London
 
Are homes smart if they are aware?
Are homes smart if they are aware?Are homes smart if they are aware?
Are homes smart if they are aware?
 
Sigma Knowledge Engineering Environment
Sigma Knowledge Engineering EnvironmentSigma Knowledge Engineering Environment
Sigma Knowledge Engineering Environment
 
Health Insurance Predictive Analysis with Hadoop and Machine Learning. JULIEN...
Health Insurance Predictive Analysis with Hadoop and Machine Learning. JULIEN...Health Insurance Predictive Analysis with Hadoop and Machine Learning. JULIEN...
Health Insurance Predictive Analysis with Hadoop and Machine Learning. JULIEN...
 
Drools5 Community Training Module#1: Drools5 BLiP Introduction
Drools5 Community Training Module#1: Drools5 BLiP IntroductionDrools5 Community Training Module#1: Drools5 BLiP Introduction
Drools5 Community Training Module#1: Drools5 BLiP Introduction
 
Replacing Teachers with Crowds
Replacing Teachers with CrowdsReplacing Teachers with Crowds
Replacing Teachers with Crowds
 
Bluffers guide to Terminology
Bluffers guide to TerminologyBluffers guide to Terminology
Bluffers guide to Terminology
 
Foundations of Intelligence Agents
Foundations of Intelligence AgentsFoundations of Intelligence Agents
Foundations of Intelligence Agents
 
Expert Systems & Prolog
Expert Systems & PrologExpert Systems & Prolog
Expert Systems & Prolog
 
Break Some Paradigms
Break Some ParadigmsBreak Some Paradigms
Break Some Paradigms
 
Barnan Das PhD Preliminary Exam
Barnan Das PhD Preliminary ExamBarnan Das PhD Preliminary Exam
Barnan Das PhD Preliminary Exam
 
Data visualisation
Data visualisationData visualisation
Data visualisation
 
Bluffers guide to elitist jargon - Martijn Verburg, Richard Warburton, James ...
Bluffers guide to elitist jargon - Martijn Verburg, Richard Warburton, James ...Bluffers guide to elitist jargon - Martijn Verburg, Richard Warburton, James ...
Bluffers guide to elitist jargon - Martijn Verburg, Richard Warburton, James ...
 
JBoss Drools - Open-Source Business Logic Platform
JBoss Drools - Open-Source Business Logic PlatformJBoss Drools - Open-Source Business Logic Platform
JBoss Drools - Open-Source Business Logic Platform
 
Scientific data management from the lab to the web
Scientific data management   from the lab to the webScientific data management   from the lab to the web
Scientific data management from the lab to the web
 

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
 
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
 
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
 
Classic Games Development with Drools
Classic Games Development with DroolsClassic Games Development with Drools
Classic Games Development with DroolsMark Proctor
 
Drools and jBPM 6 Overview
Drools and jBPM 6 OverviewDrools and jBPM 6 Overview
Drools and jBPM 6 OverviewMark 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
 
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
 
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
 
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
 
Drools 6.0 (CamelOne 2013)
Drools 6.0 (CamelOne 2013)Drools 6.0 (CamelOne 2013)
Drools 6.0 (CamelOne 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
 

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)
 
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
 
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
 
Classic Games Development with Drools
Classic Games Development with DroolsClassic Games Development with Drools
Classic Games Development with Drools
 
Drools and jBPM 6 Overview
Drools and jBPM 6 OverviewDrools and jBPM 6 Overview
Drools and jBPM 6 Overview
 
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)
 
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)
 
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
 
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)
 
Drools 6.0 (CamelOne 2013)
Drools 6.0 (CamelOne 2013)Drools 6.0 (CamelOne 2013)
Drools 6.0 (CamelOne 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)
 

Kürzlich hochgeladen

SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 

Kürzlich hochgeladen (20)

SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 

Drools @ IntelliFest 2012

  • 1. 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. 3 Sample Industries and Users  Investment ● Millennium Investment Group (MIG)  Logistics ● Fedex  Airline ● Sabre  Mortgage ● Franklin American  Healthcare ● OSDE
  • 4. 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. 6 Integrated Systems Drools JBPM5 Drools Drools Expert (Drools Flow) Fusion Guvnor Drools Drools Drools Drools Planner Grid Semantics Chance
  • 7. 7 Rules and processes generic ? Decision Services SCOPE Process specific Rules tightly coupled COUPLING loosely coupled
  • 8. 8 Some Areas of Artificial Intelligence Vision Robotics Natural Some Areas of Language Artificial Speech Intelligence Understanding Neural Nets Rule Base Systems/ Expert System Tools
  • 9. 9 Knowledge Representation and Reasoning The study of Knowledge is Epistemology ● Nature Structure and Origins of Knowledge ● Core or AI Rule based systems ● Expert System tools ● Knowledge Representation and Reasoning ● Facilitate the codification of knowledge into a knowledge base which can be used for reasoning
  • 10. 10 Knowledege Representation and Reasoning  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
  • 11. 11 Knowledege Representation and Reasoning  Description Logic ● Man ● Father ● is a Man ● has at least one child ● All Fathers have sunday off ● Individual == instance ● Adhoc ● Classes and properties added and inferred over time ● Does a Man with two children have sundays off?
  • 12. 12 It All Started Here Birth of CDSS Dendral 1970s Mycin WM Teiresias Emycin Baobab Puff Guidon Sacon Centaur Gravida Wheeze Clot 1980s Neomycin Oncocin
  • 13. 13 Because Not Everyone Is As Smart As He Is
  • 14. 14 And some day we'll build him!!!
  • 17. 18 What is a Rule salience <int> Quotes on Rule names are agenda-group <string> optional if the rule name has no-loop <boolean> no spaces. auto-focus <boolean> duration <long> .... • rule “<name>” <attribute> <value> when <LHS> then <RHS> RHS can be any valid java. Or MVEL. Other languages end could be added.
  • 18. 19 What is a Rule Methods that must specific passing of be called directly instances • public void helloMark(Person person) { Rules can never if ( person.getName().equals( “mark” ) { be called directly System.out.println( “Hello Mark” ); } Specific instances } cannot be passed. • rule “Hello Mark” LHS when Person( name == “mark” ) then System.out.println( “Hello Mark” ); end RHS
  • 19. 20 What is a Pattern P a tte rn O b je c t T y p e F ie ld C o n s t r a in t F ie ld N a m e R e s t r ic t io n E v a lu a t o r V a lu e S h o w e r ( te m p e r a tu re = = “ h o t” )
  • 20. 21 Classes C a s h f lo w A cco un 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
  • 21. 22 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
  • 22. 23 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
  • 23. 24 Production Rule System Approximated by SQL and Views T a b le s A cco unt A c c o u n t in g P e r io d C a s h f lo w O b je c t T y p e s A cco unt A c c o u n t in g P e r io d C a s h f lo w V ie w s v ie w 1 v ie w 2 V ie w m a in v ie w R u le s r u le 1 r u le 2 agenda agenda
  • 24. 25 Two Phase System Determine possible rules to fire Agenda Evaluation Working Memory Action Rule insert modify Found Select Fire Rule Rule to Fire retract No Rule Found exit
  • 25. 26 Conflict Resolution with Salience Salience rule “Print blance for AccountPeriod” salience -50 when ap : AccountPeriod() acc : Account( ) then System.out.println( acc.accountNo + “ : “ acc.balance ); end Agenda 1 increase balance 2 decrease balance arbitrary 3 increase balance 4 print balance
  • 26. 27 RuleFlow rule “increase balance for AccountPeriod Credits” ruleflow-group “calculation” when ap : AccountPeriod() acc : Account( $accountNo : accountNo ) CashFlow( type == CREDIT, accountNo == $accountNo, date >= ap.start && <= ap.end, $ammount : ammount ) then acc.balance += $amount; end ruleflow-group rule “Print blance for AccountPeriod” ruleflow-group “report” when ap : AccountPeriod() acc : Account( ) then System.out.println( acc.accountNo + “ : “ acc.balance ); end
  • 27. 28 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
  • 28. 29 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() );
  • 29. 30 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() );
  • 30. 31 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() );
  • 31. 32 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 { }
  • 32. 33 Definitions rule "When there is a fire turn on the sprinkler" when Fire($room : room) $sprinkler : Sprinkler( room == $room, on == false ) then modify( $sprinkler ) { on = true }; println( "Turn on the sprinkler for room " + $room.name ); end rule "When the fire is gone turn off the sprinkler" when $room : Room( ) $sprinkler : Sprinkler( room == $room, on == true ) not Fire( room == $room ) then modify( $sprinkler ) { on = false }; println( "Turn off the sprinkler for room " + $room.name ); end
  • 33. 34 Definitions rule "Raise the alarm when we have one or more fires" when exists Fire() then insert( new Alarm() ); println( "Raise the alarm" ); end rule "Cancel the alarm when all the fires have gone" when not Fire() $alarm : Alarm() then retract( $alarm ); println( "Cancel the alarm" ); end
  • 34. 35 Definitions rule "Status output when things are ok" when not Alarm() not Sprinkler( on == true ) then println( "Everything is ok" ); end
  • 35. 36 Executing String[] names = new String[]{"kitchen", "bedroom", "office", "livingroom"}; Map<String,Room> name2room = new HashMap<String,Room>(); for( String name: names ){ Room room = new Room( name ); name2room.put( name, room ); ksession.insert( room ); Sprinkler sprinkler = new Sprinkler( room ); ksession.insert( sprinkler ); } ksession.fireAllRules() > Everything is ok
  • 36. 37 Executing Fire kitchenFire = new Fire( name2room.get( "kitchen" ) ); Fire officeFire = new Fire( name2room.get( "office" ) ); FactHandle kitchenFireHandle = ksession.insert( kitchenFire ); FactHandle officeFireHandle = ksession.insert( officeFire ); ksession.fireAllRules(); > Raise the alarm > Turn on the sprinkler for room kitchen > Turn on the sprinkler for room office
  • 37. 38 Executing ksession.retract( kitchenFireHandle ); ksession.retract( officeFireHandle ); ksession.fireAllRules() > Turn off the sprinkler for room office > Turn off the sprinkler for room kitchen > Cancel the alarm > Everything is ok rule "Status output when things are ok" when not Alarm() not Sprinkler( on == true ) then println( "Everything is ok" ); end
  • 38. 39 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” ) )
  • 39. 40 Accumulate CE rule "accumulate" when accumulate( Bus( color == "red", $t : takings ); $sum : sum( $t ) ) then print "sum is “ + $sum; end accumulate( Bus( color == "red", $t : takings ); $sum : sum( $t ), $min : min( $t ) $max : max( $t ); $min > 100 && $max < 200 )
  • 40. 41 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!!!” )
  • 41. 42 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
  • 42. 43 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 when stops being 16? $p : Person( age >= 16 ) then insert(new AdultBusPass( $p ) ); end
  • 43. 44 TMS and Inference  Bad ● Monolithic ● Leaky ● Brittle integrity - manual maintenance
  • 44. 45 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
  • 45. 46 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 cascades when $p : Person() IsAdult( person =$p ) then logicalInsert(new AdultBusPass( $p ) ); end
  • 46. 47 TMS and Inference rule "Issue Child Bus Pass" when $p : Person( ) not( ChildBusPass( person == $p ) ) then requestChildBusPass( $p ); end The truth maintenance cascades
  • 47. 48 TMS and Inference  Good ● De-couple knowledge responsibilities ● Encapsulate knowledge ● Provide semantic abstractions for those encapsulation ● Integrity robustness – truth maintenance
  • 48. 49 Backward Chaining query isChild( Person p ) $p := Person( age <= 16 ) end rule "Issue Child Bus Pass" when $p : Person( ) isChild( $p; ) then logicalInsert(new ChildBusPass( $p ) ); end
  • 49. 50 Reasoning with Graphs House ●Location( “office”,”house” ) ●Location( “kitchen”,”house” ) ●Location( “desk”,”office” ) ●Location( “chair”,”office” ) Location( “lamp”,”desk” ) ● ● Location( “computer”,”desk” ) ● Location( “draw”,”desk” ) Location( “key”,”draw” ) ●
  • 50. 51 Backward Chaining query isContainedIn( String x, String y ) Location( x, y; ) or ( Location( z, y; ) and ?isContainedIn( x, z; ) ) end
  • 51. 52 Backward Chaining query isContainedIn( String x, String y ) Location( x, y; ) or ( Location( z, y; ) and ?isContainedIn( x, z; ) ) end House ●Location( “office”,”house” ) Location( “kitchen”,”house” ) ● ●Location( “desk”,”office” ) ● Location( “chair”,”office” ) ●Location( “lamp”,”desk” ) ●Location( “computer”,”desk” ) ● Location( “draw”,”desk” ) Location( “key”,”draw” ) ●
  • 52. 53 Questions? • Dave Bowman: All right, HAL; I'll go in through the emergency airlock. • HAL: Without your space helmet, Dave, you're going to find that rather difficult. • Dave Bowman: HAL, I won't argue with you anymore! Open the doors! • HAL: Dave, this conversation can serve no purpose anymore. Goodbye. Joshua: Greetings, Professor Falken. Stephen Falken: Hello, Joshua. Joshua: A strange game. The only winning move is not to play. How about a nice game of chess?