规则引擎项目-系统需求说明书.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
规则引擎项目-系统需求说明书

规则引擎 规则引擎项目 系统需求说明书 需求描述 功能描述 以下功能描述包括规则引擎作为一个完整的产品所涉及的所有功能。 面向开发人员的语言体系 开发人员可以运用类似于自然语言的方式进行规则的描述,具体语法可以参考《Drl语法手册》。 运用接近自然语言的方式来编写规则,这让非技术人员与领域专家可以用他们自己的逻辑来理解规则,使得规则更容易阅读。而DRL就是一种类似于自然语言的规则描述语言。 规则文件通常是以drl扩展名结尾。在一个drl文件中可以包含多个规则,函数等等。但是你也可以将规则分开到多个规则文件中(在这种情况下建议采用.rule扩展名,但不是必需的),分散规则利于管理巨量规则的情况。DRL是简单的text文件格式。 规则文件的完整结构是: package package-name——文件包名字 imports——声明任何要用在规则中的对象 globals——规则要用到的全局变量 functions——自定义的,有可能被规则重复使用的函数 rules——规则部分 这些元素的声明顺序不重要,处理package的名称如果声明的话必须是规则文件的第一个元素。所有的元素都是可选的。 规则是由一阶逻辑或断言逻辑编写而成,是由命题逻辑扩展而来。一条规则是一个二元结构,如下: rule?name ????attributes ????when ????????LHS ????then ????????RHS end 规则的结构是非常简单的,许多符号都是不需要的,甚至“name”两边的引号也是可选的。ATTRIBUTES(通常是可选项)指出规则的行为表现。LHS是规则的条件部分, RHS是将要执行 的动作块。仅有的特别的关键字是为了设置,删除和修改facts所用。任何在LHS中绑定的变量可以在RHS中使用。执行规则时,将事实、数据与规则的条件部分LHS进行匹配,并执行相应的动作RHS。在规则语言中还使用了一些保留字。 决策表 规则的定义可通过Excel决策表的方式书写,具体的语法可以参考《Excel语法手册》。 决策表也是一种精确而简洁的表达逻辑条件的方法,非常适用于业务级的规则。电子表格对于数据的捕获与操作是很有优点的。Drools支持在电子表格中管理规则。支持的格式有Excel和CSV。这样你可以使用多种不同的表格程序,如Microsoft Excel,OpenOffice等。 决策表其实就是用“模板+数据”的格式来表达规则。决策表中的每一行就是对应模板的一行数据,将产生一个规则。在Drools中的决策表通过表格中的数据直接产生规则。在模板中的语法要做什么,依赖于它是条件列还是行为列。在大多数情况下,它与DRL中的LHS和RHS的含义相同。这意味着在LHS中必须使用约束语言,而在RHS中是一段要执行的代码。决策表在规则引擎中可以转换为与之对应的DRL规则描述。 例: 对应的DRL语言描述: rule startTest salience 100 //优先级别 no-loop ture //执行一次后,不能被再次激活 when eval(true) then System.out.println(autotest……); end 决策表不建议在规则不能遵循模板或者只有很少量的规则的时候使用。使用决策表的好处在于你可以控制规则的哪些参数可以被修改,而不用直接暴露规则。决策表也为隐含在下面的对象模型提供了一定的隔绝性。 虽然决策表看起来像是从上到下的处理,但这不是必须的。如果能够将规则以与顺序无关的方式实现是非常好的,简单的说它使得维护变得简单,你不需要花时间来维护行之间的顺序。因为每一行是一个规则,同样的原理被应用。当规则引擎处理fact,任何匹配的规则都有可能被激发【有可能一个激发的规则引起另一个规则不能被激发,但哪一个规则先被激发是无顺序的】。同样注意,你可以在电子表格中建立多个表格,这样当规则共享相同的模板时,它们可以被编组,但是在最后一个电子表格中的规则会被放到同一个规则包中。决策表是用来快速有效的自动产生规则的一个工具。 电子表格可以通过业务工具很好的建立。通过决策表可以隔断IT人员与领域专家的交互(针对提取规则而言),使得业务分析师能够清晰了解业务规则,是进行关系分离的理想办法。 规则引擎 规则条件的模式匹配(Rete算法) Rete 算法总体可以分成两部分: 建立 Rete 网络 ;对象模式匹配 一、 建立 Rete 网络: 把规则内的模式组等价变换为最外层为 OR 逻辑,两边模式都用 AND 逻辑连接成模式组的形式 Rete 节点为网络的根节点,可以认为是第0层节点;Rete节点内部保存一个哈希表指向第一层节点 模式类型绑定到 ObjectTypeNode 上,作为 Rete 网

文档评论(0)

2017meng + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档