SlideShare a Scribd company logo
1 of 30
Change the title picture in the master




                                              Rules Engine :Drools

                                    Rule Engine Concepts and Drools Expert
Overview

•   Rule
•   Rule engine introduction & Working
•   Why use a Rule Engine?
•   ReteOO
•   Introduction to Drools
•   Drools Expert & Drools Rule Formats
•   Drools Rule Language Details
•   Drools Eclipse IDE &
•   Drools Guvnor Overview
•   Drools Flow Overview




2                          Rules Engine :Drools
Rule
 Rule                                                       Bean
    rule "Is of valid age"                                   public class Applicant {
      when
         $a : Applicant( age < 18 )           Constraints     private String name;
                                                               private int age;
      then                                                     private boolean valid;
         $a.setValid( false );                     Action
    end                                                      //getter and setter
                                                             methods here
                                                             }


 Constraints for above rule
       Object type constraint     - Applicant Object Type.
       Field constraints         - age < 18
 An object type constraint plus its zero or more field constraints is referred to as a
  pattern.
 The process of matching patterns against the inserted data is, referred to as
  pattern matching.


3                          Rules Engine :Drools
Rule Engine introduction & Working

The rule engine is the computer program that delivers Knowledge Representation
   and Reasoning(KRR) functionality to the developer. At a high level it has three
   components:
   Ontology (“Things” e.g java Classes/Beans )
   Rules
   Data




4                        Rules Engine :Drools
Why use a Rule Engine?


 Separates application from dynamic logic
    • Rules can be modified by different groups
    • No need to recompile or redeploy
    • All rules are in one place


 Declarative Programming
     – Readable and Anyone can easily modify rules.


 Centralization of Knowledge
    - Repository of business policy


 Speed and Scalability
    - Rete algorithm, Leaps algorithm



5                             Rules Engine :Drools
ReteOO

 Rete algorithm was invented by Dr. Charles Forgy.
 Rete algorithm can be broken into 2 parts: rule compilation and runtime
  execution.
 Rule base is compiled into discrimination network.
 Discrimination network is used to filter data as it propagates through the
  network.




6                       Rules Engine :Drools
Rete Algorithm example

rule 1
when
 Cheese( $cheddar : name == "cheddar" )
 $person : Person( favouriteCheese == $cheddar )
then
    System.out.println( $person.getName() + " likes cheddar" );
end




rule 2
when
 Cheese( $cheddar : name == "cheddar" )
 $person : Person( favouriteCheese != $cheddar )
then
    System.out.println( $person.getName() + " not likes cheddar" );
end




7                                    Rules Engine :Drools
Introduction to Drools & Drools Expert


 Drools 5 introduces the Business Logic integration Platform which provides a
  unified and integrated platform for Rules, Workflow and Event Processing.


 Drools consist out of several projects:
       Drools Expert (rule Engine)


       Drools Guvnor (Business Rule Manager)


       jBPM (Process/Workflow)


       Drools Fusion (event processing /temporal reasoning)


       Drools Planner (automated planning)




8                            Rules Engine :Drools
Drools Expert & Drools Rule Format

 Drools has an enhanced and optimized implementation of the Rete algorithm for
  object oriented systems called as ReteOO.
 Drools Expert is a declarative, rule based, coding environment.


 Drools Rule Formats
     Drools Rule Language (DRL)
     Domain-specific language (DSL)
     Decision tables
     Guided rule editor
     XML




9                          Rules Engine :Drools
Drools Rule Language(DRL)




10          Rules Engine :Drools
Domain-specific language (DSL)

 DSL are written in natural language statements.
 Domain experts (such as business analysts) can validate and do changes as per
  requirements.
 DSL definitions consists of transformations from DSL "sentences" to DRL
  constructs.
     DRL    Cheese(age < 5, price == 20, type=="stilton", country=="ch")

            [when]There is a Cheese with=Cheese()
     DSL    [when]- age is less than {age}=age<{age}
            [when]- type is '{type}'=type=='{type}‘
            [when]- country equal to '{country}'=country=='{country}'

            There is a Cheese with
     DSLR       - age is less than 42
                - type is 'stilton'

     DRL & DSL mapping

            [when]Something is {colour}=Something(colour=="{colour}")


