I’ve been looking into the topic of (business rule) engines for a while now. Frequently at work I find myself embedding business logic into my code – silly things such as ‘delivery takes and extra day if your in Cornwall’ for example due to time constraints and a lack of a decent framework get written directly into the code. I hate this approach – business rules can be far more fluid than the code itself. Business rule engines such as drools aim to separate these business rules from the code itself. There has been a lot of movement in this area recently – there are a number of commercial rule-based engines in addition to the opensource drools, including “ILOG JRules”:http://www.ilog.com/, “Haley Eclipse”:http://www.haley.com/, “Sandia Jess”:http://herzberg.ca.sandia.gov/jess and “CLIPS”:http://www.ghg.net/clips/CLIPS.html.
“JSR-94”:http://www.jcp.org/en/jsr/detail?id=94 details the API for a Java-based Rule Engine, and is currently at the Proposed Final Draft stage. Implementations of JSR-94 will be forthcoming – ILOG are in the expert group so its fair to assume they’ll have an implementation soon, and the people behind drools have also committed to provide an implementation in the near future.
Due to the other implementations being commercial, I’ve only really looked at drools, although its documentation is good (the “drools guide(Drools – Theory, Usage and Reference [PDF])”:http://drools.org/pdf/drools-guide.pdf gives a good overview not only of drools itself but of rule engines in general) but it seems fairly straightforward..