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

Weitere ähnliche Inhalte

Was ist angesagt?

Introduction to the Disruptor
Introduction to the DisruptorIntroduction to the Disruptor
Introduction to the DisruptorTrisha Gee
 
Apache Spark Based Reliable Data Ingestion in Datalake with Gagan Agrawal
Apache Spark Based Reliable Data Ingestion in Datalake with Gagan AgrawalApache Spark Based Reliable Data Ingestion in Datalake with Gagan Agrawal
Apache Spark Based Reliable Data Ingestion in Datalake with Gagan AgrawalDatabricks
 
Sql vs NoSQL
Sql vs NoSQLSql vs NoSQL
Sql vs NoSQLRTigger
 
ETRM Reporting and Market Risk
ETRM Reporting and Market RiskETRM Reporting and Market Risk
ETRM Reporting and Market RiskWongyu Choe
 
FHIR for Architects and Developers - New Zealand Seminar, June 2014
FHIR for Architects and Developers - New Zealand Seminar, June 2014FHIR for Architects and Developers - New Zealand Seminar, June 2014
FHIR for Architects and Developers - New Zealand Seminar, June 2014David Hay
 
Streaming Data Lakes using Kafka Connect + Apache Hudi | Vinoth Chandar, Apac...
Streaming Data Lakes using Kafka Connect + Apache Hudi | Vinoth Chandar, Apac...Streaming Data Lakes using Kafka Connect + Apache Hudi | Vinoth Chandar, Apac...
Streaming Data Lakes using Kafka Connect + Apache Hudi | Vinoth Chandar, Apac...HostedbyConfluent
 
Murex training | Murex online video tutorial
Murex training | Murex online video tutorialMurex training | Murex online video tutorial
Murex training | Murex online video tutorialmurex training
 
Redis Overview
Redis OverviewRedis Overview
Redis OverviewHoang Long
 
Simplifying EBS 12.2 ADOP - Collaborate 2019
Simplifying EBS 12.2 ADOP - Collaborate 2019   Simplifying EBS 12.2 ADOP - Collaborate 2019
Simplifying EBS 12.2 ADOP - Collaborate 2019 Alfredo Krieg
 
Inside Financial Markets
Inside Financial MarketsInside Financial Markets
Inside Financial MarketsKhader Shaik
 
Building Robust ETL Pipelines with Apache Spark
Building Robust ETL Pipelines with Apache SparkBuilding Robust ETL Pipelines with Apache Spark
Building Robust ETL Pipelines with Apache SparkDatabricks
 
LMAX Disruptor as real-life example
LMAX Disruptor as real-life exampleLMAX Disruptor as real-life example
LMAX Disruptor as real-life exampleGuy Nir
 
Extreme Replication - Performance Tuning Oracle GoldenGate
Extreme Replication - Performance Tuning Oracle GoldenGateExtreme Replication - Performance Tuning Oracle GoldenGate
Extreme Replication - Performance Tuning Oracle GoldenGateBobby Curtis
 
Flink Forward San Francisco 2019: Moving from Lambda and Kappa Architectures ...
Flink Forward San Francisco 2019: Moving from Lambda and Kappa Architectures ...Flink Forward San Francisco 2019: Moving from Lambda and Kappa Architectures ...
Flink Forward San Francisco 2019: Moving from Lambda and Kappa Architectures ...Flink Forward
 
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
 
Apache Kylin: Speed Up Cubing with Apache Spark with Luke Han and Shaofeng Shi
 Apache Kylin: Speed Up Cubing with Apache Spark with Luke Han and Shaofeng Shi Apache Kylin: Speed Up Cubing with Apache Spark with Luke Han and Shaofeng Shi
Apache Kylin: Speed Up Cubing with Apache Spark with Luke Han and Shaofeng ShiDatabricks
 
Memcached Presentation
Memcached PresentationMemcached Presentation
Memcached PresentationAsif Ali
 

Was ist angesagt? (20)

Introduction to the Disruptor
Introduction to the DisruptorIntroduction to the Disruptor
Introduction to the Disruptor
 
Apache Spark Based Reliable Data Ingestion in Datalake with Gagan Agrawal
Apache Spark Based Reliable Data Ingestion in Datalake with Gagan AgrawalApache Spark Based Reliable Data Ingestion in Datalake with Gagan Agrawal
Apache Spark Based Reliable Data Ingestion in Datalake with Gagan Agrawal
 