11                        Rules Engine :Drools
Domain-specific language (DSL)




12           Rules Engine :Drools
Domain-specific language (DSLR)




13           Rules Engine :Drools
Decision table

 Decision tables are a "precise yet compact" (ref. Wikipedia) way of representing
  conditional logic, and are well suited to business level rules.
 spreadsheet format (XLS), and CSV.
 Decision tables are not recommended for rules that do not follow a set of
  templates, or where there are a small number of rules
 Each row in spreadsheet is a rule
 Decision tables are essentially a tool to generate DRL rules automatically




14                      Rules Engine :Drools
Decision tables




15            Rules Engine :Drools
Guided Rule Editor




16           Rules Engine :Drools
XML Rule Language




17          Rules Engine :Drools
Drools Rule Language :Executing Rules




18           Rules Engine :Drools
Drools Rule Language :Executing Rules

A Knowledge Base is what we call our collection of compiled definitions, such as
   rules and processes, which are compiled using the KnowledgeBuilder.


 First, we will create Knowledge Builder
     KnowledgeBuilder knowledgeBuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();


 Add DRL file to Knowledge Builder , it parses and compiles DRL files
     knowledgeBuilder.add(drlFileAsResource, ResourceType.DRL);


 If there are no errors, we can add the resulting packages to our Knowledge Base

     Collection pkgs = knowledgeBuilder.getKnowledgePackages();
     knowledgeBase = KnowledgeBaseFactory.newKnowledgeBase();
     knowledgeBase.addKnowledgePackages(pkgs);




