SlideShare a Scribd company logo
Developing
    Configurable and
    High Performance
    Apps in Drools

    Ajay Mahajan
    Lead Architect




1
Agenda


      What, Where, Why, When

      Drools Eco-System & A Use Case

      Rule Definitions

      Usage - Deployment Modes


      Best Practices
                                       Value from Session

2
What, Where, Why, When




3
What is a Rule Engine




4
Where Does It Fit




                        Parameterization


                          Code

                          Config Files

                          Database


                           Rules Engine




5
Why Should I Bother




                                    • Many ways to define Rules
                   Flexibility &    • Group rules and define priorities
                  Configurability   • Plethora of functions that help in decisioning
    Rule Engine




                                    • User friendly and Business Like
                  Manageability     • Better Tooling Support
                                    • Easier Understanding & Visualization


                                    • Just define your rules not execution details
                  Declarative v/s   • Execution is handled by Rules Engine
                    Imperial          • Sequencing and Re-entry
6
FUDs – Fear, Uncertainty and Doubt
                  • True, as compared to if-else statements in code

       Slow       • However, Rules are precompiled
                  • In Some Cases, execution is faster if designed correctly




                  • Yes, they do have a learning curve

     Difficult    • Start small and Limit the features to those you really need
                  • You don’t have to learn each feature and function offered




      More        • Yes, rules engine do need more space than a java class file
                  • Precompiled Rules form a Rete graph


     Memory       • Use stateless models where use case allows
                  • Stateful models – Follow the optimizations and mind your memory



                  • Commercial Tools can get expensive, e.g. Blaze and Jrules

    Expensive     • Open Source Drools has evolved over time, in its version 5.5
                  • Drools used in high volume, mission critical systems

7
When Should I Use a Rule Engine
    IF (Requirements== expressed as rules)


    IF (Rules == many OR complex OR changing frequently)


    IF (Rules == managed separately from application code)


    IF (memory != very low)


    IF (Application == evolving)


    IF (Developers == have skills OR ok with learning curve)


    IF (Business Users == like to see / experiment with rules)


    IF ( Additional Complexity < Benefits in Flexibility + Configurability)


    THEN use Rules Engine
8
Drools Ecosystem




9
Jboss - Drools
            Expert
            • Main Rules Engine Component
            • Have Stabilized after going through product cycles
            • Highly Successful and widely used

            Rule Flow (replaced by jBPM)
            • Group into Rule sets and define flow chart to execute them
            • Graphical Environment to define work flows
            • jBPM using BPMN 2.0 is the way to go for any serious BPM

            Guvnor
            • Web Based GUI to manage the Rules
            • Split out as separate component in V5
            • Read Only in Production, but modify in test/UAT for business

            Planner
            • Resources– travelling salesman, scheduling, routing
            • Heuristic Rules
            • Relatively new

            Fusion
            • Event Processing- ESP / CEP use cases
            • Concept of Sliding Time window
            • Other products such as Esper and Twitter Storm

10
Drools Expert – Steps
              • DRL, Decision
     Define     Tables, DSL



              Compile    • To Knowledge base



                          Create      • Uses Knowledge base
                          Session

                                       Insert   • Causes Activations
                                       Facts

                                                   Fire       • RHS
                                                  Rules         Executes

11
Real Use Case



     Trades
                              Matching Engine               Match Statuses
     T1, T4, T3, T2
                                                            T1     C3
                                                            T2      C1 + C3
                                                            T3+T4       C4


                               Confirmation
                               C1, C2, C3, C4

      100’s of Trades and Confirmations inflowing per second at peak hr
      Flowing in any order, not necessarily one after the other
      One trade can exactly match to one confirmation
      A trade can match to more than one confirmation
      One or more trades can match to one Confirmation
12
DRL – Drools Rules Language
     rule "Perfect Match"
          salience 100

            when
                   t:Trade()
                   c:Confirm(qty == t.qty , confirmId == t.cusip , amt == t.amt , price == t.price )
            then
                   log("Perfect Match for " + t.toString() + c.toString());
                   Match perfectMatch = new Match(t,c, "Perfect");

                   // retract perfect matches
                   retract(t);
                   retract(c);
     end                                                               Trade to Confirm Matching

                                                                  Why is this
           The base language for Rules Definition                  blazing
               All other Forms compile to this language            fast ??

           Rich and Versatile
               Entire Syntax, features and Rules definition is available


           Least User Friendly
13
DSL - Domain Specific Language
     expander Match.dsl

     rule "Exact Match Trade to Confirm"
     when
          Match Trade and Confirm
               - on cusip with confirmId
               - on amt
               - on price
     then
          Log "Perfect Match“
          Create Match with Status “Perfect”
          Remove Matched Elements
     end


        This is real code not Pseudo code

        DSL combines with grammar definition and translates to DRL
        Very Easy to Understand for Users and Visualize
        Power of creating new business vocabulary
        Encourages reuse



