Table of Contents
Preface
Chapter 1: Introduction
Chapter 2: Basic Rules
Chapter 3: Validation
Chapter 4: Data Transformation
Chapter 5: Human-readable Rules
Chapter 6: Stateful Session
Chapter 7: Complex Event Processing
Chapter 8: Drools Flow
Chapter 9: Sample Application
Chapter 10: Testing
Chapter 11: Integration
Chapter 12: Performance
Appendix A: Development Environment Setup
Appendix B: Custom Operator
Appendix C: Dependencies of Sample Application
Index
- Chapter 1: Introduction
- Problems with traditional approaches
- The solution
- Advantages
- Disadvantages
- When not to use a rule engine
- Drools
- Alternatives to Drools
- Summary
- Chapter 2: Basic Rules
- Rule basics
- Executing rules
- Rule syntax
- Rule concepts
- Variables in rules
- Types
- Comments
- Package
- Imports
- Global variables
- Functions
- Dialect
- Rule condition
- And
- Or
- Not
- Exists
- Eval
- Return value restriction
- Inline eval
- This
- Working with collections
- Rule consequence
- Rule attributes
- salience (priority)
- No-loop
- Dialect
- Rule concepts
- Summary
- Rule basics
- Chapter 3: Validation
- Banking domain model
- Problem definition
- Analysis
- Design
- Validation package
- Object required type rules
- Testing
- Minimal account balance rule
- Student account rule
- Unique account number rule
- Implementation
- Validation service
- Summary
- Chapter 4: Data Transformation
- Process overview
- Getting the data
- Loading facts into the knowledge session
- Writing transformation rules
- Testing
- Address normalization
- Testing the findAddress rule
- Unknown country
- Currency conversion
- One account allowed
- Transformation results
- Implementation of the data loading
- Database setup
- Project setup
- iBatis configuration
- Running iBatis
- Alternative data loading
- Summary
- Chapter 5: Human-readable Rules
- Domain Specific Language
- DSL as an interface
- DSL for validation rules
- File formats
- DSL file format
- DRL file format
- DSLR file format
- DSL for multiple constraints in a condition
- Named capture groups
- DSL for data transformation rules
- Decision tables
- Advantages of a decision table
- Disadvantages of a decision table
- Calculating the interest rate
- Project setup
- Testing
- Comma Separated values
- Rule Templates
- Drools Flow
- Drools Agenda
- Methods for managing rule execution order
- Ruleflow
- Start
- End
- Action
- RuleFlowGroup
- Split
- Join
- Example
- Rules
- KnowledgeBase setup
- Tests
- Summary
- Domain Specific Language
- Chapter 6: Stateful Session
- Introduction to stateful session
- Validation using stateful session
- Design overview
- Stateful validation service
- Integration testing
- Logical assertions
- Keeping the validation report up-to-date
- Collect conditional element
- Serialization
- Knowledge session re-creation
- Testing
- Session serialization
- Full session serialization
- Summary
- Chapter 7: Complex Event Processing
- CEP and ESP
- Drools Fusion
- Fraud detection
- Problem description
- Design and modeling
- Fraud detection rules
- Notification
- Monitoring—averageBalanceQuery
- Two large withdrawals
- Sequence of increasing withdrawals
- High activity
- Summary
- Chapter 8: Drools Flow
- Loan approval service
- Model
- Loan approval ruleflow
- Invalid loan application form
- Email work item
- Fault node
- The size of the loan
- Test for a small loan
- Rating Calculation
- Subflow
- Subflow diagram
- Rating calculation subflow test
- Decisions on rating
- Testing the 'Rating?' node
- Transfer Funds work item
- Work item definition
- Work item registration
- Work item handler
- Work item handler registration
- Testing the transfer work item
- Human task
- Test for the human task
- Final Approval
- Test for the 'Approve Event' node
- Banking service
- Disadvantages of a ruleflow
- Invalid loan application form
- Summary
- Loan approval service
- Chapter 9: Sample Application
- Users
- Architecture
- Technologies used
- Additional Drools projects used
- Libraries used
- Additional Drools projects used
- Business logic
- Design
- Configuration
- JPA annotations for domain objects
- JPA configuration
- Spring Framework configuration
- Web application setup
- Tag library
- Tomcat setup
- Deployment
- Repositories
- Validation
- Services
- Transactions
- Presentation layer
- Localized messages
- Customer save form controller
- Complex Event Processing service
- Loan approval
- Loan request form
- Process persistence
- Task list
- Working on a task
- Loan approval event
- Summary
- Chapter 10: Testing
- How to write unit tests for rules
- Rule integration testing
- Rule acceptance testing
- Creating a test scenario
- Running a test scenario
- Running all test scenarios
- Static analysis of rules
- Troubleshooting techniques
- Event listeners
- Debugging
- Source of generated classes
- mvel tricks
- Summary
- Chapter 11: Integration
- Dynamic KnowledgeBase loading
- KnowledgeAgent
- External artifact building
- Building with Ant
- Drools execution server
- Interest rate calculation example
- The server
- The client
- Interest rate calculation example
- Spring Framework integration
- KnowledgeBaseFactoryBean
- Standards
- JSR94 Java Rule Engine API
- Summary
- Dynamic KnowledgeBase loading
- Chapter 12: Performance
- Rete algorithm
- Node types
- Rete node
- EntryPointNode
- ObjectTypeNode
- AlphaNode
- LeftInputAdapterNode
- TerminalNode
- BetaNode
- More complex example
- EvalNode and FromNode
- Retracting or modifying a fact
- Initial fact
- Node types
- Node sharing
- Example
- Node indexing
- AlphaNode indexing
- Computation complexity
- BetaNode indexing
- Example
- AlphaNode indexing
- KnowledgeBase partitioning
- Parallel execution
- Summary
- Rete algorithm
- Appendix A: Development Environment Setup
- Environment setup
- Dependencies and their licenses
- Environment setup
- Appendix B: Custom Operator
- Summary



