关闭

Drools学习 搭建helloworld 与规则文件结构

687人阅读 评论(0) 收藏 举报

Drools官网:http://www.jboss.org/drools

 

Drools and jBPM consist out of several projects:(Drools软件包提供的几个部分的功能

Drools Guvnor (Business Rules Manager) (规则集管理器

Drools Expert (rule engine)                      (规则引擎)    

jBPM 5 (process/workflow)                       (工作流
Drools Fusion (event processing/temporal reasoning)   (规则集引擎搜索与规划)    

Drools Planner (automated planning)        (决策表)  

-----------------------------------------------------------------------------------------------------------------------

Eclipse3.5安装Drools5.2.0.Final插件

到Drools下载页面(现在是http://www.jboss.org/drools/downloads.html

-下载并解压Drools:drools-distribution-5.2.0.Final.zip  (解压目录随意)

-下载并解压插件:droolsjbpm-tools-distribution-5.2.0.Final.zip(解压目录随意)

- 打开 Eclipse.

- 点 "Help"—"Install new software..."

- 点击 "Add..."  

- 在name中输入"DroolsLocaluUpdateSite"(名字随意起)

- 点击 "Local..." 并且选择"......./binaries/org.drools.updatesite" (此目录在刚刚解压的插件中)

- 点击OK

- 选择所以插件。

-下面就是点击next,finish

 

插件安装完后还需在Eclipse中添加Drools的运行环境:

- 点击"Windows"—"Preferencess"

- 在窗口的树形菜单中选择"Drools"—"Installed Drools Runtimes"

- 在右边的空的Drools运行库列表中,点击"Add"

- 在弹出窗口中name输入DroolsRuntime(随意起个名字),在Path选择"......./drools-distribution-5.2.0.Final\drools-distribution-5.2.0.Final\binaries" (此目录在刚刚解压的Drools中),

- 点击"OK"

- 点击"OK"

-----------------------------------------------------------------------------------------------------------------------

HelloWorld例子

 

- "New"—"Project"—"Drools Project"—输入项目名—"Next"

- 这里显示可以选择要生成的样例文件的类型(3种类型的6种样例文件:规则引擎样例的规则文件和java测试类;决策表开发的决策表文件和java测试类;工作流的流程文件和java测试类)。勾选规则引擎样例的规则文件和java测试类,点击"Next"

 

- 进入到Drools运行时库的选择界面。环境搭建中已经设置了默认的运行时库,这里加载。然后选择编译代码所使用的规则引擎版本,这里选择"Drools 5.1 or above",点击"Finish"

Sample.drl :规则引擎的样例文件,该文件根据Drools规则语言语法编写






14.3  Drools规则语法概述

Drools有一套特定的规则语言,通过该规则语言,可以将不同业务领域的业务“语言”转换为可以被Drools解读的规则。与其他的编程语言一样,规则语言拥有特定的语法,例如语言中的关键字、变量定义、函数定义和函数调用等。本节将对Drools的规则语法进行初步的讲解。

14.3.1  规则文件结构

每种语言都会有自己特定的语言结构,例如Java语言使用class来定义一个类、使用package来声明包等,同样地,规则语言同样有特定的结构,一份规则文件的内容主要包括以下部分。

package:声明该规则文件的包名,相当于为规则文件提供一个命名空间,该名称可以不与规则文件所在的目录相关联,例如“package org.crazyit.drools.sale;”,package必须要在规则文件的最前面,否则在编译规则文件时,将会抛出错误信息,信息内容为:mismatched input 'package' expecting one of the following tokens: '[package, import, global, declare, function, rule, query]。

import:该关键字就好像Java中的import一样,声明规则在编译和运行时所使用到的Java类,如14.2.3节的例子中,规则文件需要使用Person对象,那么就需要使用import关键字导入该对象,但是14.2.3节的例子中并没有显式导入Person对象,这是由于使用了package定义了“org.crazyit.drools”命名空间,而Person类的包恰好是“org.crazyit.drools”,与package的包名相同,因此不需要显式进行导入。除了会将package声明的Java包下全部的类导入外,默认还会导入java.lang包下全部的类。

global:用于定义全局的变量,这些变量可以是具体的数据或者服务对象,规则文件中的全部规则均可以使用global定义的变量,例如“global java.util.List.myList”。全局变量更多会用于存放规则结果或者与应用进行数据交互。

function:用于在规则文件中定义逻辑语句,其可以将部署逻辑独立存放到规则文件中,这些方法可以供多个规则调用,就像Java类中的工具(private)方法。

query:使用查询可以到工作存储空间中查找符合条件的事实数据,事实数据均会被存放到工作存储空间中,query是其中一种查询这些事实数据的途径。

rule:一个rule定义一个业务规则,当符合某个特定条件时,就执行相应的行为,条件被称为LHS(Left Hand Side),行为被称为RHS(Right Hand Sie),例如使用when LHS then RHS的语法规则定义一个rule。

在规则文件中,除了package必须要定义在规则文件最前面外,其他的组成部分均可以不按顺序定义,但建议按照以上描述的顺序进行定义,以便加强规则文件的可读性。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:21700次
    • 积分:409
    • 等级:
    • 排名:千里之外
    • 原创:8篇
    • 转载:68篇
    • 译文:1篇
    • 评论:1条
    文章分类
    最新评论