Sql vs NoSQL
Sql vs NoSQLSql vs NoSQL
Sql vs NoSQL
 
ETRM Reporting and Market Risk
ETRM Reporting and Market RiskETRM Reporting and Market Risk
ETRM Reporting and Market Risk
 
FHIR for Architects and Developers - New Zealand Seminar, June 2014
FHIR for Architects and Developers - New Zealand Seminar, June 2014FHIR for Architects and Developers - New Zealand Seminar, June 2014
FHIR for Architects and Developers - New Zealand Seminar, June 2014
 
Streaming Data Lakes using Kafka Connect + Apache Hudi | Vinoth Chandar, Apac...
Streaming Data Lakes using Kafka Connect + Apache Hudi | Vinoth Chandar, Apac...Streaming Data Lakes using Kafka Connect + Apache Hudi | Vinoth Chandar, Apac...
Streaming Data Lakes using Kafka Connect + Apache Hudi | Vinoth Chandar, Apac...
 
Murex training | Murex online video tutorial
Murex training | Murex online video tutorialMurex training | Murex online video tutorial
Murex training | Murex online video tutorial
 
Redis Overview
Redis OverviewRedis Overview
Redis Overview
 
Simplifying EBS 12.2 ADOP - Collaborate 2019
Simplifying EBS 12.2 ADOP - Collaborate 2019   Simplifying EBS 12.2 ADOP - Collaborate 2019
Simplifying EBS 12.2 ADOP - Collaborate 2019
 
Inside Financial Markets
Inside Financial MarketsInside Financial Markets
Inside Financial Markets
 
Redo log
Redo logRedo log
Redo log
 
Building Robust ETL Pipelines with Apache Spark
Building Robust ETL Pipelines with Apache SparkBuilding Robust ETL Pipelines with Apache Spark
Building Robust ETL Pipelines with Apache Spark
 
LMAX Disruptor as real-life example
LMAX Disruptor as real-life exampleLMAX Disruptor as real-life example
LMAX Disruptor as real-life example
 
Deep Dive on Amazon Redshift
Deep Dive on Amazon RedshiftDeep Dive on Amazon Redshift
Deep Dive on Amazon Redshift
 
Algo Trading
Algo TradingAlgo Trading
Algo Trading
 
Extreme Replication - Performance Tuning Oracle GoldenGate
Extreme Replication - Performance Tuning Oracle GoldenGateExtreme Replication - Performance Tuning Oracle GoldenGate
Extreme Replication - Performance Tuning Oracle GoldenGate
 
Flink Forward San Francisco 2019: Moving from Lambda and Kappa Architectures ...
Flink Forward San Francisco 2019: Moving from Lambda and Kappa Architectures ...Flink Forward San Francisco 2019: Moving from Lambda and Kappa Architectures ...
Flink Forward San Francisco 2019: Moving from Lambda and Kappa Architectures ...
 
Drools 6.0 (Red Hat Summit)
Drools 6.0 (Red Hat Summit)Drools 6.0 (Red Hat Summit)
Drools 6.0 (Red Hat Summit)
 
Apache Kylin: Speed Up Cubing with Apache Spark with Luke Han and Shaofeng Shi
 Apache Kylin: Speed Up Cubing with Apache Spark with Luke Han and Shaofeng Shi Apache Kylin: Speed Up Cubing with Apache Spark with Luke Han and Shaofeng Shi
Apache Kylin: Speed Up Cubing with Apache Spark with Luke Han and Shaofeng Shi
 
Memcached Presentation
Memcached PresentationMemcached Presentation
Memcached Presentation
 

Andere mochten auch

Rule Engine & Drools
Rule Engine & DroolsRule Engine & Drools
Rule Engine & DroolsSandip Jadhav
 
Drools 6 deep dive
Drools 6 deep diveDrools 6 deep dive
Drools 6 deep diveMario 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 IntegrationBonitasoft
 
JBoss Drools - Pure Java Rule Engine
JBoss Drools - Pure Java Rule EngineJBoss Drools - Pure Java Rule Engine
JBoss Drools - Pure Java Rule EngineAnil Allewar
 
Drools and jBPM 6 Overview
Drools and jBPM 6 OverviewDrools and jBPM 6 Overview
Drools and jBPM 6 OverviewMark Proctor
 
Rules Programming tutorial
Rules Programming tutorialRules Programming tutorial
Rules Programming tutorialSrinath Perera
 
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 ProcessingChandra Divi
 
