JBoss.orgCommunity Documentation

Drools Documentation

Version 6.1.0.Final


I. Welcome
1. Introduction
1.1. Introduction
1.2. Getting Involved
1.2.1. Sign up to jboss.org
1.2.2. Sign the Contributor Agreement
1.2.3. Submitting issues via JIRA
1.2.4. Fork GitHub
1.2.5. Writing Tests
1.2.6. Commit with Correct Conventions
1.2.7. Submit Pull Requests
1.3. Installation and Setup (Core and IDE)
1.3.1. Installing and using
1.3.2. Building from source
1.3.3. Eclipse
2. Release Notes
2.1. New and Noteworthy in KIE API 6.0.0
2.1.1. New KIE name
2.1.2. Maven aligned projects and modules and Maven Deployment
2.1.3. Configuration and convention based projects
2.1.4. KieBase Inclusion
2.1.5. KieModules, KieContainer and KIE-CI
2.1.6. KieScanner
2.1.7. Hierarchical ClassLoader
2.1.8. Legacy API Adapter
2.1.9. KIE Documentation
2.2. What is New and Noteworthy in Drools 6.0.0
2.2.1. PHREAK - Lazy rule matching algorithm
2.2.2. Automatically firing timed rule in passive mode
2.2.3. Expression Timers
2.2.4. RuleFowGroup and AgendaGroups are merged
2.3. New and Noteworthy in KIE Workbench 6.0.0
2.4. New and Noteworthy in Integration 6.0.0
2.4.1. CDI
2.4.2. Spring
2.4.3. Aries Blueprints
2.4.4. OSGi Ready
2.5. What is New and Noteworthy in Drools 6.1.0
2.5.1. JMX support for KieScanner
2.6. New and Noteworthy in KIE Workbench 6.1.0
2.6.1. Data Modeler - round trip and source code preservation
2.6.2. Data Modeler - improved annotations
2.6.3. Standardization of the display of tabular data
2.6.4. Generation of modify(x) {...} blocks
3. Compatibility matrix
II. KIE
4. KIE
4.1. Overview
4.1.1. Anatomy of Projects
4.1.2. Lifecycles
4.2. Build, Deploy, Utilize and Run
4.2.1. Introduction
4.2.2. Building
4.2.3. Deploying
4.2.4. Running
4.2.5. Installation and Deployment Cheat Sheets
4.2.6. Build, Deploy and Utilize Examples
4.3. Security
4.3.1. Security Manager
III. Drools Runtime and Language
5. Hybrid Reasoning
5.1. Artificial Intelligence
5.1.1. A Little History
5.1.2. Knowledge Representation and Reasoning
5.1.3. Rule Engines and Production Rule Systems (PRS)
5.1.4. Hybrid Reasoning Systems (HRS)
5.1.5. Expert Systems
5.1.6. Recommended Reading
5.2. Rete Algorithm
5.3. ReteOO Algorithm
5.4. PHREAK Algorithm
6. User Guide
6.1. The Basics
6.1.1. Stateless Knowledge Session
6.1.2. Stateful Knowledge Session
6.1.3. Methods versus Rules
6.1.4. Cross Products
6.2. Execution Control
6.2.1. Agenda
6.2.2. Rule Matches and Conflict Sets.
6.2.3. Declarative Agenda
6.3. Inference
6.3.1. Bus Pass Example
6.4. Truth Maintenance with Logical Objects
6.4.1. Overview
6.5. Decision Tables in Spreadsheets
6.5.1. When to Use Decision Tables
6.5.2. Overview
6.5.3. How Decision Tables Work
6.5.4. Spreadsheet Syntax
6.5.5. Creating and integrating Spreadsheet based Decision Tables
6.5.6. Managing Business Rules in Decision Tables
6.5.7. Rule Templates
6.6. Logging
7. Rule Language Reference
7.1. Overview
7.1.1. A rule file
7.1.2. What makes a rule
7.2. Keywords
7.3. Comments
7.3.1. Single line comment
7.3.2. Multi-line comment
7.4. Error Messages
7.4.1. Message format
7.4.2. Error Messages Description
7.4.3. Other Messages
7.5. Package
7.5.1. import
7.5.2. global
7.6. Function
7.7. Type Declaration
7.7.1. Declaring New Types
7.7.2. Declaring Metadata
7.7.3. Declaring Metadata for Existing Types
7.7.4. Parametrized constructors for declared types
7.7.5. Non Typesafe Classes
7.7.6. Accessing Declared Types from the Application Code
7.7.7. Type Declaration 'extends'
7.7.8. Traits
7.8. Rule
7.8.1. Rule Attributes
7.8.2. Timers and Calendars
7.8.3. Left Hand Side (when) syntax
7.8.4. The Right Hand Side (then)
7.8.5. Conditional named consequences
7.8.6. A Note on Auto-boxing and Primitive Types
7.9. Query
7.10. Domain Specific Languages
7.10.1. When to Use a DSL
7.10.2. DSL Basics
7.10.3. Adding Constraints to Facts
7.10.4. Developing a DSL
7.10.5. DSL and DSLR Reference
8. Complex Event Processing
8.1. Complex Event Processing
8.2. Drools Fusion
8.3. Event Semantics
8.4. Event Processing Modes
8.4.1. Cloud Mode
8.4.2. Stream Mode
8.5. Session Clock
8.5.1. Available Clock Implementations
8.6. Sliding Windows
8.6.1. Sliding Time Windows
8.6.2. Sliding Length Windows
8.7. Streams Support
8.7.1. Declaring and Using Entry Points
8.8. Memory Management for Events
8.8.1. Explicit expiration offset
8.8.2. Inferred expiration offset
8.9. Temporal Reasoning
8.9.1. Temporal Operators
IV. Drools Integration
9. Drools Commands
9.1. API
9.1.1. XStream
9.1.2. JSON
9.1.3. JAXB
9.2. Commands supported
9.2.1. BatchExecutionCommand
9.2.2. InsertObjectCommand
9.2.3. RetractCommand
9.2.4. ModifyCommand
9.2.5. GetObjectCommand
9.2.6. InsertElementsCommand
9.2.7. FireAllRulesCommand
9.2.8. StartProcessCommand
9.2.9. SignalEventCommand
9.2.10. CompleteWorkItemCommand
9.2.11. AbortWorkItemCommand
9.2.12. QueryCommand
9.2.13. SetGlobalCommand
9.2.14. GetGlobalCommand
9.2.15. GetObjectsCommand
10. CDI
10.1. Introduction
10.2. Annotations
10.2.1. @KReleaseId
10.2.2. @KContainer
10.2.3. @KBase
10.2.4. @KSession for KieSession
10.2.5. @KSession for StatelessKieSession
10.3. API Example Comparison
11. Integration with Spring
11.1. Important Changes for Drools 6.0
11.2. Integration with Drools Expert
11.2.1. KieModule
11.2.2. KieBase
11.2.3. IMPORTANT NOTE
11.2.4. KieSessions
11.2.5. Event Listeners
11.2.6. Loggers
11.2.7. Defining Batch Commands
11.2.8. Persistence
11.3. Integration with jBPM Human Task
11.3.1. How to configure Spring with jBPM Human task
12. Apache Camel Integration
12.1. Camel
13. Drools Camel Server
13.1. Introduction
13.2. Deployment
13.3. Configuration
13.3.1. REST/Camel Services configuration
14. JMX monitoring with RHQ/JON
14.1. Introduction
14.1.1. Enabling JMX monitoring in a Drools application
14.1.2. Installing and running the RHQ/JON plugin
V. Drools Workbench
15. Workbench
15.1. Installation
15.1.1. War installation
15.1.2. Workbench data
15.1.3. System properties
15.2. Quick Start
15.2.1. Add repository
15.2.2. Add project
15.2.3. Define Data Model
15.2.4. Define Rule
15.2.5. Build and Deploy
15.3. Administration
15.3.1. Administration overview
15.3.2. Organizational unit
15.3.3. Repositories
15.4. Configuration
15.4.1. User management
15.4.2. Roles
15.4.3. Restricting access to repositories
15.4.4. Command line config tool
15.5. Introduction
15.5.1. Log in and log out
15.5.2. Home screen
15.5.3. Workbench concepts
15.5.4. Initial layout
15.6. Changing the layout
15.6.1. Resizing
15.6.2. Repositioning
15.7. Authoring
15.7.1. Artifact Repository
15.7.2. Asset Editor
15.7.3. Project Explorer
15.7.4. Project Editor
15.7.5. Validation
15.7.6. Data Modeller
15.7.7. Categories Editor
15.8. Embedding Workbench In Your Application
16. Authoring Assets
16.1. Creating a package
16.1.1. Empty package
16.1.2. Copy, Rename and Delete Packages
16.2. Business rules with the guided editor
16.2.1. Parts of the Guided Rule Editor
16.2.2. The "WHEN" (left-hand side) of a Rule
16.2.3. The "THEN" (right-hand side) of a Rule
16.2.4. Optional attributes
16.2.5. Pattern/Action toolbar
16.2.6. User driven drop down lists
16.2.7. Augmenting with DSL sentences
16.2.8. A more complex example:
16.3. Templates of assets/rules
16.3.1. Creating a rule template
16.3.2. Define the template
16.3.3. Defining the template data
16.3.4. Generated DRL
16.4. Guided decision tables (web based)
16.4.1. Types of decision table
16.4.2. Main components\concepts
16.4.3. Defining a web based decision table
16.4.4. Rule definition
16.4.5. Audit Log
16.5. Spreadsheet decision tables
16.6. Scorecards
16.6.1. (a) Setup Parameters
16.6.2. (b) Characteristics
16.7. Test Scenario
16.7.1. Given Section
16.7.2. Expect Section
16.7.3. Global Section
16.7.4. New Input Section
16.8. Functions
16.9. DSL editor
16.10. Data enumerations (drop down list configurations)
16.10.1. Advanced enumeration concepts
16.11. Technical rules (DRL)
17. Workbench Integration
17.1. REST
17.1.1. Job calls
17.1.2. Repository calls
17.1.3. Organizational unit calls
17.1.4. Maven calls
17.1.5. REST summary
18. Workbench High Availability
18.1.
18.1.1. VFS clustering
18.1.2. jBPM clustering
VI. Drools Examples
19. Examples
19.1. Getting the Examples
19.2. Hello World
19.3. State Example
19.3.1. Understanding the State Example
19.4. Fibonacci Example
19.5. Banking Tutorial
19.6. Pricing Rule Decision Table Example
19.6.1. Executing the example
19.6.2. The decision table
19.7. Pet Store Example
19.8. Honest Politician Example
19.9. Sudoku Example
19.9.1. Sudoku Overview
19.9.2. Running the Example
19.9.3. Java Source and Rules Overview
19.9.4. Sudoku Validator Rules (validate.drl)
19.9.5. Sudoku Solving Rules (sudoku.drl)
19.10. Number Guess
19.11. Conway's Game Of Life
19.12. Invaders
19.12.1. Invaders1Main
19.12.2. Invaders2Main
19.12.3. Invaders3Main
19.12.4. Invaders4Main
19.12.5. Invaders5Main
19.12.6. Invaders6Main
19.12.7. Invaders4Main
19.13. Adventures with Drools
19.13.1. Using the game.
19.13.2. The code
19.14. Pong
19.15. Wumpus World
19.16. Miss Manners and Benchmarking
19.16.1. Introduction
19.16.2. In depth Discussion
19.16.3. Output Summary
19.17. Backward-Chaining
19.17.1. Backward-Chaining Systems
19.17.2. Cloning Transitive Closures
19.17.3. Defining a Query
19.17.4. Transitive Closure Example
19.17.5. Reactive Transitive Queries
19.17.6. Queries with Unbound Arguments
19.17.7. Multiple Unbound Arguments