Many Java developers today have moved toward some form of logging and/or unit
test framework, and their code has been purged of many System.out. println()
statements that were the traditional approach. Now perhaps it's time to get
rid of some of those if ( x ) {. . .} as well. Nothing in a piece of code
seems to foul up the design as much as the business logic, and going from
two-tier to three-tier to n-tier hasn't done much to solve that problem.
In some dark layer of the code there is still a tangled mass of ifs, elses,
and look-up tables upon which the whole thing rests. After a project goes
through a few generations of developers, the "business rule" layer becomes a
Gordian knot that defies both change and comprehension. Rule engines offer a
framework for isolating the business logic in your applications; this
framework is simpler and more flexible than look-up t... (more)