Saturday, October 29, 2011
A Developer's Survey of the fast-moving Drools project
This review is for "Drools Developers Cookbook" from Packt. This book is currently available in 'RAW' format, which means it's not quite finished. The text is a little rough around the edges, and there are two chapters yet to be provided.
Do you work with Drools, the popular open source rule engine? If not, this is not the right book to get you started. There is no introductory material to get you started. But if you know Drools, this is your ticket straight to the current cutting edge! This book gives pointers and best practices for working with the latest and greatest features.
The first chapter gives you tips on working with rules. You'll see how to write rules in ways outside the usual, how to enable some diagnostic logging, and how to work with rules on timers and Calendars.
Chapter 2 deals with more 'bread and butter' Drools material, but this time not dealing with rules.
Chapters 3 and 4 cover Guvnor, the open source Business Rules Management System. Guvnor, a web app, allows you to author, categorize, and test your rules. This is how you can have business-analyst types write business logic instead of using programmers.
The fifth chapter is probably the most newbie-friendly chapter in the book, it deals with Complex Event Processing. CEP is a way of applying rules over windows of time, so you can express something like "Tell me if there are 100 online purchases in any half-hour period".
Chapters 6 and 7 deal with executing Drools remotely (mostly through 'Drools Server') and integrating Drools with other applications through Spring and Apache Camel. This is very handy-- after mastering Drools, developers sometimes wonder how to apply their newfound knowledge in a practical way. Here are some good ideas for solving that problem!
The two chapters that are not yet provided deal with Drools Planner (a tool for finding optimal solutions to problems like capacity balancing challenges) and jBPM5 (a re-hang of the popular jBPM Business Processing framework). These two will be very important, especially jBPM. I hope the author is putting a special emphasis on these.
All things considered, I find this book to be a good resource for Drools developers. As I've hinted, if you're new to Drools you probably need to start with something a little more basic. But if you're already into Drools, this is a quick way to get get a handle on state-of-the-art features.
The book can be found here.
Friday, October 14, 2011
An easy introduction to the popular JBoss ESB.
*Disclaimer* I work for Red Hat as a JBoss support engineer and work with JBoss ESB every day. This will allow me to make an informed review of this book, but you should be aware that I work often with the book's authors. Still, you can expect an honest review here.
Primer: What's an ESB? An ESB (Enterprise Service Bus) is a runtime environment that lets the user define services, consume services and route and transform messages. The user can wire together modular services to define desired functionality. ESBs are often used to mediate web service calls-- they stand in between the caller of a service and the provider of the service. From this man-in-the-middle position they are able to transform messages, manage security concerns, enrich messages, and audit activities. ESBs are also often used with JMS. In this context they are transactional, so they can string together a series of actions (including database inserts) that are transactional and can be initiated by a fire-and-forget client. ESBs offer great utility, but usually at a significant technological cost.
This book is the first book offered for JBoss ESB, and is currently offered in "RAW" format, which means it is incomplete and subject to editing as the authors continue to enhance it. The authors are all key contributors to the project, so the knowledge is first-rate. Presentation is also surprisingly good, probably because at least one of the authors is a prolific blogger and thus in good practice. The overall quality of the book is high.
So what's covered in this book? Here's what I would consider the highlights:
- Download and installation of JBossESB.
- Configuration of JBDS (an Eclipse-based IDE for use with JBoss products)
- Introduction to the JBoss ESB quickstarts. This is very important! This is an introduction to literally dozens of minimal, functional examples for JBoss ESB. (Think of them like "Hello World" examples for using different parts of the ESB.)
- Services, including the necessary configuration parts.
- Writing your own functionality for the ESB (Custom Actions). These can be implemented in Java, Groovy, etc.
- Messages. What they are made of, how to validate them, how they are carried on the ESB.
- Message Exchange Patterns (MEP). This is an important concept in ESBs, it determines if your client gets a response or not.
- Passing messages in memory for performance.
- The packaged Services that come with JBoss ESB. Like the quickstarts, this is a huge gateway to lots of functionality just waiting to be picked up and used.
The book's title includes "Beginner's Guide", which is partly truthful. It is a gentle enough introduction that a newbie will be able to make use of the book. But it also includes plenty of coverage of what I'd consider "Advanced Topics". (Remember, I answer support questions on this software every working day, so I think I have a fair idea of what's easy to do and what's not.)
Since this is a RAW book, it's not complete yet. At least one other chapter is promised, on Gateways. A Gateway is a component that accepts messages from sources other than the ESB itself, i.e. external JMS providers, HTTP, SQL, and so on. This should be another good chapter.
Who is this book good for? I'd say any user of JBoss ESB. If you're not yet a user of JBoss ESB, but think you might like an ESB, then I'd recommend this book for you, too.
If you think you'd like this book, I'd suggest you move fast. For the month of October, Packt is offering any Open Source eBook for only $10.99. That's hard to beat.
The book can be found here.