19                            Rules Engine :Drools
Drools Rule Language :Executing Rules

 KnowledgeSession provides the way of exposing objects to be ruled.
 Stateless Knowledge Session

     StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
     Applicant applicant = new Applicant( “Rajesh Kumar", 16 );
     ksession.execute( applicant );
     assertFalse( applicant.isValid() );



 Stateful Knowledge Session

     StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
     Applicant applicant = new Applicant( “Rajesh Kumar", 16 );
     knowledgeSession.insert(applicant);
     knowledgeSession.fireAllRules();




20                             Rules Engine :Drools
Drools Rule Language


Knowledge base can be updated inside rule’s body
 insert()
      Inserted object will be used by rules engines inside current session
 update()
      Updates existing in working memory object for the rest of rules
 delete()
      Removed object will not be ruled on current execution




21                         Rules Engine :Drools
Drools Eclipse IDE

 The Eclipse based IDE provides users with an environment to edit and test rules
  in various formats, and integrate it deeply with their applications.
 Required plugins
        GEF plugin , GEF is the Eclipse Graphical Editing Framework.
         http://download.eclipse.org/tools/gef/updates/releases/
        Drools Eclipse IDE plugin
         http://download.jboss.org/drools/release/5.4.0.Final/org.drools.updatesite/
 Defining a Drools Runtime
        Go to windows preferences
        under the Drools category,
         select "Installed Drools runtimes“
        use the default jar files as included in
         the Drools Eclipse plugin
         by clicking "Create a new Drools 5 runtime"



22                            Rules Engine :Drools
23   Rules Engine :Drools
Drools Guvnor Overview


 Web-based rule management, storage, editing and deployment
  environment.
 Rule editing
      text, guided, decision tables, etc.
 Version control
 Categorization
 Build and deploy
 Scenarios




24                     Rules Engine :Drools
Guvnor Rule Editing




25           Rules Engine :Drools
Guvnor Rule Deployment




26          Rules Engine :Drools
Guvnor Test Scenarios




27           Rules Engine :Drools
Drools Flow Overview




28           Rules Engine :Drools
References

 Drools Homepage
     http://www.jboss.org/drools/
 Drools Blog
     http://blog.athico.com/
 Drools Chat
     irc.codehaus.org #drools
 Drools Mailing List
     rules-users@lists.jboss.org




29                        Rules Engine :Drools
Thank you


     Any questions?



30         Rules Engine :Drools

More Related Content

What's hot

Drools 6 deep dive
Drools 6 deep diveDrools 6 deep dive
Drools 6 deep diveMario Fusco
 
Apache Pig: A big data processor
Apache Pig: A big data processorApache Pig: A big data processor
Apache Pig: A big data processorTushar B Kute
 
Drools5 Community Training: Module 1.5 - Drools Expert First Example
Drools5 Community Training: Module 1.5 - Drools Expert First ExampleDrools5 Community Training: Module 1.5 - Drools Expert First Example
Drools5 Community Training: Module 1.5 - Drools Expert First ExampleMauricio (Salaboy) Salatino
 
Alfresco Content Modelling and Policy Behaviours
Alfresco Content Modelling and Policy BehavioursAlfresco Content Modelling and Policy Behaviours
Alfresco Content Modelling and Policy BehavioursJ V
 
Rules Engine - java(Drools) & ruby(ruleby)
Rules Engine - java(Drools) & ruby(ruleby)Rules Engine - java(Drools) & ruby(ruleby)
Rules Engine - java(Drools) & ruby(ruleby)martincabrera
 
Drools and jBPM 6 Overview
Drools and jBPM 6 OverviewDrools and jBPM 6 Overview
Drools and jBPM 6 OverviewMark Proctor
 
Drools Expert and Fusion Intro : London 2012
Drools Expert and Fusion Intro  : London 2012Drools Expert and Fusion Intro  : London 2012
Drools Expert and Fusion Intro : London 2012Mark Proctor
 
Dynamic Allocation in Spark
Dynamic Allocation in SparkDynamic Allocation in Spark
Dynamic Allocation in SparkDatabricks
 
Sizing your alfresco platform
Sizing your alfresco platformSizing your alfresco platform
Sizing your alfresco platformLuis Cabaceira
 
Java 8, Streams & Collectors, patterns, performances and parallelization
Java 8, Streams & Collectors, patterns, performances and parallelizationJava 8, Streams & Collectors, patterns, performances and parallelization
Java 8, Streams & Collectors, patterns, performances and parallelizationJosé Paumard
 
Web Development with Python and Django
Web Development with Python and DjangoWeb Development with Python and Django
Web Development with Python and DjangoMichael Pirnat
 
Sqoop on Spark for Data Ingestion
Sqoop on Spark for Data IngestionSqoop on Spark for Data Ingestion
Sqoop on Spark for Data IngestionDataWorks Summit
 
Kafka Retry and DLQ
Kafka Retry and DLQKafka Retry and DLQ
Kafka Retry and DLQGeorge Teo
 
Spark and S3 with Ryan Blue
Spark and S3 with Ryan BlueSpark and S3 with Ryan Blue
Spark and S3 with Ryan BlueDatabricks
 
애플리케이션 아키텍처와 객체지향
애플리케이션 아키텍처와 객체지향 애플리케이션 아키텍처와 객체지향
애플리케이션 아키텍처와 객체지향 Young-Ho Cho
 
Real time analytics at uber @ strata data 2019
Real time analytics at uber @ strata data 2019Real time analytics at uber @ strata data 2019
Real time analytics at uber @ strata data 2019Zhenxiao Luo
 

What's hot (20)

Drools 6 deep dive
Drools 6 deep diveDrools 6 deep dive
Drools 6 deep dive
 
Rule engine
Rule engineRule engine
Rule engine
 
Apache Pig: A big data processor
Apache Pig: A big data processorApache Pig: A big data processor
Apache Pig: A big data processor
 
Drools5 Community Training: Module 1.5 - Drools Expert First Example
Drools5 Community Training: Module 1.5 - Drools Expert First ExampleDrools5 Community Training: Module 1.5 - Drools Expert First Example
Drools5 Community Training: Module 1.5 - Drools Expert First Example
 
Alfresco Content Modelling and Policy Behaviours
Alfresco Content Modelling and Policy BehavioursAlfresco Content Modelling and Policy Behaviours
Alfresco Content Modelling and Policy Behaviours
 
Rules Engine - java(Drools) & ruby(ruleby)
Rules Engine - java(Drools) & ruby(ruleby)Rules Engine - java(Drools) & ruby(ruleby)
Rules Engine - java(Drools) & ruby(ruleby)
 
Drools and jBPM 6 Overview
Drools and jBPM 6 OverviewDrools and jBPM 6 Overview
Drools and jBPM 6 Overview
 
Drools Expert and Fusion Intro : London 2012
Drools Expert and Fusion Intro  : London 2012Drools Expert and Fusion Intro  : London 2012
Drools Expert and Fusion Intro : London 2012
 
Unit 4-apache pig
Unit 4-apache pigUnit 4-apache pig
Unit 4-apache pig
 
Dynamic Allocation in Spark
Dynamic Allocation in SparkDynamic Allocation in Spark
Dynamic Allocation in Spark
 
Sizing your alfresco platform
Sizing your alfresco platformSizing your alfresco platform
Sizing your alfresco platform
 
Java 8, Streams & Collectors, patterns, performances and parallelization
Java 8, Streams & Collectors, patterns, performances and parallelizationJava 8, Streams & Collectors, patterns, performances and parallelization
Java 8, Streams & Collectors, patterns, performances and parallelization
 
Terraform tfstate
Terraform tfstateTerraform tfstate
Terraform tfstate
 
Introduction to Apache Beam
Introduction to Apache BeamIntroduction to Apache Beam
Introduction to Apache Beam
 
Web Development with Python and Django
Web Development with Python and DjangoWeb Development with Python and Django
Web Development with Python and Django
 
Sqoop on Spark for Data Ingestion
Sqoop on Spark for Data IngestionSqoop on Spark for Data Ingestion
Sqoop on Spark for Data Ingestion
 
Kafka Retry and DLQ
Kafka Retry and DLQKafka Retry and DLQ
Kafka Retry and DLQ
 
Spark and S3 with Ryan Blue
Spark and S3 with Ryan BlueSpark and S3 with Ryan Blue
Spark and S3 with Ryan Blue
 
애플리케이션 아키텍처와 객체지향
애플리케이션 아키텍처와 객체지향 애플리케이션 아키텍처와 객체지향
애플리케이션 아키텍처와 객체지향
 
Real time analytics at uber @ strata data 2019
Real time analytics at uber @ strata data 2019Real time analytics at uber @ strata data 2019
Real time analytics at uber @ strata data 2019
 

Similar to Rule Engine & Drools

Developing applications with rules, workflow and event processing (it@cork 2010)
Developing applications with rules, workflow and event processing (it@cork 2010)Developing applications with rules, workflow and event processing (it@cork 2010)
Developing applications with rules, workflow and event processing (it@cork 2010)Geoffrey De Smet
 
DFDL and Apache Daffodil(tm) Overview from Owl Cyber Defense
DFDL and Apache Daffodil(tm) Overview from Owl Cyber DefenseDFDL and Apache Daffodil(tm) Overview from Owl Cyber Defense
DFDL and Apache Daffodil(tm) Overview from Owl Cyber DefenseMike Beckerle
 
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
 
Vital AI MetaQL: Queries Across NoSQL, SQL, Sparql, and Spark
Vital AI MetaQL: Queries Across NoSQL, SQL, Sparql, and SparkVital AI MetaQL: Queries Across NoSQL, SQL, Sparql, and Spark
Vital AI MetaQL: Queries Across NoSQL, SQL, Sparql, and SparkVital.AI
 
Controller design-pattern-drupal-north-toronto-2018-final
Controller design-pattern-drupal-north-toronto-2018-finalController design-pattern-drupal-north-toronto-2018-final
Controller design-pattern-drupal-north-toronto-2018-finalVic Tarchenko
 
Domain-Specific Languages for Composable Editor Plugins (LDTA 2009)
Domain-Specific Languages for Composable Editor Plugins (LDTA 2009)Domain-Specific Languages for Composable Editor Plugins (LDTA 2009)
Domain-Specific Languages for Composable Editor Plugins (LDTA 2009)lennartkats
 
Best Practices for Interoperable XML Databinding with JAXB
Best Practices for Interoperable XML Databinding with JAXBBest Practices for Interoperable XML Databinding with JAXB
Best Practices for Interoperable XML Databinding with JAXBMartin Grebac
 
Domains - Don't leave your data model without them
Domains - Don't leave your data model without themDomains - Don't leave your data model without them
Domains - Don't leave your data model without themPeter Heller
 
Integrating DROOLS With Mule ESB
Integrating DROOLS With Mule ESBIntegrating DROOLS With Mule ESB
Integrating DROOLS With Mule ESBJitendra Bafna
 
RELAX NG to DTD and XSD Using the Open Toolkit
RELAX NG to DTD and XSD Using the Open ToolkitRELAX NG to DTD and XSD Using the Open Toolkit
RELAX NG to DTD and XSD Using the Open ToolkitContrext Solutions
 
NoSQL no more: SQL on Druid with Apache Calcite
NoSQL no more: SQL on Druid with Apache CalciteNoSQL no more: SQL on Druid with Apache Calcite
NoSQL no more: SQL on Druid with Apache Calcitegianmerlino
 
Develop an App with the Odoo Framework
Develop an App with the Odoo FrameworkDevelop an App with the Odoo Framework
Develop an App with the Odoo FrameworkOdoo
 
PHP, The X DevAPI, and the MySQL Document Store -- Benelux PHP Confernece 2019
PHP, The X DevAPI, and the MySQL Document Store -- Benelux PHP Confernece 2019PHP, The X DevAPI, and the MySQL Document Store -- Benelux PHP Confernece 2019
PHP, The X DevAPI, and the MySQL Document Store -- Benelux PHP Confernece 2019Dave Stokes
 
PHP, The X DevAPI, and the MySQL Document Store Presented January 23rd, 20...
PHP,  The X DevAPI,  and the  MySQL Document Store Presented January 23rd, 20...PHP,  The X DevAPI,  and the  MySQL Document Store Presented January 23rd, 20...
PHP, The X DevAPI, and the MySQL Document Store Presented January 23rd, 20...Dave Stokes
 
Rules SDK IBM WW BPM Forum March 2013
Rules SDK IBM WW BPM Forum March 2013Rules SDK IBM WW BPM Forum March 2013
Rules SDK IBM WW BPM Forum March 2013Dan Selman
 
Groovy In the Cloud
Groovy In the CloudGroovy In the Cloud
Groovy In the CloudJim Driscoll
 

Similar to Rule Engine & Drools (20)

Rules With Drools
Rules With DroolsRules With Drools
Rules With Drools
 
Rules with Drools
Rules with DroolsRules with Drools
Rules with Drools
 
Developing applications with rules, workflow and event processing (it@cork 2010)
Developing applications with rules, workflow and event processing (it@cork 2010)Developing applications with rules, workflow and event processing (it@cork 2010)
Developing applications with rules, workflow and event processing (it@cork 2010)
 
DFDL and Apache Daffodil(tm) Overview from Owl Cyber Defense
DFDL and Apache Daffodil(tm) Overview from Owl Cyber DefenseDFDL and Apache Daffodil(tm) Overview from Owl Cyber Defense
DFDL and Apache Daffodil(tm) Overview from Owl Cyber Defense
 
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
 
Vital AI MetaQL: Queries Across NoSQL, SQL, Sparql, and Spark
Vital AI MetaQL: Queries Across NoSQL, SQL, Sparql, and SparkVital AI MetaQL: Queries Across NoSQL, SQL, Sparql, and Spark
Vital AI MetaQL: Queries Across NoSQL, SQL, Sparql, and Spark
 
JavaCro'14 - Drools Decision tables – form of human-readable rules – Dragan J...
JavaCro'14 - Drools Decision tables – form of human-readable rules – Dragan J...JavaCro'14 - Drools Decision tables – form of human-readable rules – Dragan J...
JavaCro'14 - Drools Decision tables – form of human-readable rules – Dragan J...
 
Controller design-pattern-drupal-north-toronto-2018-final
Controller design-pattern-drupal-north-toronto-2018-finalController design-pattern-drupal-north-toronto-2018-final
Controller design-pattern-drupal-north-toronto-2018-final
 
OpenDDR
OpenDDROpenDDR
OpenDDR
 
Domain-Specific Languages for Composable Editor Plugins (LDTA 2009)
Domain-Specific Languages for Composable Editor Plugins (LDTA 2009)Domain-Specific Languages for Composable Editor Plugins (LDTA 2009)
Domain-Specific Languages for Composable Editor Plugins (LDTA 2009)
 
Best Practices for Interoperable XML Databinding with JAXB
Best Practices for Interoperable XML Databinding with JAXBBest Practices for Interoperable XML Databinding with JAXB
Best Practices for Interoperable XML Databinding with JAXB
 
Domains - Don't leave your data model without them
Domains - Don't leave your data model without themDomains - Don't leave your data model without them
Domains - Don't leave your data model without them
 
Integrating DROOLS With Mule ESB
Integrating DROOLS With Mule ESBIntegrating DROOLS With Mule ESB
Integrating DROOLS With Mule ESB
 
RELAX NG to DTD and XSD Using the Open Toolkit
RELAX NG to DTD and XSD Using the Open ToolkitRELAX NG to DTD and XSD Using the Open Toolkit
RELAX NG to DTD and XSD Using the Open Toolkit
 
NoSQL no more: SQL on Druid with Apache Calcite
NoSQL no more: SQL on Druid with Apache CalciteNoSQL no more: SQL on Druid with Apache Calcite
NoSQL no more: SQL on Druid with Apache Calcite
 
Develop an App with the Odoo Framework
Develop an App with the Odoo FrameworkDevelop an App with the Odoo Framework
Develop an App with the Odoo Framework
 
PHP, The X DevAPI, and the MySQL Document Store -- Benelux PHP Confernece 2019
PHP, The X DevAPI, and the MySQL Document Store -- Benelux PHP Confernece 2019PHP, The X DevAPI, and the MySQL Document Store -- Benelux PHP Confernece 2019
PHP, The X DevAPI, and the MySQL Document Store -- Benelux PHP Confernece 2019
 
PHP, The X DevAPI, and the MySQL Document Store Presented January 23rd, 20...
PHP,  The X DevAPI,  and the  MySQL Document Store Presented January 23rd, 20...PHP,  The X DevAPI,  and the  MySQL Document Store Presented January 23rd, 20...
PHP, The X DevAPI, and the MySQL Document Store Presented January 23rd, 20...
 
Rules SDK IBM WW BPM Forum March 2013
Rules SDK IBM WW BPM Forum March 2013Rules SDK IBM WW BPM Forum March 2013
Rules SDK IBM WW BPM Forum March 2013
 
Groovy In the Cloud
Groovy In the CloudGroovy In the Cloud
Groovy In the Cloud
 

Recently uploaded

Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 

Recently uploaded (20)

Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 

Rule Engine & Drools

  • 1. Change the title picture in the master Rules Engine :Drools Rule Engine Concepts and Drools Expert
  • 2. Overview • Rule • Rule engine introduction & Working • Why use a Rule Engine? • ReteOO • Introduction to Drools • Drools Expert & Drools Rule Formats • Drools Rule Language Details • Drools Eclipse IDE & • Drools Guvnor Overview • Drools Flow Overview 2 Rules Engine :Drools
  • 3. Rule  Rule Bean rule "Is of valid age" public class Applicant { when $a : Applicant( age < 18 )  Constraints private String name; private int age; then private boolean valid; $a.setValid( false );  Action end //getter and setter methods here }  Constraints for above rule Object type constraint - Applicant Object Type. Field constraints - age < 18  An object type constraint plus its zero or more field constraints is referred to as a pattern.  The process of matching patterns against the inserted data is, referred to as pattern matching. 3 Rules Engine :Drools
  • 4. Rule Engine introduction & Working The rule engine is the computer program that delivers Knowledge Representation and Reasoning(KRR) functionality to the developer. At a high level it has three components:  Ontology (“Things” e.g java Classes/Beans )  Rules  Data 4 Rules Engine :Drools
  • 5. Why use a Rule Engine?  Separates application from dynamic logic • Rules can be modified by different groups • No need to recompile or redeploy • All rules are in one place  Declarative Programming – Readable and Anyone can easily modify rules.  Centralization of Knowledge - Repository of business policy  Speed and Scalability - Rete algorithm, Leaps algorithm 5 Rules Engine :Drools
  • 6. ReteOO  Rete algorithm was invented by Dr. Charles Forgy.  Rete algorithm can be broken into 2 parts: rule compilation and runtime execution.  Rule base is compiled into discrimination network.  Discrimination network is used to filter data as it propagates through the network. 6 Rules Engine :Drools
  • 7. Rete Algorithm example rule 1 when Cheese( $cheddar : name == "cheddar" ) $person : Person( favouriteCheese == $cheddar ) then System.out.println( $person.getName() + " likes cheddar" ); end rule 2 when Cheese( $cheddar : name == "cheddar" ) $person : Person( favouriteCheese != $cheddar ) then System.out.println( $person.getName() + " not likes cheddar" ); end 7 Rules Engine :Drools
  • 8. Introduction to Drools & Drools Expert  Drools 5 introduces the Business Logic integration Platform which provides a unified and integrated platform for Rules, Workflow and Event Processing.  Drools consist out of several projects: Drools Expert (rule Engine) Drools Guvnor (Business Rule Manager) jBPM (Process/Workflow) Drools Fusion (event processing /temporal reasoning) Drools Planner (automated planning) 8 Rules Engine :Drools
  • 9. Drools Expert & Drools Rule Format  Drools has an enhanced and optimized implementation of the Rete algorithm for object oriented systems called as ReteOO.  Drools Expert is a declarative, rule based, coding environment.  Drools Rule Formats  Drools Rule Language (DRL)  Domain-specific language (DSL)  Decision tables  Guided rule editor  XML 9 Rules Engine :Drools
  • 10. Drools Rule Language(DRL) 10 Rules Engine :Drools
  • 11. Domain-specific language (DSL)  DSL are written in natural language statements.  Domain experts (such as business analysts) can validate and do changes as per requirements.  DSL definitions consists of transformations from DSL "sentences" to DRL constructs. DRL Cheese(age < 5, price == 20, type=="stilton", country=="ch") [when]There is a Cheese with=Cheese() DSL [when]- age is less than {age}=age<{age} [when]- type is '{type}'=type=='{type}‘ [when]- country equal to '{country}'=country=='{country}' There is a Cheese with DSLR - age is less than 42 - type is 'stilton' DRL & DSL mapping [when]Something is {colour}=Something(colour=="{colour}") 11 Rules Engine :Drools
  • 12. Domain-specific language (DSL) 12 Rules Engine :Drools
  • 13. Domain-specific language (DSLR) 13 Rules Engine :Drools
  • 14. Decision table  Decision tables are a "precise yet compact" (ref. Wikipedia) way of representing conditional logic, and are well suited to business level rules.  spreadsheet format (XLS), and CSV.  Decision tables are not recommended for rules that do not follow a set of templates, or where there are a small number of rules  Each row in spreadsheet is a rule  Decision tables are essentially a tool to generate DRL rules automatically 14 Rules Engine :Drools
  • 15. Decision tables 15 Rules Engine :Drools
  • 16. Guided Rule Editor 16 Rules Engine :Drools
  • 17. XML Rule Language 17 Rules Engine :Drools
  • 18. Drools Rule Language :Executing Rules 18 Rules Engine :Drools
  • 19. Drools Rule Language :Executing Rules A Knowledge Base is what we call our collection of compiled definitions, such as rules and processes, which are compiled using the KnowledgeBuilder.  First, we will create Knowledge Builder KnowledgeBuilder knowledgeBuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();  Add DRL file to Knowledge Builder , it parses and compiles DRL files knowledgeBuilder.add(drlFileAsResource, ResourceType.DRL);  If there are no errors, we can add the resulting packages to our Knowledge Base Collection pkgs = knowledgeBuilder.getKnowledgePackages(); knowledgeBase = KnowledgeBaseFactory.newKnowledgeBase(); knowledgeBase.addKnowledgePackages(pkgs); 19 Rules Engine :Drools
  • 20. Drools Rule Language :Executing Rules  KnowledgeSession provides the way of exposing objects to be ruled.  Stateless Knowledge Session StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession(); Applicant applicant = new Applicant( “Rajesh Kumar", 16 ); ksession.execute( applicant ); assertFalse( applicant.isValid() );  Stateful Knowledge Session StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession(); Applicant applicant = new Applicant( “Rajesh Kumar", 16 ); knowledgeSession.insert(applicant); knowledgeSession.fireAllRules(); 20 Rules Engine :Drools
  • 21. Drools Rule Language Knowledge base can be updated inside rule’s body  insert()  Inserted object will be used by rules engines inside current session  update()  Updates existing in working memory object for the rest of rules  delete()  Removed object will not be ruled on current execution 21 Rules Engine :Drools
  • 22. Drools Eclipse IDE  The Eclipse based IDE provides users with an environment to edit and test rules in various formats, and integrate it deeply with their applications.  Required plugins  GEF plugin , GEF is the Eclipse Graphical Editing Framework. http://download.eclipse.org/tools/gef/updates/releases/  Drools Eclipse IDE plugin http://download.jboss.org/drools/release/5.4.0.Final/org.drools.updatesite/  Defining a Drools Runtime  Go to windows preferences  under the Drools category, select "Installed Drools runtimes“  use the default jar files as included in the Drools Eclipse plugin by clicking "Create a new Drools 5 runtime" 22 Rules Engine :Drools
  • 23. 23 Rules Engine :Drools
  • 24. Drools Guvnor Overview  Web-based rule management, storage, editing and deployment environment.  Rule editing  text, guided, decision tables, etc.  Version control  Categorization  Build and deploy  Scenarios 24 Rules Engine :Drools
  • 25. Guvnor Rule Editing 25 Rules Engine :Drools
  • 26. Guvnor Rule Deployment 26 Rules Engine :Drools
  • 27. Guvnor Test Scenarios 27 Rules Engine :Drools
  • 28. Drools Flow Overview 28 Rules Engine :Drools
  • 29. References  Drools Homepage http://www.jboss.org/drools/  Drools Blog http://blog.athico.com/  Drools Chat irc.codehaus.org #drools  Drools Mailing List rules-users@lists.jboss.org 29 Rules Engine :Drools
  • 30. Thank you Any questions? 30 Rules Engine :Drools