Drools规则引擎应用分析
- 格式:pdf
- 大小:109.38 KB
- 文档页数:2
2007年第10期福建电脑Drools规则引擎应用分析张宇,陈德礼(莆田学院福建莆田351100)【摘要】:本文分析了JAVA规则引擎Drools在软件设计过程中的使用方法,Drools是基于JSR94标准和Rete算法的开源框架,目前为JBoss组织所拥有,最新为4.0版本。
并结合JAVA推理规则应用和软件专家系统的设计,提出了一个合理的应用框架和设计方法。
【关键字】:Drools;规则引擎;软件设计;专家系统0.引言Drools规则引擎其核心是一种执行推理规则的机制,推理规则是简单因果关系声明,通常从非常简单的if-then条件格式中解析而来。
Drools(或者称为JBossRules)是一个易于访问推理策略、易于调整以及易于扩展的开源规则引擎,符合JSR94标准,速度快,效率高。
在软件需要推理规则或者业务需求的时候,可以用来构造复杂的软件系统。
1.软件设计问题分析1.1软件专家系统专家系统是人工智能的一个分支,主要目的是要使计算机在各个领域中起人类专家的作用。
它是一种智能程序子统,内部具有大量专家水平的领域知识和经验,能利用仅类专家可用的知识和解决问题的方法来解决该领域的问题。
它是一种计算机程序,可以用专家的水平完成一般的、模仿人类的解题策略,并与这个问题所有的大量实际知识和经验知识结合起来。
一般专家系统有三个特点,即:启发性,能运用专家的知识和经验进行推理和判断;透明性,能解决本身的推理过程,能回答用户提出的问题;灵活性,能不断地增长知识,修改原有的知识。
其中重要的推理部分需要一玉可扩展的程序框架来支撑,这样就可以利用JAVA规则引擎来实现。
1.2Drools规则引擎现举业界经典的例子来说明一条推理规则,对一个假定的保险业规则可能是:如果:指定汽车和驾驶员满足以下条件:・汽车是红色的・汽车是运动型的・驾驶员是男性・驾驶员在16-25岁之间那么:结果是保险费用增加20%这条规则是对商业知识的抽象。
一条规则有一个LeftHandSide(LHS)和一个RightHandSid(RHS)。
规则的LHS由一个或多个条件(Conditions)组成。
当所有的条件都满足并为真时,RHS执行。
RHS被称为结果(Consequence)。
LHS和RHS的标准定义为:rule"<name>"<attribute><value>when<LHS>then<RHS>规则可以通过package关键字同一个命名空间(Names-pace)相关联;其他的规则引擎可能称此为规则集(RuleSet)。
一个Ppackage声明了Imports,Global变量,Functions和Rules。
2.应用Drools实现2.1确定规则语言Drools采用了原生的规则语言,那是一种非XML文本格式。
在符号方面,这种格式是非常轻量的,并且通过"expanders"支持符合你问题域的DomainSpecificLanguage(DSL)。
这一章把焦点放在了Drools原生的规则格式。
如果你想从技术上了解规则语言的机制,可以参考Antlr3语法来描述规则语言。
如果你使用RuleWorkbench,内容助手将会为你完成大量的规则结构,会为你建立规则结构。
规则文件:一个规则文件通常是一个以.drl扩展名结尾的文件。
在一个drl文件中,你可以有多条rules,functions等等。
尽管如此,你也可以将你的规则分布在多个文件中,这有利于管理大量的规则。
一个DRL文件是一个简单的文本文件。
2.2推理框架设计基于Drools规则引擎的软件专家系统是一个具有智能特点的计算机程序,它的智能化主要表现为能够在特定的领域内模仿人类专家思维来求解复杂问题。
因此,专家系统必须包含领域专家的大量知识,拥有类似人类专家思维的推理能力,并能用这些知识来解决实际问题。
例如,一个医学专家系统就能够像真正的专家一样,诊断病人的疾病,判别出病情的严重性,并给出相应的处方和治疗建议等。
目前,专家系统的应用几乎渗透到各行各业。
下面介绍基于Drools规则引擎的软件专家系统,包括三部分:规则库Rules、匹配引擎InferenceEgine和事实工作空间WorkingMemory。
如图1所示。
图1Drools规则引擎软件结构其中的匹配引擎包括三部分:模式匹配器(PatternMatch-er)、议程(Agenda)和执行引擎(ExecutionEngine)。
推理引擎通过决定哪些规则满足事实或目标,并授予规则优先级,满足事实或目标的规则被加入议程。
模式匹配器决定选择执行哪个规则,何时执行规则,议程管理模式匹配器挑选出来的规则的执行次序,执行引擎负责执行规则和其他动作。
对新的数据和被修改的数据进行规则的匹配称为模式匹配(PatternMatching)。
进行匹配的引擎称为推理机(InferenceEngine)。
被访问的规则称为ProductionMemory,被推理机进行匹配的数据称为WorkingMem-ory。
Agenda管理被匹配规则的执行。
推理机所采用的模式匹配算法有下列几种:Linear,RETE,Treat,Leaps。
Drools采用了RETE和Leaps的实现。
Drools的RETE实现被称为ReteOO,表示Drools对Rete算法进行了加强和优化的实现。
项目资助:国家自然科学基金(70471064)112007年第10期福建电脑区别显示,图层工具则将该结点所指代图层以满屏方式展示。
如图3所示,为功能4和功能5的交互效果展示,该界面不仅有空间图层和平行坐标法展示,而且也调用了HyperbolicTree表达法,是一种融合多种交互功能的典型界面。
综上,本文实现的交互体现在两个方面:首先是人机交互:建立可视化系统与用户之间的联系,便于用户操作和使用系统功能,类似于操作界面对话框,本文中的可视化工具都具有一定的人机交互功能,每一种工具都可以通过用户界面输入视图参数,随时改变视图效果。
其次是可视化模型或可视化工具之间的交互:是可视化技术中深一层次的交互,它可允许用户使用两种以上的可视化工具对数据进行深入了解,在不同情况下调用不同的可视化工具,或者是在两种可视化效果之间进行对比、分析、取舍,使各种工具充分发挥应有的优势。
5.结论与展望可视化工具的交互功能使多维可视化工具以及空间图层可视化工具更好地融合起来,方便用户对空间数据的理解和分析。
本文设计并实现了多种可视化工具的交互功能,扬长避短地发挥出各个工具的优势,使分析过程满足个性化设置的要求,用户根据自身需求选择参与分析的可视化工具。
并且将人的主观分析能力和先进的计算机技术相结合,在不断的交互过程中,充分摄取了二者所长,既利用了计算机处理数据的快捷,也使专家发挥了数据分析的经验。
今后的工作是完善图层编辑功能和数据处理功能,使该系统可以应对当前各主流数据库,并利用ARCSDE的强大功能,实现图层管理和属性数据管理的无缝化。
参考文献:1.MariaCristinaFerreiraDeOliveira,HaimLevkowitz..2003.FromVisu-alDataExplorationtoVisualDataMining:ASurvey.IEEETransactionsOnVisualizationandComputerGraphics.July-September9(3):378-3942.MatthiasKreuseler,HeirunSchumann.2002.AFlexibleApproachforVisaulDataMining.IEEETransactionsOnVisualizationAndComputerGraphics.Jan-Mar.8(1):39-513.JohnLamping,RamanaRao,andPeterPirolli.1995.Focus+contexttechniquebasedonhyperbolicgeometryforvisualizinglargehierarchies4.AntonyUnwin,ChrisVolinsky,SylviaWinkler.2003.ParallelCoordi-natesForExploratoryModellingAnalysis.ComputationalStatistics&DataAnalysis43(2003):553-5645.DanielAKeim.VisualTechniquesforExploringDatabase.InstituteforComputerScienceUniversityOfHalle-Wittenberg6.XiangFang,JohnA.Miller,JonathanArnold.J3DV:AJava-Based3DDatabaseVisualizationTool7.A.May,A.Savinov.2002.AnIntegratedPlatformforSpatialDataMiningAndInteractiveVisualAnalysis.ProceedingsDataMining.3rdInternationalConferenceonDataMiningMethodsandDatabasesforEngineering,Fi-nanceandOtherFields,25-278.贾泽露,刘耀林,张彤.2004.可视化交互空间数据挖掘技术的探讨.测绘科学.29(5)9.王英杰,余卓渊,苏莹,陈小钢,陈毓芬.2005.自适应空间信息可视化研究的主要框架和进展.测绘科学.30(4)10.刘纪平,常燕卿,李青元.2002.空间信息可视化的现状与趋势.测绘学院学报.19(3)2.3激发规则当Facts被assert进入WorkingMemory中后,规则引擎找到匹配的ObjectTypeNode,然后将此Fact传播到下一个节点。
ObjectTypeNode拥有一块内存来保存所有匹配的facts。
在我们的例子中,下一个节点是一个域约束(FieldConstraint),type=="cheddar"。
如果某个Cheese对象的类型不是"cheddar",这个fact将不会被传播到网络的下一个节点。
如果是"cheddar"类型,它将被记录到AlphaNode的内存中,并传播到网络的下一个节点。
AlphaNode是古典RETE术语,它是一个单输入单输出的节点。
最后通过AlphaNode的fact被传播到TerminalNode。
TerminalNode是最终节点,到此我们说这条规则被完全匹配,并准备激发。
当一条规则被完全匹配,它并没有立刻被激发在RETE中是这样,但在Leaps中它会立刻被激发。