06 2006 档案
			
				
				
				     摘要: The Law of Demeter和 Principle of Least Knowledge将的都是一回事,是说一个软件实体要尽可能的只与和它最近的实体进行通讯。通常被表述为:talk only to your immediate friends ( 只和离你最近的朋友进行交互)。    
阅读全文
				
				
			 
	
			
				
				
				     摘要:  Rule  结构是最重要的结构。  Rule  使用了形如“  IF  ”  something  “  THEN  ”  action  (当然,我们的关键字是“  when  ”和“  then  ”)的形式。
一个规则在一个 package 中必须要有唯一的名字。如果一个名字中含有空格,那就需要将名字放在双引号中(最好总是使用双引号)。
Attribute 是可选的(最好是每行只有一个 Attribute )。
规则的 LHS 跟在“ when ”关键字的后面(最好是另起一行),同样 RHS 要跟在“ then ”关键字后面(最好也另起一行)。规则以关键字“ end ”结束。规则不能嵌套。   
阅读全文
				
				
			 
	
			
				
				
				     摘要: Drools 3  采用了原生的规则语言,那是一种非  XML  文本格式。在符号方面,这种格式是非常轻量的,并且通过“  expanders  ”支持符合你问题域的  Domain Specific Language  (  DSL  )。这一章把焦点放在了  Drools  原生的规则格式。如果你想从技术上了解规则语言的机制,可以参考“  drl.g  ”源文件,这是用  Antlr3  语法来描述规则语言。如果你使用  Rule Workbench  ,内容助手将会为你完成大量的规则结构,例如输入“  ru  ”,然后按  ctrl  +  space  ,会为你建立规则结构。  
阅读全文
				
				
			 
	
			
	
			
				
				
				     摘要:  WorkingMemory  是运行时规则引擎的主要类。它保持了所有被  asserted  进  WorkingMemory  的数据的引用,直到取消(  retracted  )。  WorkingMemory  是有状态对象。它们的生命周期可长可短。如果从一个短生命周期的角度来同一个引擎进行交互,意味着你可以使用  RuleBase  对象来为每个  session  产生一个新的  WorkingMemory  ,然后在结束  session  后  discard  这个  WorkingMemory  (产生一个  WorkingMemory  是一个廉价的操作)。另一种形式,就是在一个相当长的时间中(例如一个  conversation  ),保持一个  WorkingMemory  ,并且对于新的  facts  保持持续的更新。当你希望  dispose  一个  WorkingMemory  的时候,最好的实践就是调用  dispose()  方法,此时  RuleBase  中对它的引用将会被移除(尽管这是一个弱引用)。不管怎样最后它将会被当成垃圾收集掉。术语   
阅读全文
				
				
			 
	
			
				
				
				     摘要:  Drools  分为两个主要部分:构建(  Authoring  )和运行时(  Runtime  )。
构建的过程涉及到 .drl 或 .xml 规则文件的创建,它们被读入一个解析器,使用 ANTLR 3 语法进行解析。解析器对语法进行正确性的检查,然后产生一种中间结构“ descr ”, descr 用 AST 来描述规则。 AST 然后被传到 PackageBuilder ,由 PackagBuilder 来产生 Packaged 对象。 PackageBuilder 还承担着一些代码产生和编译的工作,这些对于产生 Package 对象都时必需的。 Package 对象是一个可以配置的,可序列化的,由一个或多个规则组成的对象。  
阅读全文
				
				
			 
	
			
				
				
				     摘要: 在JBoss Rules 学习(一):什么是Rule中,我们介绍了JBoss Rules中对Rule的表示,其中提到了JBoss Rule中主要采用的RETE算法来进行规则匹配。下面将详细的介绍一下RETE算法在JBoss Rule中的实现,最后随便提一下JBoss Rules中也可以使用的另一种规则匹配算法Leaps。  
阅读全文
				
				
			 
	
			
				
				
				     摘要:    学习JBoss Rules有几天了,因为这方面的中文资料较少,所以这几天都在看官网上的manual。这是一份不错的教程,我把我看的一些重要的东西翻译整理了一下,希望可以对想学习JBoss Rules的同学们提供一点帮助。
       在开始这份教程之前,我先简要介绍一下JBoss Rules:
       JBoss Rules 的前身是Codehaus的一个开源项目叫Drools。最近被纳入JBoss门下,更名为JBoss Rules,成为了JBoss应用服务器的规则引擎。
       Drools是为Java量身定制的基于Charles  Forgy的RETE算法的规则引擎的实现。具有了OO接口的RETE,使得商业规则有了更自然的表达。
 
       既然JBoss Rules是一个商业规则引擎,那我们就要先知道到底什么是Rules,即规则。在JBoss Rules中,规则是如何被表示的  
阅读全文