#CPBR7 - Métricas para startups
#CPBR7 - Métricas para startups#CPBR7 - Métricas para startups
#CPBR7 - Métricas para startupsSaulo Arruda
 
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 processesAlain 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 WorkflowGenAlain Bezançon
 
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 MongoDBGrant 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 DenmarkMauricio (Salaboy) Salatino
 
IBM Smarter Business 2012 - Headless BPM
IBM Smarter Business 2012 - Headless BPMIBM Smarter Business 2012 - Headless BPM
IBM Smarter Business 2012 - Headless BPMIBM Sverige
 
Drools Happenings 7.0 - Devnation 2016
Drools Happenings 7.0 - Devnation 2016Drools Happenings 7.0 - Devnation 2016
Drools Happenings 7.0 - Devnation 2016Mark Proctor
 

Andere mochten auch (20)

Rule Engine & Drools
Rule Engine & DroolsRule Engine & Drools
Rule Engine & Drools
 
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
 
Rules Programming tutorial
Rules Programming tutorialRules Programming tutorial
Rules Programming tutorial
 
Drools
DroolsDrools
Drools
 
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
 

Ähnlich wie 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
 
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 RTEtsurdilovic
 
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 8Stan Ascher
 
Droolsand Rule Based Systems 2008 Srping
Droolsand Rule Based Systems 2008 SrpingDroolsand Rule Based Systems 2008 Srping
Droolsand Rule Based Systems 2008 SrpingSrinath 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 S1000Ddclsocialmedia
 
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 ManagementRightScale
 
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 OptimisationAmazon Web Services
 
Drools Presentation for Tallink.ee
Drools Presentation for Tallink.eeDrools Presentation for Tallink.ee
Drools Presentation for Tallink.eeAnton Arhipov
 

Ähnlich wie 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
 

Kürzlich hochgeladen

empathy map for students very useful.pptx
empathy map for students very useful.pptxempathy map for students very useful.pptx
empathy map for students very useful.pptxGeorgePhilips7
 
Monthly Khazina-e-Ruhaniyaat April’2024 (Vol.14, Issue 12)
Monthly Khazina-e-Ruhaniyaat April’2024 (Vol.14, Issue 12)Monthly Khazina-e-Ruhaniyaat April’2024 (Vol.14, Issue 12)
Monthly Khazina-e-Ruhaniyaat April’2024 (Vol.14, Issue 12)Darul Amal Chishtia
 
Interesting facts about Hindu Mythology.pptx
Interesting facts about Hindu Mythology.pptxInteresting facts about Hindu Mythology.pptx
Interesting facts about Hindu Mythology.pptxaskganesha.com
 
Prach Autism AI - Artificial Intelligence
Prach Autism AI - Artificial IntelligencePrach Autism AI - Artificial Intelligence
Prach Autism AI - Artificial Intelligenceprachaibot
 
Deerfoot Church of Christ Bulletin 4 14 24
Deerfoot Church of Christ Bulletin 4 14 24Deerfoot Church of Christ Bulletin 4 14 24
Deerfoot Church of Christ Bulletin 4 14 24deerfootcoc
 
Meaningful Pursuits: Pursuing Obedience_Ecclesiastes.pptx
Meaningful Pursuits: Pursuing Obedience_Ecclesiastes.pptxMeaningful Pursuits: Pursuing Obedience_Ecclesiastes.pptx
Meaningful Pursuits: Pursuing Obedience_Ecclesiastes.pptxStephen Palm
 
Codex Singularity: Search for the Prisca Sapientia
Codex Singularity: Search for the Prisca SapientiaCodex Singularity: Search for the Prisca Sapientia
Codex Singularity: Search for the Prisca Sapientiajfrenchau
 
Deerfoot Church of Christ Bulletin 2 25 24
Deerfoot Church of Christ Bulletin 2 25 24Deerfoot Church of Christ Bulletin 2 25 24
Deerfoot Church of Christ Bulletin 2 25 24deerfootcoc
 
Deerfoot Church of Christ Bulletin 3 31 24
Deerfoot Church of Christ Bulletin 3 31 24Deerfoot Church of Christ Bulletin 3 31 24
Deerfoot Church of Christ Bulletin 3 31 24deerfootcoc
 
