- 浏览: 562545 次
- 性别:
- 来自: 安徽
-
文章分类
最新评论
-
baynjh:
jp.ne.so_net.ga2.no_ji.jcom.JCo ...
java应用jcom将word转pdf -
zgw06629:
你好,请问你都做了哪些修改呢?是在客户端还是服务端?
http上传文件深度解析-高性能http传输 -
eidolon:
翻译有误。 l ?:意思是操作符左边的符号( ...
BNF 和EBNF的含义与用法(感谢译者:Sunnybill) -
huoyj:
请教一个问题,是不是HTTP请求里面没有包含上传文件在客户端的 ...
http上传文件深度解析-高性能http传输 -
a49688448:
“认清” 我还以为google怎么你了
最近终于认清了google
Java规则引擎工作原理及其应用
摘 要
Java规则引擎是一种嵌入在Java程序中的组件,它的任务是把当前提交给引擎的Java数据对象与加载在引擎中的业务规则进行测试和比对,激活那些符合当前数据状态下的业务规则,根据业务规则中声明的执行逻辑,触发应用程序中对应的操作。
引言 目前,Java社区推动并发展了一种引人注目的新技术——Java规则引擎(Rule Engine)。利用它就可以在应用系统中分离商业决策者的商业决策逻辑和应用开发者的技术决策,并把这些商业决策放在中心数据库或其他统一的地方,让它们能在运行时可以动态地管理和修改,从而为企业保持灵活性和竞争力提供有效的技术支持。 规则引擎的原理 1、基于规则的专家系统(RBES)简介 Java规则引擎起源于基于规则的专家系统,而基于规则的专家系统又是专家系统的其中一个分支。专家系统属于人工智能的范畴,它模仿人类的推理方式,使用试探性的方法进行推理,并使用人类能理解的术语解释和证明它的推理结论。为了更深入地了解Java规则引擎,下面简要地介绍基于规则的专家系统。RBES包括三部分:Rule Base(knowledge base)、Working Memory(fact base)和Inference Engine。它们的结构如下系统所示:
如图1所示,推理引擎包括三部分:模式匹配器(Pattern Matcher)、议程(Agenda)和执行引擎(Execution Engine)。推理引擎通过决定哪些规则满足事实或目标,并授予规则优先级,满足事实或目标的规则被加入议程。模式匹配器决定选择执行哪个规则,何时执行规则;议程管理模式匹配器挑选出来的规则的执行次序;执行引擎负责执行规则和其他动作。 和人类的思维相对应,推理引擎存在两者推理方式:演绎法(Forward-Chaining)和归纳法(Backward-Chaining)。演绎法从一个初始的事实出发,不断地应用规则得出结论(或执行指定的动作)。而归纳法则是根据假设,不断地寻找符合假设的事实。Rete算法是目前效率最高的一个Forward-Chaining推理算法,许多Java规则引擎都是基于Rete算法来进行推理计算的。 推理引擎的推理步骤如下: (1)将初始数据(fact)输入Working Memory。 (2)使用Pattern Matcher比较规则库(rule base)中的规则(rule)和数据(fact)。 (3)如果执行规则存在冲突(conflict),即同时激活了多个规则,将冲突的规则放入冲突集合。 (4)解决冲突,将激活的规则按顺序放入Agenda。 (5)使用执行引擎执行Agenda中的规则。重复步骤2至5,直到执行完毕所有Agenda中的规则。 上述即是规则引擎的原始架构,Java规则引擎就是从这一原始架构演变而来的。 2、规则引擎相关构件 规则引擎是一种根据规则中包含的指定过滤条件,判断其能否匹配运行时刻的实时条件来执行规则中所规定的动作的引擎。与规则引擎相关的有四个基本概念,为更好地理解规则引擎的工作原理,下面将对这些概念进行逐一介绍。 1)信息元(Information Unit) 信息元是规则引擎的基本建筑块,它是一个包含了特定事件的所有信息的对象。这些信息包括:消息、产生事件的应用程序标识、事件产生事件、信息元类型、相关规则集、通用方法、通用属性以及一些系统相关信息等等。 2)信息服务(Information Services) 信息服务产生信息元对象。每个信息服务产生它自己类型相对应的信息元对象。即特定信息服务根据信息元所产生每个信息元对象有相同的格式,但可以有不同的属性和规则集。需要注意的是,在一台机器上可以运行许多不同的信息服务,还可以运行同一信息服务的不同实例。但无论如何,每个信息服务只产生它自己类型相对应的信息元。 3)规则集(Rule Set) 顾名思义,规则集就是许多规则的集合。每条规则包含一个条件过滤器和多个动作。一个条件过滤器可以包含多个过滤条件。条件过滤器是多个布尔表达式的组合,其组合结果仍然是一个布尔类型的。在程序运行时,动作将会在条件过滤器值为真的情况下执行。除了一般的执行动作,还有三类比较特别的动作,它们分别是:放弃动作(Discard Action)、包含动作(Include Action)和使信息元对象内容持久化的动作。前两种动作类型的区别将在2.3规则引擎工作机制小节介绍。 4)队列管理器(Queue Manager) 队列管理器用来管理来自不同信息服务的信息元对象的队列。 下面将研究规则引擎的这些相关构件是如何协同工作的。 如图2所示,处理过程分为四个阶段进行:信息服务接受事件并将其转化为信息元,然后这些信息元被传给队列管理器,最后规则引擎接收这些信息元并应用它们自身携带的规则加以执行,直到队列管理器中不再有信息元。
3、规则引擎的工作机制
下面专门研究规则引擎的内部处理过程。如图3所示,规则引擎从队列管理器中依次接收信息元,然后依规则的定义顺序检查信息元所带规则集中的规则。如图所示,规则引擎检查第一个规则并对其条件过滤器求值,如果值为假,所有与此规则相关的动作皆被忽略并继续执行下一条规则。如果第二条规则的过滤器值为真,所有与此规则相关的动作皆依定义顺序执行,执行完毕继续下一条规则。该信息元中的所有规则执行完毕后,信息元将被销毁,然后从队列管理器接收下一个信息元。在这个过程中并未考虑两个特殊动作:放弃动作(Discard Action)和包含动作(Include Action)。放弃动作如果被执行,将会跳过其所在信息元中接下来的所有规则,并销毁所在信息元,规则引擎继续接收队列管理器中的下一个信息元。包含动作其实就是动作中包含其它现存规则集的动作。包含动作如果被执行,规则引擎将暂停并进入被包含的规则集,执行完毕后,规则引擎还会返回原来暂停的地方继续执行。这一过程将递归进行。
Java规则引擎的工作机制与上述规则引擎机制十分类似,只不过对上述概念进行了重新包装组合。Java规则引擎对提交给引擎的Java数据对象进行检索,根据这些对象的当前属性值和它们之间的关系,从加载到引擎的规则集中发现符合条件的规则,创建这些规则的执行实例。这些实例将在引擎接到执行指令时、依照某种优先序依次执行。一般来讲,Java规则引擎内部由下面几个部分构成:工作内存(Working Memory)即工作区,用于存放被引擎引用的数据对象集合;规则执行队列,用于存放被激活的规则执行实例;静态规则区,用于存放所有被加载的业务规则,这些规则将按照某种数据结构组织,当工作区中的数据发生改变后,引擎需要迅速根据工作区中的对象现状,调整规则执行队列中的规则执行实例。Java规则引擎的结构示意图如图4所示。
Java规则引擎API——JSR-94 |
发表评论
-
java获取项目路径
2010-12-16 13:40 1243在jsp和class文件中调用的相对路径不同。 在jsp里,根 ... -
CSS控制DIV圆角
2010-12-09 15:51 1933<!DOCTYPE HTML PUBLIC " ... -
强大的web打印功能
2010-08-24 11:17 11611.<html> 2.<head> ... -
一个java写的托盘练习
2010-08-14 15:48 1023package minsize;import javax.sw ... -
Java的SystemTray类的使用方法
2010-08-14 15:38 3372Java的SystemTray类的使用方法 JDK1.6版增 ... -
Hibernate中发生"Session is closed" 的另一种可能!
2010-07-17 23:39 1763Hibernate中发生"Session ... -
求园柱体的表面积和体积
2010-06-13 11:50 32851.先创建一个Point类,然后定义Trianglele类。在 ... -
写一个Point类,计算两个Point实例之间的距离;写一个判断点是否在圆内的方法。
2010-06-13 11:47 8028写一个Point类,计算 ... -
打印分页代码
2009-10-27 15:27 1287<!-- define some variables u ... -
非常好的打印预览代码
2009-10-27 15:24 1973<!DOCTYPE html PUBLIC &quo ... -
http上传文件深度解析-高性能http传输
2009-10-24 16:59 11391http上传文件深度解析-高性能http传输 2008-12 ... -
用java获得MAC地址
2009-10-14 15:55 2820package com.etong.bms; impor ... -
使用java2word向已经建好的表格里插入数据
2009-05-18 13:41 2799上一篇讲如何NEW一个已经填充好数据的表格出来,这篇我介绍 ... -
使用java2word向word文档里插入文本、表格、图片
2009-05-18 13:41 5951import java.util.ArrayList; ... -
JSP request对象属性列表
2009-05-15 15:05 3041<% out.println("Protoc ... -
LDAP 集成应用实例
2009-05-15 13:58 9352我们部门有一个系统是专门用来记录大家的请假和加班的.这个系统有 ... -
IBM Portal与单点登录、集成企业级应用
2009-05-15 11:19 3528IBM Portal与单点登录、集 ... -
WAP 服务器设置
2009-04-11 15:53 1760WAP 服务器设置 二十一世纪是信息的世纪,以IP技 ... -
本地图片预览
2009-04-01 17:11 1207<?xml version="1.0" ... -
图片预装载技术
2009-04-01 17:08 1252<html> <body> < ...
相关推荐
文档"Java规则引擎工作原理及其应用.docx"可能详细阐述了以下几点: 1. 规则引擎概述:首先,文档可能会介绍规则引擎的基本概念,包括它的起源、目标以及如何在业务系统中发挥作用。它可能还会对比传统的硬编码业务...
### Java规则引擎工作原理及其应用 #### 摘要 Java规则引擎作为一种强大的技术工具,被广泛应用于现代软件开发之中,特别是在需要灵活处理业务逻辑的场景下。它能够有效地将业务决策逻辑与程序代码分离,使得业务...
### Java规则引擎的工作原理及其实际应用 #### 规则引擎技术概述 规则引擎技术作为一种灵活且高效的业务逻辑管理工具,在现代软件开发中扮演着至关重要的角色。尤其在Java社区,规则引擎的应用越来越广泛,它不仅...
本文档将详细介绍Java规则引擎及其在J2EE平台上的应用。 #### 二、规则引擎概述 ##### 1. 什么是规则引擎? 规则引擎是一种能够解释并执行规则的软件组件。这些规则通常以“如果…则…”的形式表达,用来控制程序的...
规则引擎技术是一项很有吸引力的技术....然后重点介绍了Java规则引擎技术的规范和一个采用XML和java语言实现的规则引擎--Drools.最后给出了利用Drools解决实际问题的范例并探讨了该技术的不足和发展前景
“Java规则引擎工作原理及其应用(摘)_我从故乡来.mht”可能解释了Java规则引擎的工作原理,包括规则的存储、匹配、执行流程,以及它们在实际项目中的具体应用案例。 “引擎优化(SEO)十八大规则_魔力空间.mht”虽然...
在IT领域,搜索引擎是至关重要的技术之一,它用于在海量数据中快速找到相关信息。本项目“基于Java的搜索...通过学习和实践这个项目,开发者可以深入了解搜索引擎的工作原理,并掌握在Java环境下实现这些功能的技能。
搜索引擎是互联网信息时代的重要工具,它能够帮助用户快速、准确地找到所需的信息。...这个主题涵盖了从基本的索引构建到复杂的查询优化等多个方面,对于理解搜索引擎的工作原理以及JAVA编程实践都具有很高的价值。
在这个v0.94版本中,我们可以看到它已经具备了一定的功能和稳定性,对于理解和掌握工作流引擎的原理及其应用非常有价值。以下是关于JWFD工作流引擎的一些关键知识点: 1. **工作流概念**:工作流是一系列相互关联的...
总之,这个基于Drools的规则引擎实例为你提供了一个动手实践的机会,通过运行和修改代码,你可以深入理解Drools的工作原理及其在实际项目中的应用。同时,结合Eclipse的开发环境,能更便捷地调试和优化规则,提升...
Jess是一种开源的Java规则引擎,用于实现基于规则的专家系统。它支持复杂的规则定义、事实库管理和高效的推理机制。Jess规则引擎的核心功能包括: - **规则定义**:允许用户定义复杂的规则集,这些规则可以包含条件...
其次,针对Java基础知识,书中涵盖了集合框架,如ArrayList、HashMap等容器的实现和使用,异常处理的规则和最佳实践,反射机制的应用,注解的使用,内部类的特性,泛型的概念及其限制,以及对象序列化的原理和方法。...
通过使用如Conway's Game of Life这样的示例,开发者能够深入理解规则引擎的工作原理及其在实际场景中的应用。此外,构建工具如Maven和Ant对于确保项目依赖关系的正确管理和构建过程的自动化至关重要。
下面将详细阐述Java在游戏开发中的应用及其相关知识点。 1. **Java语言基础**:Java是一种跨平台的面向对象编程语言,其特性包括垃圾回收、自动内存管理、异常处理和丰富的类库,这些都使得Java成为游戏开发的理想...
在IT行业中,Web原理及其应用是开发者们必备的基础知识,特别是在构建个人微博应用这样的社交网络平台时。这个项目包括了会员管理模块、个人中心以及消息发布管理等关键组件,这些都是构成一个完整Web应用的核心部分...