List of Figures
Chapter 2. What are rule-based systems?
Figure 2.1. The architecture of a typical rule-based system. The pattern-matcher applies the rules in the rule-base to the
facts in working memory to construct the agenda. The execution engine fires the rules from the agenda, which changes the contents
of working memory and restarts the cycle.
Chapter 3. Introducing Jess
Figure 3.1. The jess.Console interface for Jess. This as an alternative to the command-line jess.Main interface. You can enter
Jess code in the small text field at the bottom left, and Jess output appears in the scrolling text area at the top.
Figure 3.2. The JessWin developer’s environment for Jess. JessWin is a third-party add-on that provides a graphical interface
to many functions that are useful to Jess programmers.
Chapter 5. Scripting Java with Jess
Figure 5.1. You can use Jess from Java, and call Java methods from Jess.
Chapter 6. Representing facts in Jess
Figure 6.1. Facts in the working memory are Jess’s representation of information about the outside world.
Figure 6.2. Working memory is something like a relational database.
Figure 6.3. Jess uses the java.beans.Introspector class to turn JavaBeans into deftemplates.
Chapter 7. Writing rules in Jess
Figure 7.1. A pictorial representation of the factorial example from the text
Chapter 8. Under the hood: how Jess works
Figure 8.1. An unoptimized Rete network for the two rules example-1 and example-2
Figure 8.2. A Rete network that shares pattern nodes
Figure 8.3. A Rete network that shares both pattern and join nodes
Figure 8.4. Jess’s view command displays the Rete network in a window.
Chapter 12. Writing the PC Repair Assistant
Figure 12.1. A simple flowchart representing a trivial diagnostic process. The hypothesis “The car won’t run because it has
no fuel” is implicit in the diagram.
Figure 12.2. A simple top-level flowchart for diagnosing PC hardware problems. This flowchart can diagnose the problem “The
computer isn’t getting any electricity.”
Figure 12.3. The cycle of rules that fire to get answers from the user in this application. The rule power-supply-broken needs
an answer fact before it matches. Jess’s backward-chaining engine detects this requirement and asserts a need-answer fact.
The rule supply-answers detects this fact and asserts an ask fact in response. Finally, the ask-question-by-id rule fires
in response to the ask fact and supplies the answer fact needed by power-supply-broken.
Figure 12.4. A simple flowchart for diagnosing some hardware problems in computers that make sound but don’t boot. The ERROR
state is supposed to be impossible to reach.
Figure 12.5. The diagnostic flowchart for computers that beep fewer than three times and then don’t boot
Chapter 13. Adding a graphical interface
Figure 13.1. An empty JFrame created via a short Jess script as shown in the text
Figure 13.2. Application window with an added JTextArea for displaying questions
Figure 13.3. Application window with both an area for displaying questions and a lower panel for collecting answers
Figure 13.4. An instance of the class jess.awt.ActionListener that serves as an event adapter and forwards GUI events to the
Figure 13.5. Some of the code in a GUI application runs on the main thread, and other code runs on the event thread. The separate
threads can communicate by calling Jess functions. In the diagram, time flows down. Note how calling a Jess function like
(run) results in a Java function like Rete.run() being called a short time later.
Figure 13.6. The multiple choice input panel displays a combo box and a button. The choices in the combo box are changed based
on the question being displayed.
Chapter 14. The reality connection
Figure 14.1. A six-story building heated and cooled by two heat pumps. Each floor has temperature sensors and an automated
air vent. This small building contains 14 devices to connect to the control software: six sensors, six vents, and two heat
Figure 14.2. A GUI for the HVAC simulator. The three columns of labels represent the heat pump state, vent state, and temperature
for each floor. The text field on the bottom shows the current outdoor temperature.
Chapter 16. Writing the rules
Figure 16.1. Possibility distribution of young
Figure 16.2. The fuzzy terms cold, cool, OK, warm, and hot and the possibility graphs of temperatures they represent
Figure 16.3. Probability chart for the fuzzy terms corresponding to the five discrete settings used for the vents
Chapter 18. Embedding Jess in Java applications
Figure 18.1. Usage diagram for TextAreaWriter and TextReader
Chapter 19. Deploying web-based applications
Figure 19.1. The result of viewing the Hello servlet in Netscape
Figure 19.2. The TekMart login screen, as implemented in the file index.html. The customer ID will be used by the servlets
in the Recommendations Agent.
Figure 19.3. The output of the catalog JSP