14
Decision Table
                             RuleTable     TradeRequests
                             NAME          CONDITION
                                                   CONDITION        ACTION             ACTION              ACTION            ACTION              ACTION                ACTION
                                           event:Event
                                                   event:Event
                                           eventGroup
                                                   $param != null   TradeRequest tr = ne
                                                                                       tr.setStartCaptureDate(DateUtils.getBusinessDate(event.get$1(), $2+1));
                                                                                                           tr.setEndCaptureDate(DateUtils.getBusinessDate(event.get$1(), $2+1));
                                                                                                                             tr.setStartTradeDate(DateUtils.getBusinessDate(event.get$1(), $2));
                                                                                                                                                 tr.setEndTradeDate(Date
                                                                                                                                                                       tr.setSettlementF


Trade Condition                            Event                                       Start Capture       End Capture                                                 Settlement
(Comment Column)             Name          Group Date Present       Trade Type         Date                Date              Traded After        Traded Before         Flag
TD < ED ; F = F              IncOpenFail   I     effectiveDate      Open Fails                             FreezeDate, 0                         EffectiveDate, -1     "F"

TD < ED ; SD <= FD ; F = O   IncRegOpen    I       effectiveDate    Regular Open       EffectiveDate, -1   FreezeDate, 0                         EffectiveDate, -1     "O"
TD < ED ; FD < SD            IncExtSet     I       effectiveDate    Extended Settle    EffectiveDate, -1   FreezeDate, 0                         EffectiveDate, -1

ED<=TD ; SD <=FD ; CD <= FD IncShortSet    I       effectiveDate    Short Settle       EffectiveDate, 0    FreezeDate, 0     EffectiveDate, 0
TD < ED ; FD < PD           IncAsOf        I       effectiveDate    As of Trades       FreezeDate, 1                                             EffectiveDate, -1


                                                                                                                                            Corporate Actions

          Excel columns are designated as Conditions or Actions

          Top few control rows are hidden from users,
                     Control rows help translate the excel into DRL


          Easy to understand for Users, once basic Excel formats are given
          Fit for use cases where there is need for intense parameterization

15
Learning & Best Practices
       Experiences, Usage Models, Performance




16
Real Life Experiences

       Complex Matching Engines

       •   Multiple Engines used for various functional matching
       •   Performed at 600 transactions / sec on one instance of execution
       •   If the I/o (messaging / database) were commented, got 8k executions / sec
       •   Stateful models used, but memory was conversed through optimizations

       Corporate Actions – Event Validations, Trade Extraction

       • Stateless model that evaluates each event separately through set of rules
         • 100’s of rules based on event types defined in Decision Tables
       • Increase in number of rules barely dent the performance
         • For 10k executions, 2 rules take 320 ms, and 100 rules take 328 ms

       Risk Analysis & Calculations

       • Calculations have lot of parameters, such as credit rating, product type, etc.
       • Calculations segmented into small number of individual steps
       • The decision of which formulae to use, was done by a Rules Engine



17
Usage Models
     Synchronous Execution
          Request – Response Style                          Your            Rule
                                                          Application      Engine
          Can act on the decision immediately


     Asynchronous Pipeline
                                                                         Rule
          Messaging Style                               Events                      Actions
                                                                        Engine
          Very scalable and resilient


     In Process with the Application
          Jar file as part of the application
          Excellent for Stateless execution, as reduces I/o without increasing memory
          Stateful executions are challenge in clustered environment & need memory sizing


     Out of Process as a runtime component
          Central Deployment & Management
          Overheads in Communication, and hence affects performance
          Could become bottleneck / central point of failure
          Needs sophisticated scaling models (e.g. functional split based on Hash or some key)


18
Improving Performance ..1
     Keep Separate Deployable Units rather than a giant rule engine component
          Divide and Conquer


     Use Stateless Sessions where Business case allows
          You can cluster and load balance your services seamlessly
          You can use in-process deployments easily


     Limit the number of facts in Stateful Executions
          The degradation is exponential beyond 400k objects in memory
          If higher volumes anticipated, than plan for multi deployments using sharding concepts


     Limit the Size of the objects checked in memory
          Use DTO (Data Transfer Object) pattern


     Use Batched Mode of Execution
          Check in more objects if you can in one go into the memory




19
Improving Performance ..2
     Use Drools only for decisions, not performing actual actions
           Let the decisions be communicated to a downstream component or by the caller to Rules Engine


     Avoid using evals(), --- use only as a last resort
           The java code inside eval is difficult to optimize into rete tree


     Work on aggregates where possible
           Rather than Checking Individual facts into the memory


     If you want to dig deeper
           Read more on the Rete Algorithm




20
Development Tips
     Use the IDE
          Syntax Validations
          DSL conversions
          Drools Debugging

     Use events
          Understanding how rules activate and fire
          Helpful for troubleshooting
          Remember to turn off in production


     Keep individual rules small, simple and atomic
          Avoid cyclic triggering of rules when you update the facts
          Use Agenda groups & Activation groups wherever applicable




21
Ajay Mahajan



     ajay.mahajan@wipro.com




22

More Related Content

What's hot

Introducing Drools
Introducing DroolsIntroducing Drools
Introducing DroolsMario Fusco
 
clean code book summary - uncle bob - English version
clean code book summary - uncle bob - English versionclean code book summary - uncle bob - English version
clean code book summary - uncle bob - English version
saber tabatabaee
 
Rule Engine & Drools
Rule Engine & DroolsRule Engine & Drools
Rule Engine & Drools
Sandip Jadhav
 
Clean code: meaningful Name
Clean code: meaningful NameClean code: meaningful Name
Clean code: meaningful Namenahid035
 
Dual write strategies for microservices
Dual write strategies for microservicesDual write strategies for microservices
Dual write strategies for microservices
Bilgin Ibryam
 
Building modern data lakes
Building modern data lakes Building modern data lakes
Building modern data lakes
Minio
 
Domain Driven Design Introduction
Domain Driven Design IntroductionDomain Driven Design Introduction
Domain Driven Design Introduction
wojtek_s
 
Clean code
Clean codeClean code
Clean code
ifnu bima
 
Pragmatic functional refactoring with java 8
Pragmatic functional refactoring with java 8Pragmatic functional refactoring with java 8
Pragmatic functional refactoring with java 8
RichardWarburton
 
Best practices in deploying IBM Operation Decision Manager Standard 8.8.0
Best practices in deploying IBM Operation Decision Manager Standard 8.8.0Best practices in deploying IBM Operation Decision Manager Standard 8.8.0
Best practices in deploying IBM Operation Decision Manager Standard 8.8.0
Pierre Feillet
 
Domain Driven Design and Hexagonal Architecture with Rails
Domain Driven Design and Hexagonal Architecture with RailsDomain Driven Design and Hexagonal Architecture with Rails
Domain Driven Design and Hexagonal Architecture with Rails
Declan Whelan
 
LMAX Disruptor - High Performance Inter-Thread Messaging Library
LMAX Disruptor - High Performance Inter-Thread Messaging LibraryLMAX Disruptor - High Performance Inter-Thread Messaging Library
LMAX Disruptor - High Performance Inter-Thread Messaging Library
Sebastian Andrasoni
 
Introducing Saga Pattern in Microservices with Spring Statemachine
Introducing Saga Pattern in Microservices with Spring StatemachineIntroducing Saga Pattern in Microservices with Spring Statemachine
Introducing Saga Pattern in Microservices with Spring Statemachine
VMware Tanzu
 
High Concurrency Architecture at TIKI
High Concurrency Architecture at TIKIHigh Concurrency Architecture at TIKI
High Concurrency Architecture at TIKI
Nghia Minh
 
Groovy Programming Language
Groovy Programming LanguageGroovy Programming Language
Groovy Programming Language
Aniruddha Chakrabarti
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
Ryan Riley
 
Modeling with Hadoop kdd2011
Modeling with Hadoop kdd2011Modeling with Hadoop kdd2011
Modeling with Hadoop kdd2011
Milind Bhandarkar
 
Chapter 5 design of keyvalue databses from nosql for mere mortals
Chapter 5 design of keyvalue databses from nosql for mere mortalsChapter 5 design of keyvalue databses from nosql for mere mortals
Chapter 5 design of keyvalue databses from nosql for mere mortals
nehabsairam
 
Naming Standards, Clean Code
Naming Standards, Clean CodeNaming Standards, Clean Code
Naming Standards, Clean Code
CleanestCode
 
Clean code
Clean codeClean code
Clean code
Arturo Herrero
 

What's hot (20)

Introducing Drools
Introducing DroolsIntroducing Drools
Introducing Drools
 
clean code book summary - uncle bob - English version
clean code book summary - uncle bob - English versionclean code book summary - uncle bob - English version
clean code book summary - uncle bob - English version
 
Rule Engine & Drools
Rule Engine & DroolsRule Engine & Drools
Rule Engine & Drools
 
Clean code: meaningful Name
Clean code: meaningful NameClean code: meaningful Name
Clean code: meaningful Name
 
Dual write strategies for microservices
Dual write strategies for microservicesDual write strategies for microservices
Dual write strategies for microservices
 
Building modern data lakes
Building modern data lakes Building modern data lakes
Building modern data lakes
 
Domain Driven Design Introduction
Domain Driven Design IntroductionDomain Driven Design Introduction
Domain Driven Design Introduction
 
Clean code
Clean codeClean code
Clean code
 
Pragmatic functional refactoring with java 8
Pragmatic functional refactoring with java 8Pragmatic functional refactoring with java 8
Pragmatic functional refactoring with java 8
 
Best practices in deploying IBM Operation Decision Manager Standard 8.8.0
Best practices in deploying IBM Operation Decision Manager Standard 8.8.0Best practices in deploying IBM Operation Decision Manager Standard 8.8.0
Best practices in deploying IBM Operation Decision Manager Standard 8.8.0
 
Domain Driven Design and Hexagonal Architecture with Rails
Domain Driven Design and Hexagonal Architecture with RailsDomain Driven Design and Hexagonal Architecture with Rails
Domain Driven Design and Hexagonal Architecture with Rails
 
LMAX Disruptor - High Performance Inter-Thread Messaging Library
LMAX Disruptor - High Performance Inter-Thread Messaging LibraryLMAX Disruptor - High Performance Inter-Thread Messaging Library
LMAX Disruptor - High Performance Inter-Thread Messaging Library
 
Introducing Saga Pattern in Microservices with Spring Statemachine
Introducing Saga Pattern in Microservices with Spring StatemachineIntroducing Saga Pattern in Microservices with Spring Statemachine
Introducing Saga Pattern in Microservices with Spring Statemachine
 
High Concurrency Architecture at TIKI
High Concurrency Architecture at TIKIHigh Concurrency Architecture at TIKI
High Concurrency Architecture at TIKI
 
Groovy Programming Language
Groovy Programming LanguageGroovy Programming Language
Groovy Programming Language
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Modeling with Hadoop kdd2011
Modeling with Hadoop kdd2011Modeling with Hadoop kdd2011
Modeling with Hadoop kdd2011
 
Chapter 5 design of keyvalue databses from nosql for mere mortals
Chapter 5 design of keyvalue databses from nosql for mere mortalsChapter 5 design of keyvalue databses from nosql for mere mortals
Chapter 5 design of keyvalue databses from nosql for mere mortals
 
Naming Standards, Clean Code
Naming Standards, Clean CodeNaming Standards, Clean Code
Naming Standards, Clean Code
 
Clean code
Clean codeClean code
Clean code
 

Viewers also liked

Drools 6 deep dive
Drools 6 deep diveDrools 6 deep dive
Drools 6 deep dive
Mario Fusco
 
Developing Complex Business Rules with Drools Integration
Developing Complex Business Rules with Drools IntegrationDeveloping Complex Business Rules with Drools Integration
Developing Complex Business Rules with Drools Integration
Bonitasoft
 
JBoss Drools - Pure Java Rule Engine
JBoss Drools - Pure Java Rule EngineJBoss Drools - Pure Java Rule Engine
JBoss Drools - Pure Java Rule Engine
Anil Allewar
 
Drools and jBPM 6 Overview
Drools and jBPM 6 OverviewDrools and jBPM 6 Overview
Drools and jBPM 6 Overview
Mark Proctor
 
Cork JUG - Drools basics &amp; pitfalls
Cork JUG - Drools basics &amp; pitfallsCork JUG - Drools basics &amp; pitfalls
Cork JUG - Drools basics &amp; pitfalls
Mauricio (Salaboy) Salatino
 
Rule Engine Evaluation for Complex Event Processing
Rule Engine Evaluation for Complex Event ProcessingRule Engine Evaluation for Complex Event Processing
Rule Engine Evaluation for Complex Event Processing
Chandra Divi
 
#CPBR7 - Métricas para startups
#CPBR7 - Métricas para startups#CPBR7 - Métricas para startups
#CPBR7 - Métricas para startups
Saulo Arruda
 
Melhores Práticas no Uso da Nuvem AWS
Melhores Práticas no Uso da Nuvem AWSMelhores Práticas no Uso da Nuvem AWS
Melhores Práticas no Uso da Nuvem AWS
Amazon Web Services LATAM
 
How a major industrial group automated its purchase order processes
How a major industrial group automated its purchase order processesHow a major industrial group automated its purchase order processes
How a major industrial group automated its purchase order processes
Alain Bezançon
 
How a turnpike commission manages client requests case study by WorkflowGen
How a turnpike commission manages client requests case study by WorkflowGenHow a turnpike commission manages client requests case study by WorkflowGen
How a turnpike commission manages client requests case study by WorkflowGen
Alain Bezançon
 
Best practices webinar
Best practices webinarBest practices webinar
Best practices webinar
Eric D. Schabell
 
Business Rule Engine
Business Rule EngineBusiness Rule Engine
Business Rule EngineAnkur Singhal
 
Geospatial Indexing and Querying with MongoDB
Geospatial Indexing and Querying with MongoDBGeospatial Indexing and Querying with MongoDB
Geospatial Indexing and Querying with MongoDB
Grant Goodale
 
Getting Started With #Drools 6 Slides - JBUG Denmark
Getting Started With #Drools 6 Slides - JBUG DenmarkGetting Started With #Drools 6 Slides - JBUG Denmark
Getting Started With #Drools 6 Slides - JBUG Denmark
Mauricio (Salaboy) Salatino
 
IBM Smarter Business 2012 - Headless BPM
IBM Smarter Business 2012 - Headless BPMIBM Smarter Business 2012 - Headless BPM
IBM Smarter Business 2012 - Headless BPM
IBM Sverige
 
Drools Happenings 7.0 - Devnation 2016
Drools Happenings 7.0 - Devnation 2016Drools Happenings 7.0 - Devnation 2016
Drools Happenings 7.0 - Devnation 2016
Mark Proctor
 
Jboss jbpm and drools 1 introduction to drools architecture
Jboss jbpm and drools   1 introduction to drools architectureJboss jbpm and drools   1 introduction to drools architecture
Jboss jbpm and drools 1 introduction to drools architectureZoran Hristov
 
Arquiteturas de Alta Disponibilidade na AWS
Arquiteturas de Alta Disponibilidade na AWSArquiteturas de Alta Disponibilidade na AWS
Arquiteturas de Alta Disponibilidade na AWS
Amazon Web Services LATAM
 
Drools Workshop @JBCNCONF 2016
Drools Workshop @JBCNCONF 2016Drools Workshop @JBCNCONF 2016
Drools Workshop @JBCNCONF 2016
Mauricio (Salaboy) Salatino
 

Viewers also liked (20)

Drools 6 deep dive
Drools 6 deep diveDrools 6 deep dive
Drools 6 deep dive
 
Developing Complex Business Rules with Drools Integration
Developing Complex Business Rules with Drools IntegrationDeveloping Complex Business Rules with Drools Integration
Developing Complex Business Rules with Drools Integration
 
JBoss Drools - Pure Java Rule Engine
JBoss Drools - Pure Java Rule EngineJBoss Drools - Pure Java Rule Engine
JBoss Drools - Pure Java Rule Engine
 
Drools and jBPM 6 Overview
Drools and jBPM 6 OverviewDrools and jBPM 6 Overview
Drools and jBPM 6 Overview
 
Cork JUG - Drools basics &amp; pitfalls
Cork JUG - Drools basics &amp; pitfallsCork JUG - Drools basics &amp; pitfalls
Cork JUG - Drools basics &amp; pitfalls
 
Rule Engine Evaluation for Complex Event Processing
Rule Engine Evaluation for Complex Event ProcessingRule Engine Evaluation for Complex Event Processing
Rule Engine Evaluation for Complex Event Processing
 
#CPBR7 - Métricas para startups
#CPBR7 - Métricas para startups#CPBR7 - Métricas para startups
#CPBR7 - Métricas para startups
 
Drools expert-docs
Drools expert-docsDrools expert-docs
Drools expert-docs
 
Melhores Práticas no Uso da Nuvem AWS
Melhores Práticas no Uso da Nuvem AWSMelhores Práticas no Uso da Nuvem AWS
Melhores Práticas no Uso da Nuvem AWS
 
How a major industrial group automated its purchase order processes
How a major industrial group automated its purchase order processesHow a major industrial group automated its purchase order processes
How a major industrial group automated its purchase order processes
 
How a turnpike commission manages client requests case study by WorkflowGen
How a turnpike commission manages client requests case study by WorkflowGenHow a turnpike commission manages client requests case study by WorkflowGen
How a turnpike commission manages client requests case study by WorkflowGen
 
Best practices webinar
Best practices webinarBest practices webinar
Best practices webinar
 
Business Rule Engine
Business Rule EngineBusiness Rule Engine
Business Rule Engine
 
Geospatial Indexing and Querying with MongoDB
Geospatial Indexing and Querying with MongoDBGeospatial Indexing and Querying with MongoDB
Geospatial Indexing and Querying with MongoDB
 
Getting Started With #Drools 6 Slides - JBUG Denmark
Getting Started With #Drools 6 Slides - JBUG DenmarkGetting Started With #Drools 6 Slides - JBUG Denmark
Getting Started With #Drools 6 Slides - JBUG Denmark
 
IBM Smarter Business 2012 - Headless BPM
IBM Smarter Business 2012 - Headless BPMIBM Smarter Business 2012 - Headless BPM
IBM Smarter Business 2012 - Headless BPM
 
Drools Happenings 7.0 - Devnation 2016
Drools Happenings 7.0 - Devnation 2016Drools Happenings 7.0 - Devnation 2016
Drools Happenings 7.0 - Devnation 2016
 
Jboss jbpm and drools 1 introduction to drools architecture
Jboss jbpm and drools   1 introduction to drools architectureJboss jbpm and drools   1 introduction to drools architecture
Jboss jbpm and drools 1 introduction to drools architecture
 
Arquiteturas de Alta Disponibilidade na AWS
Arquiteturas de Alta Disponibilidade na AWSArquiteturas de Alta Disponibilidade na AWS
Arquiteturas de Alta Disponibilidade na AWS
 
Drools Workshop @JBCNCONF 2016
Drools Workshop @JBCNCONF 2016Drools Workshop @JBCNCONF 2016
Drools Workshop @JBCNCONF 2016
 

Similar to Developing Configurable and High Performance Apps in Drools

TechDays 2013 Juhani Lind: Acceptance Test Driven Development With VS 2012
TechDays 2013 Juhani Lind: Acceptance Test Driven Development With VS 2012TechDays 2013 Juhani Lind: Acceptance Test Driven Development With VS 2012
TechDays 2013 Juhani Lind: Acceptance Test Driven Development With VS 2012Tieturi Oy
 
PricingEngine_v2.5
PricingEngine_v2.5PricingEngine_v2.5
PricingEngine_v2.5Wei Zhang
 
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
 
Consolidated shared indexes in real time
Consolidated shared indexes in real timeConsolidated shared indexes in real time
Consolidated shared indexes in real timeJeff Mace
 
DevOps Fest 2020. immutable infrastructure as code. True story.
DevOps Fest 2020. immutable infrastructure as code. True story.DevOps Fest 2020. immutable infrastructure as code. True story.
DevOps Fest 2020. immutable infrastructure as code. True story.
Vlad Fedosov
 
Lets focus on business value
Lets focus on business valueLets focus on business value
Lets focus on business value
Einar Ingebrigtsen
 
Lets focus on business value
Lets focus on business valueLets focus on business value
Lets focus on business value
Einar Ingebrigtsen
 
JBoss Drools and Drools Fusion (CEP): Making Business Rules react to RTE
JBoss Drools and Drools Fusion (CEP): Making Business Rules react to RTEJBoss Drools and Drools Fusion (CEP): Making Business Rules react to RTE
JBoss Drools and Drools Fusion (CEP): Making Business Rules react to RTE
tsurdilovic
 
Effective Spring Transaction Management
Effective Spring Transaction ManagementEffective Spring Transaction Management
Effective Spring Transaction ManagementUMA MAHESWARI
 
Performance Tuning of .NET Application
Performance Tuning of .NET ApplicationPerformance Tuning of .NET Application
Performance Tuning of .NET ApplicationMainul Islam, CSM®
 
The Future of the Rules module in Drupal 8
The Future of the Rules module in Drupal 8The Future of the Rules module in Drupal 8
The Future of the Rules module in Drupal 8
Stan Ascher
 
Droolsand Rule Based Systems 2008 Srping
Droolsand Rule Based Systems 2008 SrpingDroolsand Rule Based Systems 2008 Srping
Droolsand Rule Based Systems 2008 Srping
Srinath Perera
 
Scale Machine Learning from zero to millions of users (April 2020)
Scale Machine Learning from zero to millions of users (April 2020)Scale Machine Learning from zero to millions of users (April 2020)
Scale Machine Learning from zero to millions of users (April 2020)
Julien SIMON
 
Hado“OPS” or Had “oops”
Hado“OPS” or Had “oops”Hado“OPS” or Had “oops”
Hado“OPS” or Had “oops”
Rocket Fuel Inc.
 
Converting Your Legacy Data to S1000D
Converting Your Legacy Data to S1000DConverting Your Legacy Data to S1000D
Converting Your Legacy Data to S1000D
dclsocialmedia
 
RightScale Webinar: Enterprise-Grade Cloud Cost Management
RightScale Webinar: Enterprise-Grade Cloud Cost ManagementRightScale Webinar: Enterprise-Grade Cloud Cost Management
RightScale Webinar: Enterprise-Grade Cloud Cost Management
RightScale
 
Lets focus on business value
Lets focus on business valueLets focus on business value
Lets focus on business value
Einar Ingebrigtsen
 
3rd party application integration with tally erp 9 | Tally Remote Support | ...
3rd party application integration with tally erp 9 | Tally Remote Support  | ...3rd party application integration with tally erp 9 | Tally Remote Support  | ...
3rd party application integration with tally erp 9 | Tally Remote Support | ...
stannventures.Pvt.Ltd
 
The Lean Cloud for Startups with AWS - Cost Optimisation
The Lean Cloud for Startups with AWS - Cost OptimisationThe Lean Cloud for Startups with AWS - Cost Optimisation
The Lean Cloud for Startups with AWS - Cost Optimisation
Amazon Web Services
 
Drools Presentation for Tallink.ee
Drools Presentation for Tallink.eeDrools Presentation for Tallink.ee
Drools Presentation for Tallink.eeAnton Arhipov
 

Similar to Developing Configurable and High Performance Apps in Drools (20)

TechDays 2013 Juhani Lind: Acceptance Test Driven Development With VS 2012
TechDays 2013 Juhani Lind: Acceptance Test Driven Development With VS 2012TechDays 2013 Juhani Lind: Acceptance Test Driven Development With VS 2012
TechDays 2013 Juhani Lind: Acceptance Test Driven Development With VS 2012
 
PricingEngine_v2.5
PricingEngine_v2.5PricingEngine_v2.5
PricingEngine_v2.5
 
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
 
Consolidated shared indexes in real time
Consolidated shared indexes in real timeConsolidated shared indexes in real time
Consolidated shared indexes in real time
 
DevOps Fest 2020. immutable infrastructure as code. True story.
DevOps Fest 2020. immutable infrastructure as code. True story.DevOps Fest 2020. immutable infrastructure as code. True story.
DevOps Fest 2020. immutable infrastructure as code. True story.
 
Lets focus on business value
Lets focus on business valueLets focus on business value
Lets focus on business value
 
Lets focus on business value
Lets focus on business valueLets focus on business value
Lets focus on business value
 
JBoss Drools and Drools Fusion (CEP): Making Business Rules react to RTE
JBoss Drools and Drools Fusion (CEP): Making Business Rules react to RTEJBoss Drools and Drools Fusion (CEP): Making Business Rules react to RTE
JBoss Drools and Drools Fusion (CEP): Making Business Rules react to RTE
 
Effective Spring Transaction Management
Effective Spring Transaction ManagementEffective Spring Transaction Management
Effective Spring Transaction Management
 
Performance Tuning of .NET Application
Performance Tuning of .NET ApplicationPerformance Tuning of .NET Application
Performance Tuning of .NET Application
 
The Future of the Rules module in Drupal 8
The Future of the Rules module in Drupal 8The Future of the Rules module in Drupal 8
The Future of the Rules module in Drupal 8
 
Droolsand Rule Based Systems 2008 Srping
Droolsand Rule Based Systems 2008 SrpingDroolsand Rule Based Systems 2008 Srping
Droolsand Rule Based Systems 2008 Srping
 
Scale Machine Learning from zero to millions of users (April 2020)
Scale Machine Learning from zero to millions of users (April 2020)Scale Machine Learning from zero to millions of users (April 2020)
Scale Machine Learning from zero to millions of users (April 2020)
 
Hado“OPS” or Had “oops”
Hado“OPS” or Had “oops”Hado“OPS” or Had “oops”
Hado“OPS” or Had “oops”
 
Converting Your Legacy Data to S1000D
Converting Your Legacy Data to S1000DConverting Your Legacy Data to S1000D
Converting Your Legacy Data to S1000D
 
RightScale Webinar: Enterprise-Grade Cloud Cost Management
RightScale Webinar: Enterprise-Grade Cloud Cost ManagementRightScale Webinar: Enterprise-Grade Cloud Cost Management
RightScale Webinar: Enterprise-Grade Cloud Cost Management
 
Lets focus on business value
Lets focus on business valueLets focus on business value
Lets focus on business value
 
3rd party application integration with tally erp 9 | Tally Remote Support | ...
3rd party application integration with tally erp 9 | Tally Remote Support  | ...3rd party application integration with tally erp 9 | Tally Remote Support  | ...
3rd party application integration with tally erp 9 | Tally Remote Support | ...
 
The Lean Cloud for Startups with AWS - Cost Optimisation
The Lean Cloud for Startups with AWS - Cost OptimisationThe Lean Cloud for Startups with AWS - Cost Optimisation
The Lean Cloud for Startups with AWS - Cost Optimisation
 
Drools Presentation for Tallink.ee
Drools Presentation for Tallink.eeDrools Presentation for Tallink.ee
Drools Presentation for Tallink.ee
 

Recently uploaded

Lesson 9 - Resisting Temptation Along the Way.pptx
Lesson 9 - Resisting Temptation Along the Way.pptxLesson 9 - Resisting Temptation Along the Way.pptx
Lesson 9 - Resisting Temptation Along the Way.pptx
Celso Napoleon
 
St John's Parish Diary for June 2024.pdf
St John's Parish Diary for June 2024.pdfSt John's Parish Diary for June 2024.pdf
St John's Parish Diary for June 2024.pdf
Chris Lyne
 
Deerfoot Church of Christ Bulletin 6 2 24
Deerfoot Church of Christ Bulletin 6 2 24Deerfoot Church of Christ Bulletin 6 2 24
Deerfoot Church of Christ Bulletin 6 2 24
deerfootcoc
 
Jude: Practical Exhortations_Jude 17-23.pptx
Jude: Practical Exhortations_Jude 17-23.pptxJude: Practical Exhortations_Jude 17-23.pptx
Jude: Practical Exhortations_Jude 17-23.pptx
Stephen Palm
 
What Should be the Christian View of Anime?
What Should be the Christian View of Anime?What Should be the Christian View of Anime?
What Should be the Christian View of Anime?
Joe Muraguri
 
The Good News, newsletter for June 2024 is here
The Good News, newsletter for June 2024 is hereThe Good News, newsletter for June 2024 is here
The Good News, newsletter for June 2024 is here
NoHo FUMC
 
Tarot for Your Self A Workbook for Personal Transformation Second Edition (M...
Tarot for Your Self  A Workbook for Personal Transformation Second Edition (M...Tarot for Your Self  A Workbook for Personal Transformation Second Edition (M...
Tarot for Your Self A Workbook for Personal Transformation Second Edition (M...
Mark457009
 
Exploring the Mindfulness Understanding Its Benefits.pptx
Exploring the Mindfulness Understanding Its Benefits.pptxExploring the Mindfulness Understanding Its Benefits.pptx
Exploring the Mindfulness Understanding Its Benefits.pptx
MartaLoveguard
 
The Chakra System in our body - A Portal to Interdimensional Consciousness.pptx
The Chakra System in our body - A Portal to Interdimensional Consciousness.pptxThe Chakra System in our body - A Portal to Interdimensional Consciousness.pptx
The Chakra System in our body - A Portal to Interdimensional Consciousness.pptx
Bharat Technology
 
English - The Book of Joshua the Son of Nun.pdf
English - The Book of Joshua the Son of Nun.pdfEnglish - The Book of Joshua the Son of Nun.pdf
English - The Book of Joshua the Son of Nun.pdf
Filipino Tracts and Literature Society Inc.
 
Kenneth Grant - Against the Light-Holmes Pub Grou Llc (1999).pdf
Kenneth Grant - Against the Light-Holmes Pub Grou Llc (1999).pdfKenneth Grant - Against the Light-Holmes Pub Grou Llc (1999).pdf
Kenneth Grant - Against the Light-Holmes Pub Grou Llc (1999).pdf
AlanBianch
 
The PBHP DYC ~ Reflections on The Dhamma (English).pptx
The PBHP DYC ~ Reflections on The Dhamma (English).pptxThe PBHP DYC ~ Reflections on The Dhamma (English).pptx
The PBHP DYC ~ Reflections on The Dhamma (English).pptx
OH TEIK BIN
 
Qualifications in psychology _Dr.Navis.pdf
Qualifications in psychology _Dr.Navis.pdfQualifications in psychology _Dr.Navis.pdf
Qualifications in psychology _Dr.Navis.pdf
Oavis Or
 
Evangelization in the footsteps of Saint Vincent de Paul
Evangelization in the footsteps of Saint Vincent de PaulEvangelization in the footsteps of Saint Vincent de Paul
Evangelization in the footsteps of Saint Vincent de Paul
Famvin: the Worldwide Vincentian Family
 
St. John's Parish Magazine - June 2024 ..
St. John's Parish Magazine - June 2024 ..St. John's Parish Magazine - June 2024 ..
St. John's Parish Magazine - June 2024 ..
Chris Lyne
 
HANUMAN STORIES: TIMELESS TEACHINGS FOR TODAY’S WORLD
HANUMAN STORIES: TIMELESS TEACHINGS FOR TODAY’S WORLDHANUMAN STORIES: TIMELESS TEACHINGS FOR TODAY’S WORLD
HANUMAN STORIES: TIMELESS TEACHINGS FOR TODAY’S WORLD
Learnyoga
 
Jesus Heals a Paralyzed Man for Children
Jesus Heals a Paralyzed Man for ChildrenJesus Heals a Paralyzed Man for Children
Jesus Heals a Paralyzed Man for Children
NelTorrente
 

Recently uploaded (17)

Lesson 9 - Resisting Temptation Along the Way.pptx
Lesson 9 - Resisting Temptation Along the Way.pptxLesson 9 - Resisting Temptation Along the Way.pptx
Lesson 9 - Resisting Temptation Along the Way.pptx
 
St John's Parish Diary for June 2024.pdf
St John's Parish Diary for June 2024.pdfSt John's Parish Diary for June 2024.pdf
St John's Parish Diary for June 2024.pdf
 
Deerfoot Church of Christ Bulletin 6 2 24
Deerfoot Church of Christ Bulletin 6 2 24Deerfoot Church of Christ Bulletin 6 2 24
Deerfoot Church of Christ Bulletin 6 2 24
 
Jude: Practical Exhortations_Jude 17-23.pptx
Jude: Practical Exhortations_Jude 17-23.pptxJude: Practical Exhortations_Jude 17-23.pptx
Jude: Practical Exhortations_Jude 17-23.pptx
 
What Should be the Christian View of Anime?
What Should be the Christian View of Anime?What Should be the Christian View of Anime?
What Should be the Christian View of Anime?
 
The Good News, newsletter for June 2024 is here
The Good News, newsletter for June 2024 is hereThe Good News, newsletter for June 2024 is here
The Good News, newsletter for June 2024 is here
 
Tarot for Your Self A Workbook for Personal Transformation Second Edition (M...
Tarot for Your Self  A Workbook for Personal Transformation Second Edition (M...Tarot for Your Self  A Workbook for Personal Transformation Second Edition (M...
Tarot for Your Self A Workbook for Personal Transformation Second Edition (M...
 
Exploring the Mindfulness Understanding Its Benefits.pptx
Exploring the Mindfulness Understanding Its Benefits.pptxExploring the Mindfulness Understanding Its Benefits.pptx
Exploring the Mindfulness Understanding Its Benefits.pptx
 
The Chakra System in our body - A Portal to Interdimensional Consciousness.pptx
The Chakra System in our body - A Portal to Interdimensional Consciousness.pptxThe Chakra System in our body - A Portal to Interdimensional Consciousness.pptx
The Chakra System in our body - A Portal to Interdimensional Consciousness.pptx
 
English - The Book of Joshua the Son of Nun.pdf
English - The Book of Joshua the Son of Nun.pdfEnglish - The Book of Joshua the Son of Nun.pdf
English - The Book of Joshua the Son of Nun.pdf
 
Kenneth Grant - Against the Light-Holmes Pub Grou Llc (1999).pdf
Kenneth Grant - Against the Light-Holmes Pub Grou Llc (1999).pdfKenneth Grant - Against the Light-Holmes Pub Grou Llc (1999).pdf
Kenneth Grant - Against the Light-Holmes Pub Grou Llc (1999).pdf
 
The PBHP DYC ~ Reflections on The Dhamma (English).pptx
The PBHP DYC ~ Reflections on The Dhamma (English).pptxThe PBHP DYC ~ Reflections on The Dhamma (English).pptx
The PBHP DYC ~ Reflections on The Dhamma (English).pptx
 
Qualifications in psychology _Dr.Navis.pdf
Qualifications in psychology _Dr.Navis.pdfQualifications in psychology _Dr.Navis.pdf
Qualifications in psychology _Dr.Navis.pdf
 
Evangelization in the footsteps of Saint Vincent de Paul
Evangelization in the footsteps of Saint Vincent de PaulEvangelization in the footsteps of Saint Vincent de Paul
Evangelization in the footsteps of Saint Vincent de Paul
 
St. John's Parish Magazine - June 2024 ..
St. John's Parish Magazine - June 2024 ..St. John's Parish Magazine - June 2024 ..
St. John's Parish Magazine - June 2024 ..
 
HANUMAN STORIES: TIMELESS TEACHINGS FOR TODAY’S WORLD
HANUMAN STORIES: TIMELESS TEACHINGS FOR TODAY’S WORLDHANUMAN STORIES: TIMELESS TEACHINGS FOR TODAY’S WORLD
HANUMAN STORIES: TIMELESS TEACHINGS FOR TODAY’S WORLD
 
Jesus Heals a Paralyzed Man for Children
Jesus Heals a Paralyzed Man for ChildrenJesus Heals a Paralyzed Man for Children
Jesus Heals a Paralyzed Man for Children
 

Developing Configurable and High Performance Apps in Drools

  • 1. Developing Configurable and High Performance Apps in Drools Ajay Mahajan Lead Architect 1
  • 2. Agenda What, Where, Why, When Drools Eco-System & A Use Case Rule Definitions Usage - Deployment Modes Best Practices Value from Session 2
  • 4. What is a Rule Engine 4
  • 5. Where Does It Fit Parameterization Code Config Files Database Rules Engine 5
  • 6. Why Should I Bother • Many ways to define Rules Flexibility & • Group rules and define priorities Configurability • Plethora of functions that help in decisioning Rule Engine • User friendly and Business Like Manageability • Better Tooling Support • Easier Understanding & Visualization • Just define your rules not execution details Declarative v/s • Execution is handled by Rules Engine Imperial • Sequencing and Re-entry 6
  • 7. FUDs – Fear, Uncertainty and Doubt • True, as compared to if-else statements in code Slow • However, Rules are precompiled • In Some Cases, execution is faster if designed correctly • Yes, they do have a learning curve Difficult • Start small and Limit the features to those you really need • You don’t have to learn each feature and function offered More • Yes, rules engine do need more space than a java class file • Precompiled Rules form a Rete graph Memory • Use stateless models where use case allows • Stateful models – Follow the optimizations and mind your memory • Commercial Tools can get expensive, e.g. Blaze and Jrules Expensive • Open Source Drools has evolved over time, in its version 5.5 • Drools used in high volume, mission critical systems 7
  • 8. When Should I Use a Rule Engine IF (Requirements== expressed as rules) IF (Rules == many OR complex OR changing frequently) IF (Rules == managed separately from application code) IF (memory != very low) IF (Application == evolving) IF (Developers == have skills OR ok with learning curve) IF (Business Users == like to see / experiment with rules) IF ( Additional Complexity < Benefits in Flexibility + Configurability) THEN use Rules Engine 8
  • 10. Jboss - Drools Expert • Main Rules Engine Component • Have Stabilized after going through product cycles • Highly Successful and widely used Rule Flow (replaced by jBPM) • Group into Rule sets and define flow chart to execute them • Graphical Environment to define work flows • jBPM using BPMN 2.0 is the way to go for any serious BPM Guvnor • Web Based GUI to manage the Rules • Split out as separate component in V5 • Read Only in Production, but modify in test/UAT for business Planner • Resources– travelling salesman, scheduling, routing • Heuristic Rules • Relatively new Fusion • Event Processing- ESP / CEP use cases • Concept of Sliding Time window • Other products such as Esper and Twitter Storm 10
  • 11. Drools Expert – Steps • DRL, Decision Define Tables, DSL Compile • To Knowledge base Create • Uses Knowledge base Session Insert • Causes Activations Facts Fire • RHS Rules Executes 11
  • 12. Real Use Case Trades Matching Engine Match Statuses T1, T4, T3, T2 T1 C3 T2 C1 + C3 T3+T4 C4 Confirmation C1, C2, C3, C4 100’s of Trades and Confirmations inflowing per second at peak hr Flowing in any order, not necessarily one after the other One trade can exactly match to one confirmation A trade can match to more than one confirmation One or more trades can match to one Confirmation 12
  • 13. DRL – Drools Rules Language rule "Perfect Match" salience 100 when t:Trade() c:Confirm(qty == t.qty , confirmId == t.cusip , amt == t.amt , price == t.price ) then log("Perfect Match for " + t.toString() + c.toString()); Match perfectMatch = new Match(t,c, "Perfect"); // retract perfect matches retract(t); retract(c); end Trade to Confirm Matching Why is this The base language for Rules Definition blazing All other Forms compile to this language fast ?? Rich and Versatile Entire Syntax, features and Rules definition is available Least User Friendly 13
  • 14. DSL - Domain Specific Language expander Match.dsl rule "Exact Match Trade to Confirm" when Match Trade and Confirm - on cusip with confirmId - on amt - on price then Log "Perfect Match“ Create Match with Status “Perfect” Remove Matched Elements end This is real code not Pseudo code DSL combines with grammar definition and translates to DRL Very Easy to Understand for Users and Visualize Power of creating new business vocabulary Encourages reuse 14
  • 15. Decision Table RuleTable TradeRequests NAME CONDITION CONDITION ACTION ACTION ACTION ACTION ACTION ACTION event:Event event:Event eventGroup $param != null TradeRequest tr = ne tr.setStartCaptureDate(DateUtils.getBusinessDate(event.get$1(), $2+1)); tr.setEndCaptureDate(DateUtils.getBusinessDate(event.get$1(), $2+1)); tr.setStartTradeDate(DateUtils.getBusinessDate(event.get$1(), $2)); tr.setEndTradeDate(Date tr.setSettlementF Trade Condition Event Start Capture End Capture Settlement (Comment Column) Name Group Date Present Trade Type Date Date Traded After Traded Before Flag TD < ED ; F = F IncOpenFail I effectiveDate Open Fails FreezeDate, 0 EffectiveDate, -1 "F" TD < ED ; SD <= FD ; F = O IncRegOpen I effectiveDate Regular Open EffectiveDate, -1 FreezeDate, 0 EffectiveDate, -1 "O" TD < ED ; FD < SD IncExtSet I effectiveDate Extended Settle EffectiveDate, -1 FreezeDate, 0 EffectiveDate, -1 ED<=TD ; SD <=FD ; CD <= FD IncShortSet I effectiveDate Short Settle EffectiveDate, 0 FreezeDate, 0 EffectiveDate, 0 TD < ED ; FD < PD IncAsOf I effectiveDate As of Trades FreezeDate, 1 EffectiveDate, -1 Corporate Actions Excel columns are designated as Conditions or Actions Top few control rows are hidden from users, Control rows help translate the excel into DRL Easy to understand for Users, once basic Excel formats are given Fit for use cases where there is need for intense parameterization 15
  • 16. Learning & Best Practices Experiences, Usage Models, Performance 16
  • 17. Real Life Experiences Complex Matching Engines • Multiple Engines used for various functional matching • Performed at 600 transactions / sec on one instance of execution • If the I/o (messaging / database) were commented, got 8k executions / sec • Stateful models used, but memory was conversed through optimizations Corporate Actions – Event Validations, Trade Extraction • Stateless model that evaluates each event separately through set of rules • 100’s of rules based on event types defined in Decision Tables • Increase in number of rules barely dent the performance • For 10k executions, 2 rules take 320 ms, and 100 rules take 328 ms Risk Analysis & Calculations • Calculations have lot of parameters, such as credit rating, product type, etc. • Calculations segmented into small number of individual steps • The decision of which formulae to use, was done by a Rules Engine 17
  • 18. Usage Models Synchronous Execution Request – Response Style Your Rule Application Engine Can act on the decision immediately Asynchronous Pipeline Rule Messaging Style Events Actions Engine Very scalable and resilient In Process with the Application Jar file as part of the application Excellent for Stateless execution, as reduces I/o without increasing memory Stateful executions are challenge in clustered environment & need memory sizing Out of Process as a runtime component Central Deployment & Management Overheads in Communication, and hence affects performance Could become bottleneck / central point of failure Needs sophisticated scaling models (e.g. functional split based on Hash or some key) 18
  • 19. Improving Performance ..1 Keep Separate Deployable Units rather than a giant rule engine component Divide and Conquer Use Stateless Sessions where Business case allows You can cluster and load balance your services seamlessly You can use in-process deployments easily Limit the number of facts in Stateful Executions The degradation is exponential beyond 400k objects in memory If higher volumes anticipated, than plan for multi deployments using sharding concepts Limit the Size of the objects checked in memory Use DTO (Data Transfer Object) pattern Use Batched Mode of Execution Check in more objects if you can in one go into the memory 19
  • 20. Improving Performance ..2 Use Drools only for decisions, not performing actual actions Let the decisions be communicated to a downstream component or by the caller to Rules Engine Avoid using evals(), --- use only as a last resort The java code inside eval is difficult to optimize into rete tree Work on aggregates where possible Rather than Checking Individual facts into the memory If you want to dig deeper Read more on the Rete Algorithm 20
  • 21. Development Tips Use the IDE Syntax Validations DSL conversions Drools Debugging Use events Understanding how rules activate and fire Helpful for troubleshooting Remember to turn off in production Keep individual rules small, simple and atomic Avoid cyclic triggering of rules when you update the facts Use Agenda groups & Activation groups wherever applicable 21
  • 22. Ajay Mahajan ajay.mahajan@wipro.com 22