The King 'Great Goodness' Part 1 Mahasilava Jataka (Eng. & Chi.).pptx
The King 'Great Goodness' Part 1 Mahasilava Jataka (Eng. & Chi.).pptxThe King 'Great Goodness' Part 1 Mahasilava Jataka (Eng. & Chi.).pptx
The King 'Great Goodness' Part 1 Mahasilava Jataka (Eng. & Chi.).pptxOH TEIK BIN
 
The-Clear-Quran,-A-Thematic-English-Translation-by-Dr-Mustafa-Khattab.pdf
The-Clear-Quran,-A-Thematic-English-Translation-by-Dr-Mustafa-Khattab.pdfThe-Clear-Quran,-A-Thematic-English-Translation-by-Dr-Mustafa-Khattab.pdf
The-Clear-Quran,-A-Thematic-English-Translation-by-Dr-Mustafa-Khattab.pdfSana Khan
 
Gangaur Celebrations 2024 - Rajasthani Sewa Samaj Karimnagar, Telangana State...
Gangaur Celebrations 2024 - Rajasthani Sewa Samaj Karimnagar, Telangana State...Gangaur Celebrations 2024 - Rajasthani Sewa Samaj Karimnagar, Telangana State...
Gangaur Celebrations 2024 - Rajasthani Sewa Samaj Karimnagar, Telangana State...INDIAN YOUTH SECURED ORGANISATION
 
Ayodhya Temple saw its first Big Navratri Festival!
Ayodhya Temple saw its first Big Navratri Festival!Ayodhya Temple saw its first Big Navratri Festival!
Ayodhya Temple saw its first Big Navratri Festival!All in One Trendz
 
Secrets of Divine Love - A Spiritual Journey into the Heart of Islam - A. Helwa
Secrets of Divine Love - A Spiritual Journey into the Heart of Islam - A. HelwaSecrets of Divine Love - A Spiritual Journey into the Heart of Islam - A. Helwa
Secrets of Divine Love - A Spiritual Journey into the Heart of Islam - A. HelwaNodd Nittong
 
A357 Hate can stir up strife, but love can cover up all mistakes. hate, love...
A357 Hate can stir up strife, but love can cover up all mistakes.  hate, love...A357 Hate can stir up strife, but love can cover up all mistakes.  hate, love...
A357 Hate can stir up strife, but love can cover up all mistakes. hate, love...franktsao4
 
PROPHECY-- The End Of My People Forever!
PROPHECY-- The End Of My People Forever!PROPHECY-- The End Of My People Forever!
PROPHECY-- The End Of My People Forever!spy7777777guy
 
A Tsunami Tragedy ~ Wise Reflections for Troubled Times (Eng. & Chi.).pptx
A Tsunami Tragedy ~ Wise Reflections for Troubled Times (Eng. & Chi.).pptxA Tsunami Tragedy ~ Wise Reflections for Troubled Times (Eng. & Chi.).pptx
A Tsunami Tragedy ~ Wise Reflections for Troubled Times (Eng. & Chi.).pptxOH TEIK BIN
 

Kürzlich hochgeladen (20)

empathy map for students very useful.pptx
empathy map for students very useful.pptxempathy map for students very useful.pptx
empathy map for students very useful.pptx
 
Monthly Khazina-e-Ruhaniyaat April’2024 (Vol.14, Issue 12)
Monthly Khazina-e-Ruhaniyaat April’2024 (Vol.14, Issue 12)Monthly Khazina-e-Ruhaniyaat April’2024 (Vol.14, Issue 12)
Monthly Khazina-e-Ruhaniyaat April’2024 (Vol.14, Issue 12)
 
Interesting facts about Hindu Mythology.pptx
Interesting facts about Hindu Mythology.pptxInteresting facts about Hindu Mythology.pptx
Interesting facts about Hindu Mythology.pptx
 
English - The Dangers of Wine Alcohol.pptx
English - The Dangers of Wine Alcohol.pptxEnglish - The Dangers of Wine Alcohol.pptx
English - The Dangers of Wine Alcohol.pptx
 
Prach Autism AI - Artificial Intelligence
Prach Autism AI - Artificial IntelligencePrach Autism AI - Artificial Intelligence
Prach Autism AI - Artificial Intelligence
 
Deerfoot Church of Christ Bulletin 4 14 24
Deerfoot Church of Christ Bulletin 4 14 24Deerfoot Church of Christ Bulletin 4 14 24
Deerfoot Church of Christ Bulletin 4 14 24
 
