`
kgd924
  • 浏览: 43838 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

使用规则引擎(Jess)驱动Javascript实现服务器端编程

阅读更多

这个思路在上周就确定了,但是一直没有空去实现。 直到今天才实现了一个简单的原形。而且还有很多问题没有解决,主要都是对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
2
0
分享到:
评论
1 楼 lcllcl987 2010-01-11  
老兄是鄙人目前看到的最激进的人。

相关推荐

    Jess实现RIF推理

    根据给定的信息,本文将详细解析“Jess实现RIF推理”的相关知识点,包括RIF(Rule Interchange Format)的基本概念、Jess规则引擎的工作原理、RIF到Jess的转换过程及其重要性。 ### RIF(Rule Interchange Format)...

    规则系统JESS 7.1 P2

    JESS作为规则系统,允许开发者编写、组织、测试和执行这些规则,从而实现自动化决策。 **2. JESS的使用手册** JESS的使用手册是学习和操作JESS系统的重要参考资料。它详细介绍了如何安装JESS,创建规则库,编写和...

    Manning - Jess in Action书籍源代码

    5. **事件处理与反应系统**: Jess支持事件驱动的编程模型,源代码可能会包含事件监听器和处理器的实现,展示如何在特定事件发生时自动执行规则。 6. **规则推理**: Jess的推理机制是其核心功能,通过推理,系统...

    《Jess in action》(pdf)

    《Jess in Action》是一本关于使用Jess规则引擎进行规则编程的专业书籍,由Ernest Friedman-Hill撰写,他是Jess的创建者。这本书以PDF格式提供,是Java开发人员深入理解和应用规则基础编程的理想资源。 规则基础...

    基于Java的Jess功能函数扩展方法.pdf

    在本文中,作者陈宏希和邹益民探讨了如何通过Java编程语言扩展Jess规则引擎的功能函数。Jess是“Java Expert System shell”的缩写,它是基于Java平台的规则引擎,专门用于开发专家系统。Jess本身是CLIPS(C语言版本...

    Manning+-+Jess+in+Action

    **Jess** 是一种专门用于开发专家系统的编程语言,它基于 **Java** 平台,利用规则引擎技术来实现复杂问题的解决。本文章将从多个角度对 Jess 的核心特性、应用领域以及其实现机制进行详细阐述。 ##### 一、什么是 ...

    Jess71p2.doc

    ### Jess规则引擎使用文档知识点详解 #### 一、引言 Jess是一款强大的规则引擎,专为Java平台设计。它能够帮助开发者实现复杂决策逻辑的自动化处理。本文档旨在详细介绍Jess规则引擎的各项功能与使用方法。 #### ...

    Jess_in_Action - java 专家系统 jess

    从技术实现角度,Jess不仅提供了规则编程的框架,还允许开发者在Java对象模型中直接操作数据,因此Jess可以非常自然地和Java生态系统中的其他库和工具进行集成。此外,Jess还支持多种高级功能,包括面向对象编程与...

    Jess In Action

    综上所述,《Jess In Action》这本书全面介绍了Jess规则引擎的使用,涵盖了从基本概念到高级应用,如与AJAX、ASP.NET、J2EE、JBPM等技术的集成,还涉及到前端开发、版本控制和嵌入式系统的实践。对于希望提升业务...

    JESS简介与实例教程

    **JESS**(Java Expert System Shell)是一款基于Java平台的规则引擎,它为开发者提供了强大的逻辑编程能力,尤其适用于构建专家系统。作为CLIPS(C Language Integrated Production System)语言的一个超集,JESS...

    jess.jar JESS java规则

    jess.jar jess.jar jess.jarjess.jar jess.jar jess.jar jess.jar jess.jar jess.jar

    Jess安装包,版本2.9.1

    Jess是一款强大的规则引擎,全称为Java Expert System Shell,它允许开发者创建、维护和执行基于规则的知识系统。在IT行业中,规则引擎被广泛应用于业务逻辑处理,特别是在需要进行复杂决策推理的场景下,如金融风险...

    jess运用,语法介绍,环境配置

    Jess 是一款基于 Java 语言的规则引擎,专为实现复杂的决策逻辑和推理功能而设计。它的名称来源于“Java Expert System Shell”。 Jess 7.0p1 版本对 Java 平台的支持广泛,兼容从 JDK 1.4 到最新的 JDK1.5 版本。 ...

    Jess71p1.zip

    Jess是一款强大的、基于Java的规则引擎,专门用于实现复杂的数据处理和决策逻辑。它在信息技术领域,尤其是人工智能(AI)和专家系统中广泛应用。这个压缩包中的主要内容很可能是Jess的安装程序或者库文件,使得用户...

    基于Java的规则引擎--java规则引擎

    - **JESS**:JESS(Java Expert System Shell)是一个基于Lisp的规则引擎,虽然不如前两者流行,但在某些场景下仍被广泛使用。 4. **Java规则引擎API(JSR94)** JSR94是Java平台的标准接口,为规则引擎提供了...

    使用jess和agent来实现隐私保护代码

    例如,当某项操作试图访问或处理敏感信息时, Jess规则可以触发,阻止不合规的行为,从而达到隐私保护的目的。 其次,"普适计算"(Ubiquitous Computing)是一个关键的概念,它意味着计算无处不在,融入日常生活的...

    规则引擎的介绍

    规则引擎的引入旨在解决这一问题,它允许业务人员直接管理规则,而无需编程知识,实现业务规则的灵活调整。 #### 规则引擎的运作机制 规则引擎的工作原理基于一种称为“条件-动作”(If-Then)的逻辑结构,即如果...

    java专家系统jess资源包

    Jess是基于CLIPS(C Language Integrated Production System)的一个开源实现,CLIPS是美国NASA开发的一种流行的事实-规则编程环境。Jess在保留CLIPS核心功能的同时,提供了与Java无缝集成的能力,使得Java开发者...

    基于JESS的BS模式交互式专家系统外壳的设计与实现

    ### 基于JESS的BS模式交互式专家系统外壳的设计与实现 #### 一、引言 随着互联网技术的迅速发展,专家系统的应用范围日益扩大。为了更好地满足实际需求,专家系统的部署方式也在不断进化。传统的命令行界面虽然...

Global site tag (gtag.js) - Google Analytics