Table of Contents
Preface
Chapter 1: Drooling over JBoss Rules
Chapter 2: Getting the software
Chapter 3: Meet the Guvnor
Chapter 4: Guided Rules with the Guvnor
Chapter 5: From Guvnor to JBoss IDE
Chapter 6: More rules in the JBoss IDE
Chapter 7: Testing your Rules
Chapter 8: Data and Rules in Excel
Chapter 9: Domain Specific Language (DSL) and RuleFlow
Chapter 10: Deploying Rules in Real Life
Chapter 11: Looking under the Cover
Chapter 12: Advanced Drools Features
Index
- Chapter 1: Drooling over JBoss Rules
- Who are you? What's your problem?
- Does this sound like where you work?
- Life or death business rules
- What would you do?
- Business rules in your organization
- Exercise — rules in your organization
- The chocolate factory
- Build your own rule engine in Excel
- Why can't the tech guys write the rules for me?
- Why existing solutions don't cut it
- Rule engines to the rescue
- Other rules (Microsoft Outlook)
- Meet JBoss Rules
- A bit more on open source
- The JBoss Rules community
- Where to get help
- How to ask for help
- The bigger picture
- Members of your team
- How do I write the rules
- Introducing the BRMS (Guvnor)
- Parts of the solution
- Rules editor
- Rules compiler
- Runtime
- Fact model
- Java
- Rule repository
- Rest of the system
- When not to use a rule engine
- Summary
- Who are you? What's your problem?
- Chapter 2: Getting the software
- What are we going to install?
- Who should install it?
- Installing Java
- Installing JBoss
- Actual install
- Installing the BRMS/Guvnor
- Installing Eclipse
- Installing the Drools plug-in
- Finding the plug-in
- Installing Maven
- Installing sample projects for this book
- Setting up the sample project in Eclipse
- Getting Maven and Eclipse to work together
- Troubleshooting
- Summary
- What are we going to install?
- Chapter 3: Meet the Guvnor
- Taking a tour with the Guvnor
- Getting started
- General navigation
- The search screen
- Administration
- Loading the samples
- What did we just do?
- More on the admin page
- Rules
- Packages
- Deployment
- QA—Quality Analysis
- Hello World example
- Summary
- Taking a tour with the Guvnor
- Chapter 4: Guided Rules with the Guvnor
- Passing information in and out
- Building the fact model
- Importing the fact model into Guvnor
- Guided rules using the fact model
- The step-by-step answer
- Running this scenario
- What just happened?
- Summary
- Chapter 5: From Guvnor to JBoss IDE
- A more powerful rule
- Have a go
- Updating the rule—step by step
- The When part
- Looking behind the curtain—a text-based rule
- A small problem...
- Rule attributes
- More on the guided editor
- Possible comparisons
- Condition types
- Add more options
- Multiple field constraints
- The Then part
- More rule options and attributes
- Text editing
- Introduction to the JBoss IDE
- Hello World in the JBoss IDE editor
- What just happened?
- Try it yourself
- Summary
- A more powerful rule
- Chapter 6: More rules in the JBoss IDE
- Rule syntax
- Patterns for the When part
- Patterns for the Then part
- Shipping chocolate bars
- The problem (and remind me why I need business rules)
- Why rules scale better—a reminder
- Getting and building the sample
- Rules
- ChocolateShipment.java
- CustomerOrder.java
- OompaLoompaDate
- The RuleRunner file
- MultipleRulesExample
- Running the sample
- Console
- More powerful rule syntax
- Lefthand side
- Righthand side—Then
- Guided editor in the JBoss IDE
- Summary
- Rule syntax
- Chapter 7: Testing your Rules
- Testing when building rules
- Making testing interesting
- Testing using Guvnor
- Testing using FIT
- Getting FIT
- The FIT requirements document
- Running FIT on our sample
- What just happened?
- What can go wrong?
- The FIT plumbing
- What is unit testing?
- Why unit test?
- Unit testing the Chocolate Shipments sample
- What just happened?
- What if it goes wrong?
- Failures and errors
- Testing an entire package
- Summary
- Testing when building rules
- Chapter 8: Data and Rules in Excel
- Reading data from Excel
- Business rules for this sample
- Getting and running the sample
- Input
- Rules
- Running the sample
- What's going on?
- Under the covers
- More on Cells and Ranges
- Sophisticated, but repetitive rules
- Some Excel magic
- Decision tables behind the scenes
- Header information
- RuleTable—Evaluate the buy trades
- RuleTable—Execute the buy trades
- Other rule tables
- Mixing rules and decision tables
- Running the Chocolate Trading example
- What just happened?
- Have a go
- Summary
- Reading data from Excel
- Chapter 9: Domain Specific Language (DSL) and RuleFlow
- What is a Domain Specific Language (DSL)?
- Expanders
- The DSL format
- Other DSL editing options
- Writing DSLs
- Meet the sample
- Running the DSL example
- Guvnor and DSL-based rules
- Expanders
- Ruleflow
- Ruleflow is not workflow
- That Homeloan example again
- Linking rules to Ruleflow
- A quick introduction to stateful applications
- Stateful rules and Ruleflow
- What is a Domain Specific Language (DSL)?
- Summary
- Chapter 10: Deploying Rules in Real Life
- One size fits all architecture
- What needs to be deployed?
- Rules as code or data?
- Deployment process
- What's a repository?
- Deploying rules
- Push or pull?
- Loading our rules
- Looking inside RuleRunner.java
- Helper methods
- Public methods
- Stateless
- Stateful
- Alternative method—RuleAgent
- Web deployment
- Maven for packaging
- One size fits all architecture
- Summary
- Chapter 11: Looking under the Cover
- Rule engine concepts
- Facts or objects
- Working memory
- Pattern matching, Agenda, and Activations
- Conflict resolution
- A more dynamic Agenda
- Truth maintenance
- Back to the future (with chocolate shipping)
- Logging working memory
- Looking at the working memory log
- Drools Audit Log Viewer
- Rete algorithm
- Rete in action
- Debugging rules
- Debugging rules in the Eclipse IDE
- Rules debug perspective
- Other Drools views while debugging
- When to log, when to test, and when to debug
- Summary
- Rule engine concepts
- Chapter 12: Advanced Drools Features
- Pigeons, Drools, and Complex Event Processing
- Implementing Complex Event Processing using Fusion
- More powerful events
- Inline beans
- Loading data when your beans don't exist—Smooks
- From pigeons to biscuits—Drools Solver for your local supermarket
- How Drools Solver works
- Implementing a Solver
- More information on Solver
- Forward and backward chaining
- Changing the conflict resolution methodology
- Standard rule engine API—JSR 94
- Other rule engines
- How Drools Solver works
- New API
- Drools flow—a full workflow engine
- New features in Guvnor
- Does this still sound like where you work?
- Summary
- Pigeons, Drools, and Complex Event Processing