Meaningful Pursuits: Pursuing Obedience_Ecclesiastes.pptx
Meaningful Pursuits: Pursuing Obedience_Ecclesiastes.pptxMeaningful Pursuits: Pursuing Obedience_Ecclesiastes.pptx
Meaningful Pursuits: Pursuing Obedience_Ecclesiastes.pptx
 
Codex Singularity: Search for the Prisca Sapientia
Codex Singularity: Search for the Prisca SapientiaCodex Singularity: Search for the Prisca Sapientia
Codex Singularity: Search for the Prisca Sapientia
 
Deerfoot Church of Christ Bulletin 2 25 24
Deerfoot Church of Christ Bulletin 2 25 24Deerfoot Church of Christ Bulletin 2 25 24
Deerfoot Church of Christ Bulletin 2 25 24
 
Deerfoot Church of Christ Bulletin 3 31 24
Deerfoot Church of Christ Bulletin 3 31 24Deerfoot Church of Christ Bulletin 3 31 24
Deerfoot Church of Christ Bulletin 3 31 24
 
The King 'Great Goodness' Part 1 Mahasilava Jataka (Eng. & Chi.).pptx
The King 'Great Goodness' Part 1 Mahasilava Jataka (Eng. & Chi.).pptxThe King 'Great Goodness' Part 1 Mahasilava Jataka (Eng. & Chi.).pptx
The King 'Great Goodness' Part 1 Mahasilava Jataka (Eng. & Chi.).pptx
 
The-Clear-Quran,-A-Thematic-English-Translation-by-Dr-Mustafa-Khattab.pdf
The-Clear-Quran,-A-Thematic-English-Translation-by-Dr-Mustafa-Khattab.pdfThe-Clear-Quran,-A-Thematic-English-Translation-by-Dr-Mustafa-Khattab.pdf
The-Clear-Quran,-A-Thematic-English-Translation-by-Dr-Mustafa-Khattab.pdf
 
English - The Psalms of King Solomon.pdf
English - The Psalms of King Solomon.pdfEnglish - The Psalms of King Solomon.pdf
English - The Psalms of King Solomon.pdf
 
Gangaur Celebrations 2024 - Rajasthani Sewa Samaj Karimnagar, Telangana State...
Gangaur Celebrations 2024 - Rajasthani Sewa Samaj Karimnagar, Telangana State...Gangaur Celebrations 2024 - Rajasthani Sewa Samaj Karimnagar, Telangana State...
Gangaur Celebrations 2024 - Rajasthani Sewa Samaj Karimnagar, Telangana State...
 
Ayodhya Temple saw its first Big Navratri Festival!
Ayodhya Temple saw its first Big Navratri Festival!Ayodhya Temple saw its first Big Navratri Festival!
Ayodhya Temple saw its first Big Navratri Festival!
 
Secrets of Divine Love - A Spiritual Journey into the Heart of Islam - A. Helwa
Secrets of Divine Love - A Spiritual Journey into the Heart of Islam - A. HelwaSecrets of Divine Love - A Spiritual Journey into the Heart of Islam - A. Helwa
Secrets of Divine Love - A Spiritual Journey into the Heart of Islam - A. Helwa
 
A357 Hate can stir up strife, but love can cover up all mistakes. hate, love...
A357 Hate can stir up strife, but love can cover up all mistakes.  hate, love...A357 Hate can stir up strife, but love can cover up all mistakes.  hate, love...
A357 Hate can stir up strife, but love can cover up all mistakes. hate, love...
 
PROPHECY-- The End Of My People Forever!
PROPHECY-- The End Of My People Forever!PROPHECY-- The End Of My People Forever!
PROPHECY-- The End Of My People Forever!
 
A Tsunami Tragedy ~ Wise Reflections for Troubled Times (Eng. & Chi.).pptx
A Tsunami Tragedy ~ Wise Reflections for Troubled Times (Eng. & Chi.).pptxA Tsunami Tragedy ~ Wise Reflections for Troubled Times (Eng. & Chi.).pptx
A Tsunami Tragedy ~ Wise Reflections for Troubled Times (Eng. & Chi.).pptx
 
Top 8 Krishna Bhajan Lyrics in English.pdf
Top 8 Krishna Bhajan Lyrics in English.pdfTop 8 Krishna Bhajan Lyrics in English.pdf
Top 8 Krishna Bhajan Lyrics in English.pdf
 

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