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

转载 2015年11月17日 15:44:12

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必须要定义在规则文件最前面外,其他的组成部分均可以不按顺序定义,但建议按照以上描述的顺序进行定义,以便加强规则文件的可读性。

drools 6学习--动态加载规则

之前的2个drools例子的规则都是为规则文件中预先写好的,kmodule.xml指定文件路径,kieSeesion会将指定的文件夹下的所有规则文件都加载,这样会有一个麻烦,就是当规则改变了,那就得重...
  • dream_broken
  • dream_broken
  • 2016年08月08日 11:28
  • 8952

drools 规则文件 —— 语法

http://liureying.blog.163.com/blog/static/615135201111394058945/?suggestedreading 前言: Drools 分为两个主要...
  • piaodangdeyouzi
  • piaodangdeyouzi
  • 2013年07月19日 17:19
  • 3075

Drools规则引擎远程加载规则文件

1.创建一个drools工程: 2.创建一个Dynamic Web Project(主要体现远程加载规则文件,将规则文件放在这个工程中,并配上服务器):   其中,Sample.d...
  • qinsihang
  • qinsihang
  • 2014年01月01日 14:28
  • 3580

drools 规则文件 —— 文件构成介绍

http://liureying.blog.163.com/blog/static/6151352011111391336589/?suggestedreading 简述: 规则文件是按规则引擎的...
  • piaodangdeyouzi
  • piaodangdeyouzi
  • 2013年07月19日 17:18
  • 600

Drools6.4动态加载规则之(二)动态创建kjar

Drools6.4动态加载规则之(二)动态创建kjar
  • caicongyang
  • caicongyang
  • 2016年10月26日 17:33
  • 6414

Drools6.4动态加载规则之(一)模板的简单应用

Drools6.4动态加载规则之(一)模板的简单应用
  • caicongyang
  • caicongyang
  • 2016年09月29日 16:06
  • 4784

drools -规则语法

文章结构1. 基础api2. FACT对象3. 规则4. 函数1. 基础api在 Drools 当中,规则的编译与运行要通过Drools 提供的各种API 来实现,这些API 总体来讲可以分为三类:规...
  • u012373815
  • u012373815
  • 2016年12月25日 21:29
  • 4374

Drools6.4简单应用之规则的优先级

Drools6.4简单应用之规则的优先级
  • caicongyang
  • caicongyang
  • 2016年11月21日 21:33
  • 1595

drools 规则几个关键字

drools规则编写内置几个关键字drools语法关于关于规则执行互斥分组以及相关的关键字如下 agenda-group:规则是否执行的分组,同一个分组的规则要么都执行要么都不执行 salience:...
  • datiexiong
  • datiexiong
  • 2016年11月05日 16:30
  • 701

Drools 规则文件 ——语法属性

1.salience  功能:设置规制执行的优先级 值:数字(数字越大执行优先级越高) 示例: rule "rule1"    salience 1    when   eval(true)    t...
  • yusewuhen
  • yusewuhen
  • 2014年02月16日 17:26
  • 1867
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Drools学习 搭建helloworld 与规则文件结构
举报原因:
原因补充:

(最多只允许输入30个字)