A practical handbook for anyone interested in programming rule-based systems and written by the creator of the popular Java rule engine, Jess, this book is structured around a series of large, fully developed practical examples of rule-based programming in Java. After the topic of rule-based systems is introduced, software developers and architects are shown the Jess rule programming language in an accessible, tutorial style. Demonstrated is how to quickly progress from building freestanding interactive applications to rule-based Web and Enterprise software. Specific issues covered in this process include designing the application, embedding Jess in Java applications, and using a rule engine in the J2EE environment.
Expert systems were a hot topic in the 1970s and 1980s, but soon fell out of favour because they are too inflexible and not much more effective than hard-code if-statements.
Jess is a Java-based implementation of a traditional production-system style expert system shell. It gives you a LISP-like language for asserting facts and rules, and also allows close interaction with the immense Java library.
The book has a number of large examples that are explained in some detail.
But, alas, it doesn't provide any good reasons for actually using Jess in practice. Good applications of expert systems seems are so few and far between that the very few times when they might be useful you may as well just hard-code it by hand (or whip up your own framework).
The old-fashioned LISP-style language is quaint and works well enough, I suppose, but if you are just encoding decision trees, flow-charts, or truth tables, then better notations would be helpful.
I was also surprised that the question-asking code had to be written by hand. While by no means difficult, it seems that asking the user questions and getting their answers is a staple of any user-oriented expert system.
I also found it amusing that in a couple of places the author descends into fantasy, talking about how you might have a number of professional "knowledge engineers" working on your team, some of whom might not even know how to program. Right. And they probably all still listen to 8-track tapes, too.
As often seems to be the case in expert system articles, it is very hard to come up with small but useful examples. Simple examples tend to be very trivial, and are accompanied by apologies for using an expert system at all. Even in the bigger examples, which I thought were the best part of the book, it wasn't at all obvious that the expert system approach was the best way to solve those problems. Obviously an expert system *can* be used in the given examples, but should it? How is it better than other approaches?
Finally, unless you want close interaction with Java, I am not sure what there is to recommend Jess over, say, CLIPS, or other expert system shells. In fact, I am disinclined to recommend Jess because it is not actually free: you need to buy a license for the full system, a fact that which is, annoyingly, not at all made clear on their website.
So in short, don't use an expert system if you have a choice, or if you are not sure it is right for you application. It's a dead-end technology. And, if you do end up building an expert system, look at free alternatives, such as CLIPS, before shelling out for Jess.
However, the large examples in the book are probably useful enough to be worth reading by anyone who wants to know more about expert systems.