up previous next
Next: Summary Up: AI Previous: A more complicated example

Subsections

More of the ABLE iceberg

When I say that there is much more to ABLE than what I've shown so far, well, that is an understatement. In this section I'm going to wrap up this introduction with some more information about ABLE that may help you take the next step to downloading it and using it on your next project.

ABLE's GUI tools

The first thing I've done completely backwards from IBM is skip a discussion of the GUI tools that ABLE ships with. That's because, in my opinion, you really need to understand what you're doing before you dig into their GUI toolset.

ABLE's GUI tools can be used to visually create standalone agents, as well as groups of agents. Besides the promise of the AI technology itself, this is probably the second feature that attracted me to the ABLE application. I thought that if IBM could make this technology accessible through a simplified GUI, this could be a real assistance to developers that have not worked with AI technology before. 

The ABLE Agent Editor

The ABLE Agent Editor, shown in the next figure, is the main tool within ABLE for creating intelligent agents.

Quoting straight from an IBM whitepaper ``The ABLE Agent Editor is a Swing-based interactive development and test environment.'' Within the editor agents can be loaded, edited, and saved using Java serialization. 

I could get into a lot more detail here, but anything I'd write will just be an echo of this IBM ABLE whitepaper by Joseph Bigus, so in this case, I'll gladly defer to this document.

The ABLE RuleSet Editor

ABLE also includes a RuleSet Editor which can be launched from the ABLE Agent Editor, or as a standalone tool. The thing I find most useful about the RuleSet Editor at this time is the ``verify ruleset syntax'' option, which is available through the Ruleset menu, or the magnifying glass icon in the toolbar. It's really, really nice to be able to verify your ruleset syntax before even trying to run your application.

The RuleSet Editor is shown in the following figure.

Again, I'll defer to the IBM whitepaper (and other IBM documents) for a full description of this editor.

Other rules engines

The next big thing I've entirely skimmed over in this paper is the wealth of additional rules engines that are available in the ABLE environment. In this paper I've really only started to introduce the Script and Forward Chaining rules engines, but in addition to all the other power they offer, ABLE also provides several other very important rule engines that I haven't mentioned to this point.

As a quick introduction, the full set of engines is shown in the following table. I've pulled these descriptions directly from the ABLE Rule Language User's Guide and Reference.

Engine Name Purpose
Backward Goal-chaining through if-then rules.
Forward Multi-step chaining over fuzzy if-then rules with linguistic variables and hedges.
PatternMatch Forward chaining with pattern matching.
PatternMatchRete Forward chaining with pattern matching using a Rete network. Data-driven inferencing over when/do rules.
Planning Uses classical planning techniques to find a sequence of actions to move from an initial state to a goal state.
Predicate Goal-chaining with backtracking using predicate rules.
Script Sequentially evaluates a set of rules.

These engines are referred to as ``pluggable'' because arguably you can swap them out without your main application even knowing that anything changed. 

As you'll learn if you continue down this path, an important part of the design process is choosing the right rule engine for your job, so learning the strengths and weaknesses of the ABLE engines is another step on your learning path. The ABLE Rule Language User's Guide and Reference can provide some assistance for you in this area.

ABLE documentation

As I've mentioned, I feel like I struggled to get started with ABLE more than necessary because I couldn't follow IBM's existing documentation. Considering that I've had some prior experience with other rules engines like CLIPS and JESS, that's disappointing.

Putting all my whining aside, in the next table I've listed some of the best ABLE documents I've found. Hopefully this will also help to simplify this process for you.

Name Purpose
ABLE Rule Language and Reference Guide Once you determine how to get ABLE working properly, this can be a good resource for your programming efforts. It includes brief descriptions of each rules engine, and reference material for the rule set scripting language
HTML Documentation The HTML documentation that is included with the ABLE download is both good and bad. This is one area where I really struggled with ABLE. The Javadoc reference material is very useful once you get going.
Examples The way I was finally able to break into ABLE (no pun intended) was by digging through the examples/rules directory. I use these examples to get ideas for my own applications.

Unit testing

Although there is still so much more to learn about the ABLE's capabilities, I think it's also important to stress the value of unit tests and regression tests for expert systems like I've developed so far in these examples.

If you're going to be developing ``expert system'' applications using ABLE, I think it's important that you apply unit tests to your knowledgebase. I've worked on several applications worth millions of dollars, and I can tell you from both positive and negative experiences that if you don't have complete regression tests for your knowledgebase, sooner or later you're going to break some functionality in the knowledgebase. When that happens, there are two major ways of learning about the problem: regression tests, or irate users, customers, or managers. 

Given those choices, I highly recommend the unit and regression test approach. Create yourself a bunch of unit tests using JUnit as you go along, and you'll never regret it. In fact, try a test-first approach to software development, and you'll double your development satisfaction. :)


up previous next
Next: Summary Up: AI Previous: A more complicated example