这个思路在上周就确定了,但是一直没有空去实现。 直到今天才实现了一个简单的原形。而且还有很多问题没有解决,主要都是对JESS不熟悉。
主要的思路就是,在servlet收到请求后,将Servlet, Request, Response, Session几个对象封装成Java Bean添加Jess引擎作为Fact。 根据定义好的规则,调用相应的服务器端javascript完成服务端的处理。 和一般的Web框架相比, 一个Url可以触发多个规则, 当处理的流程和业务变化时,修改规则比修改代码更简单(其实不一定)。
Servlet的代码:
protected void doPost(final HttpServletRequest req,
final HttpServletResponse resp) throws ServletException, IOException{
try {
if(reload) urlEngine.reload();
urlEngine.driveRuleEngine(this, req, resp);
}catch (Exception e1) {
throw new ServletException(e1.getMessage(), e1.getCause());
}
}
DriveRuleEngine的代码:
@SuppressWarnings("unchecked")
public void driveRuleEngine(HttpServlet s,
HttpServletRequest req,
HttpServletResponse resp)
throws JessException, IOException, JavaScriptException{
//恢复引擎到初始状态
engine.resetToMark(marker);
//传递封装后的Request对象
Request r = new Request(req);
engine.add(r);
//初始化javascript 运行环境。
jsEngine.startService(s, req, resp);
jsEngine.service(s, req, resp);
//运行规则
engine.run();
jsEngine.endService();
}
一个简单的规则描述:
(defrule index_urls
"define a rule for mapping to index_fn"
?r <- (Request) ;任意一个request到达
=>
(index) ;任意一个request到执行的方法
)
(deffunction index()
(?js exec "index_fn()") ;调用一个javascript 方法
)
javascript的内容:
var exports = ['index_fn']
function index_fn(){
//define the response contentType;
web.contentType('text/plain');
print('javascript web application environment\n');
print('-----------------------------------------\n');
//输出当前javascript环境支持的方法名和方法体的内容.
each(this, function(e, k){
print(k + "===>" + e + "\n")
});
print('-----------------------------------------\n');
}
这只是一个简单的原形, War包下载的地址: http://js-web.googlecode.com/files/WebRoot.zip. 项目主要是学习Jess和Javascript. 所以不确定这个方式有什么适用性. 本人也不做web开发的项目,只是爱好而已.
- 描述: 例子输出的结果screen
- 大小: 88.9 KB
分享到:
相关推荐
根据给定的信息,本文将详细解析“Jess实现RIF推理”的相关知识点,包括RIF(Rule Interchange Format)的基本概念、Jess规则引擎的工作原理、RIF到Jess的转换过程及其重要性。 ### RIF(Rule Interchange Format)...
JESS作为规则系统,允许开发者编写、组织、测试和执行这些规则,从而实现自动化决策。 **2. JESS的使用手册** JESS的使用手册是学习和操作JESS系统的重要参考资料。它详细介绍了如何安装JESS,创建规则库,编写和...
5. **事件处理与反应系统**: Jess支持事件驱动的编程模型,源代码可能会包含事件监听器和处理器的实现,展示如何在特定事件发生时自动执行规则。 6. **规则推理**: Jess的推理机制是其核心功能,通过推理,系统...
《Jess in Action》是一本关于使用Jess规则引擎进行规则编程的专业书籍,由Ernest Friedman-Hill撰写,他是Jess的创建者。这本书以PDF格式提供,是Java开发人员深入理解和应用规则基础编程的理想资源。 规则基础...
在本文中,作者陈宏希和邹益民探讨了如何通过Java编程语言扩展Jess规则引擎的功能函数。Jess是“Java Expert System shell”的缩写,它是基于Java平台的规则引擎,专门用于开发专家系统。Jess本身是CLIPS(C语言版本...
**Jess** 是一种专门用于开发专家系统的编程语言,它基于 **Java** 平台,利用规则引擎技术来实现复杂问题的解决。本文章将从多个角度对 Jess 的核心特性、应用领域以及其实现机制进行详细阐述。 ##### 一、什么是 ...
### Jess规则引擎使用文档知识点详解 #### 一、引言 Jess是一款强大的规则引擎,专为Java平台设计。它能够帮助开发者实现复杂决策逻辑的自动化处理。本文档旨在详细介绍Jess规则引擎的各项功能与使用方法。 #### ...
从技术实现角度,Jess不仅提供了规则编程的框架,还允许开发者在Java对象模型中直接操作数据,因此Jess可以非常自然地和Java生态系统中的其他库和工具进行集成。此外,Jess还支持多种高级功能,包括面向对象编程与...
综上所述,《Jess In Action》这本书全面介绍了Jess规则引擎的使用,涵盖了从基本概念到高级应用,如与AJAX、ASP.NET、J2EE、JBPM等技术的集成,还涉及到前端开发、版本控制和嵌入式系统的实践。对于希望提升业务...
**JESS**(Java Expert System Shell)是一款基于Java平台的规则引擎,它为开发者提供了强大的逻辑编程能力,尤其适用于构建专家系统。作为CLIPS(C Language Integrated Production System)语言的一个超集,JESS...
jess.jar jess.jar jess.jarjess.jar jess.jar jess.jar jess.jar jess.jar jess.jar
Jess是一款强大的规则引擎,全称为Java Expert System Shell,它允许开发者创建、维护和执行基于规则的知识系统。在IT行业中,规则引擎被广泛应用于业务逻辑处理,特别是在需要进行复杂决策推理的场景下,如金融风险...
Jess 是一款基于 Java 语言的规则引擎,专为实现复杂的决策逻辑和推理功能而设计。它的名称来源于“Java Expert System Shell”。 Jess 7.0p1 版本对 Java 平台的支持广泛,兼容从 JDK 1.4 到最新的 JDK1.5 版本。 ...
Jess是一款强大的、基于Java的规则引擎,专门用于实现复杂的数据处理和决策逻辑。它在信息技术领域,尤其是人工智能(AI)和专家系统中广泛应用。这个压缩包中的主要内容很可能是Jess的安装程序或者库文件,使得用户...
- **JESS**:JESS(Java Expert System Shell)是一个基于Lisp的规则引擎,虽然不如前两者流行,但在某些场景下仍被广泛使用。 4. **Java规则引擎API(JSR94)** JSR94是Java平台的标准接口,为规则引擎提供了...
例如,当某项操作试图访问或处理敏感信息时, Jess规则可以触发,阻止不合规的行为,从而达到隐私保护的目的。 其次,"普适计算"(Ubiquitous Computing)是一个关键的概念,它意味着计算无处不在,融入日常生活的...
规则引擎的引入旨在解决这一问题,它允许业务人员直接管理规则,而无需编程知识,实现业务规则的灵活调整。 #### 规则引擎的运作机制 规则引擎的工作原理基于一种称为“条件-动作”(If-Then)的逻辑结构,即如果...
Jess是基于CLIPS(C Language Integrated Production System)的一个开源实现,CLIPS是美国NASA开发的一种流行的事实-规则编程环境。Jess在保留CLIPS核心功能的同时,提供了与Java无缝集成的能力,使得Java开发者...
### 基于JESS的BS模式交互式专家系统外壳的设计与实现 #### 一、引言 随着互联网技术的迅速发展,专家系统的应用范围日益扩大。为了更好地满足实际需求,专家系统的部署方式也在不断进化。传统的命令行界面虽然...