原始地址:http://javawei.blog.163.com/
1. 入门
1.1. 需求
Jess 是一个用 java 语言编写的程序库。因此要使用 Jess 你需要 Java 虚拟机( JVM )。你可以从 Sun Microsystems 上免费得到一个非常适合用于 Windows , Linux , Solaris 上的 JVM 。 Jess 7 是兼容所有版本的 Java ,从开始的 JDK 1.4 到现在的最新版本 JDK1.5 。版本更老的编号为 4.x 的 Jess 兼容 JDK 1.0 , 5.x 版本兼容的是 JDK1.1 , Jess 6 工作在 JDK1.2 及以上版本。
在使用 Jess 前请先确认 JVM 是否正确安装并能正常工作。
使用 JessDE 集成开发环境,你需要 Eclipse SDK 的 3.1 版或更新版本,这个可以从 http://www.eclipse.org 获得。安装 JessDE 前请确认 Eclipse 是已经安装并能正常工作。
Jess 类库为另一种语言担任译员,这种语言我在本文档中称为 Jess 语言。 Jess 语言是一种高度专业化的 Lisp 形式语言。
我会认为读者你是将使用这两种或其中一种语言的一个程序员。并且所有的读者都至少有起码 Java 基础。另外你必须有一个 Java 运行系统和知道如何以一个简单的方法使用这个系统。你应该知道如何用它来:
· 运行一个 Java 应用程序
· 处理如 CLASSPATH 变量的配置问题
· 编译 Java 源文件集(可选)
如果你没有对 Java 的环境有基本的熟悉,那么我建议你购买了关于 java 的基础的书籍。对与各种平台的 Java 软件以及丰富的教程和文档可以免费从 http://java.sun.com 上获得。
对于那些将要使用 jess 语言编写程序的读者,我假定你们已经熟悉了一般程序编写的原理。我会说明整个 Jess 语言,所以熟悉 Lisp 是不需要(虽然熟悉是有些用的)。此外,在可能范围内,我将努力说明基于规则系统的最重要的概念,因为它们适用于 Jess 。再次,我将假定读者对这些概念有了一定的熟悉程度和了解更多。如果不熟悉基于规则系统,你也许应当考虑购买一本关于这一主题的书籍。
许多读者都希望提高 Jess 的能力,无论是通过向 Jess 语言加入的命令(用 JAVA 语言写)或以 Java 应用的方式嵌入 Jess 库。另外一些人会想用 Jess 语言的 Java 集成能力来从 Jess 语言程序调用 Java 函数。在本文档专门针对这类读者的一些章节中,我将承担适度 Java 编程的知识。我不会教 Java 语言任何方面的知识,有兴趣的读者可到您当地的书店参阅相关书籍。
这个文档包含了一个目录 , 在很多书上这些主题也都被列举出来。
1.2 .准备
1.2.1 .安装包的组成
Jess 提供一个可用于所有支持平台的单独的 .zip 压缩包。这个单独的文件压缩包包含在 Windows , UNIX ,或 Macintosh 系统上使用 Jess 的所有你需要(除了 JVM 你必须自己安装)的资源。当 Jess 是解压后,你应该有一个命名为 jess71a2 / 的目录。在这个目录路径有下列文件和子目录:
README |
快速开始指导 . |
LICENSE |
关于 Jess 使用的您的权利信息 . |
bin |
一个包含 Windows 批处理文件 (jess.bat) 和一个 UNIX 脚本( Jess )的目录,你可以使用它们启动 Jess 命令提示符 . |
lib |
该目录含有作为一个 Java 档案文件的 Jess 本身。注意,这不是一个 “ 点击 ” 存档文件,你不可以通过双击它运行 Jess 。这是要注意的。在这个目录的 jsr94.jar 包中又包含了符合 JSR - 94 ( javax.rules )的 API 。 |
docs/ |
这是一个文档,以 “index.html” 为首页的 Jess 手册。 . |
examples/jess |
一个包含使用 Jess 语言编写的小程序的目录 . |
examples/xml |
一个包含使用 JessML, Jess's XML 规则语言编写的小程序的目录 . |
eclipse |
JessDE, 是 Jess 集成开发环境 , 提供支持 Eclipse 3.0 的插件集。看这里的 安装说明 。 |
src (Optional) |
如果这个目录存在,它包含全部的 Jess 规则引擎和开发环境的源代码,包括一个构建它的 Ant 脚本。 |
1.2.2 . 命令行界面
Jess 有一个交互的命令行界面。分布包括两个你能运行 Jess 命令提示符的脚本:其中一个用于 Windows ,另一个用于 UNIX 。它们两个都在 bin/ directory 目录下。运行适合你系统的那一个,然后你应该看到以下的界面:
C:\Jess71a2> bin\jess.bat
Jess, the Rule Engine for the Java Platform
Copyright (C) 2006 Sandia Corporation
Jess Version Jess71a2 9/5/2006
Jess>
这就是 Jess 的命令。尝试计算一个前缀数学表达式 " ( + 2 2 ) " 。不要忘记那些括号!
Jess> (+ 2 2)
4
Jess 计算了此函数,并打印结果。在这份文档的下一章,我们会发现 Jess 规则语言本身的语法。
通过 Jess 命令行执行 Jess 代码编写的文件,可以使用批处理命令:
Jess> (batch "examples/jess/sticks.clp")
Who moves first (Computer: c Human: h)?
在前面的例子应注意到,在 Jess> 提示符后键入命令, Jess 将在下一行响应命令。我将在整个这本文档中遵循本约定。
直接从操作系统提示符执行这样的 Jess 程序,你可以把程序的名字作为 Jess 脚本的一个参数,这样就可以启动:
C:\Jess71a2> bin\jess.bat examples\jess\sticks.clp
Jess, the Rule Engine for the Java Platform
Copyright (C) 2006 Sandia Corporation
Jess Version Jess71a2 8/28/2006
Who moves first (Computer: c Human: h)?
jess.console 类是一个简单的 jess 命令行界面的图形版。你在窗口的底部输入一个命令,结果就会出现在滚动窗口之上。试着从 Jess71a2 路径下键入下面命令:
C:\Jess71a2> java -classpath lib\jess.jar jess.Console
1.2.3 .Java 程序设计语言与Jess
要在你的 Java 程序中把 Jess 做为库使用,文件 jess.jar (在 lib 目录下)必须是以一个标准的扩展名安装在类路径之下,或者对你的开发工具配置后能够识别它。做好这些工作的细节是随系统和环境而定的,但在设置一个类路径时通常涉及修改环境变量,并且安装一个标准的扩展名,简单来说就是复制 jess.jar 到你的 $(JAVA_HOME)/jre/lib/ext 路径下。可查阅 Java 文档或介绍 Java 的文本以了解更多的细节。
1.2.4 .Jess 例子程序
有一些简单的例子程序(在 examples/jess 和 examples/xml 目录下),您可以用这些程序测试你的 Jess 是否已经安装正确。这些程序包括 fullmab.clp , zebra.clp 和 wordgame.clp 。 fullmab.clp 是关于猴子与香蕉问题的经典版本。要从命令行运行它,只需要输入:
C:\Jess71a2> bin\jess examples\jess\fullmab.clp
和要运行的问题,就会在屏幕上输出结果。任何 Jess 代码的文件都可以以这种方式运行。像使用批处理函数一样在命令行给一个 Jess 文件名就可以运行了。因此,一般你只需要保证文件是以:
Jess> (reset)
(run)
结束或根本没有规则将运行。 zebra.clp 和 wordgame.clp 程序是两个典型的例子,它们是用来展示 Jess 如何处理复杂情况的程序。这些例子都产生大量的局部模式匹配,因此它们运行非常慢而且使用了大量的内存。另外的例子包括 sticks.clp (互动游戏)和 frame.clp (一个使用 jess 的 java 集成能力建立图形界面的演示)。
XML 的例子在单独的子目录下,每个子目录中都包含有运行例子说明的自述文件。
2.Jess 开发环境
Jess 7 包括一个基于 Eclipse 的开发环境。这个开发环境有一个编辑器,一个调试器和一个 Rete 网络视图。在将来发布的版本中将包含更多组件(规则浏览器和其它工具)。
2.1. 安装JessDE
Jess 开发环境( JessDE )是作为一个插件集支持流行的开源的集成开发环境 Eclipse ;该插件支持 Eclipse 3.1 及其更新版本。应该注意的是 JessDE 仅仅工作在完全的 " Eclipse SDK " 上——较小的 " 二进制运行平台 " 是不能运行的。
安装 JessDE ,首先要退出 Eclipse ,然后从 Jess71a2/eclipse 解压缩所有文件到顶层的 Eclipse 的安装路径。确认在你的 eclipse 安装目录有一个名为 " plugins/gov.sandia.jess_7.0.0 " 的目录存在,然后重新启动 Eclipse 。
注意!如果你只是从以前的版本的 JessDE 更新,你必须在 Eclipse 的命令行使用 "-clean " 命令开关,强制更新缓存中有关 JessDE 插件的信息。如果你不这样做,很多的 JessDE 的选项可能被禁用,安装后你只需要这样做一次。
2.1.1 . 验证你的安装
在“ Help ”菜单下选择“ about Eclipse SDK ”。在 " about Eclipse SDK " 主窗口有一个有 Jess 标志的按钮。单击“ Plug-in Details ”,如果 JessDE 已安装妥当,你将发现三个或四个 Jess 相关插件在列表上——在我的 Eclipse 中,它们出现在底部。
然后使用“ New Project ”向导建立一个 Java 工程。在新的工程中创建一个新文件并命名为“ hello.clp ”。这个文件会在一个 Jess 的编辑器中打开,这个编辑器有一个带红色“ J ”字的银色小球的图标。输入一些 Jess 代码,如下:
(printout t "Hello, World" crlf)
你应该看到合适的语法被高亮显示。如果看到,祝贺你!工作一切正常!阅读更多 JessDE 其他功能的信息。
2.1.2 . 更多的细节
JessDE 编辑器在你的 Jess 文件中能够标示出语法错误和警告。你很可能希望这些标记能出现在 Eclipse 的“ Problems ”视图中,尽管在默认情况下它们可能没有显示出来。安装完成 JessDE 后,重新启动 Eclipse ,在 Problems 的视图,在标题栏点击“ Filters ”的图标,然后选择标着 " Jess Problem " (如果没有被选中的话)多选项。你的 Problems 视图应该马上就会显示 Jess 错误和警告。
要使用 Rete 网络视图,你需要安装 Eclipse 图形编辑框架( GEF )。你可以从 Eclipse 工程项目页面得到 GEF ,或通过 Eclipse 的内置式更新管理器安装它。然后打开这一视图,在“ Jess Debugger ”组之下 Eclipse 的“ Show view ”对话框找到它。那么在 Jess 编辑窗口中当光标停在某一内部规则时, Rete 网络视图将会为这项规则显示出编译的网络。
2.2. 使用JessDE
2.2.1 .Jess 语言编辑器