Drools入门Helloworld
来源:互联网 发布:淘宝网广场舞服装套装 编辑:程序博客网 时间:2024/04/30 13:13
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规则语言语法编写
- package com.sample
- import com.sample.DroolsTest.Message;
- rule "Hello World"
- when
- //LHS块
- //在working Memory中,如果存在一个Message对象满足他的status属性等于Message.HELLO条件,
- //就把满足条件的Message实例用变量m表示,他的message属性用myMessage表示,以便在RHS中使用。
- m : Message( status == Message.HELLO, myMessage : message )
- then
- //RHS块
- //在LHS中满足条件就运行RHS块。用到了LHS中的变量m,myMessage
- System.out.println( myMessage );
- m.setMessage( "Goodbye cruel world" );
- m.setStatus( Message.GOODBYE );
- update( m );//表示把此Message实例在 working memory中更新.这便会触发名称为"GoodBye"的rule,
- end
- rule "GoodBye"
- when
- Message( status == Message.GOODBYE, myMessage : message )
- then
- System.out.println( myMessage );
- end
DroolsTest.java:java测试类,用来读取Sample.drl 并运行,该文件使用Drools规则引擎的API进行编写
- package com.sample;
- import org.drools.KnowledgeBase;
- import org.drools.KnowledgeBaseFactory;
- import org.drools.builder.KnowledgeBuilder;
- import org.drools.builder.KnowledgeBuilderError;
- import org.drools.builder.KnowledgeBuilderErrors;
- import org.drools.builder.KnowledgeBuilderFactory;
- import org.drools.builder.ResourceType;
- import org.drools.io.ResourceFactory;
- import org.drools.logger.KnowledgeRuntimeLogger;
- import org.drools.logger.KnowledgeRuntimeLoggerFactory;
- import org.drools.runtime.StatefulKnowledgeSession;
- /**
- * This is a sample class to launch a rule.
- */
- public class DroolsTest {
- public static final void main(String[] args) {
- try {
- // load up the knowledge base
- KnowledgeBase kbase = readKnowledgeBase();
- StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();//创建会话
- KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, "test");
- // go !
- Message message = new Message();
- message.setMessage("Hello World");
- message.setStatus(Message.HELLO);
- ksession.insert(message);//插入
- ksession.fireAllRules();//执行规则
- logger.close();//关闭
- } catch (Throwable t) {
- t.printStackTrace();
- }
- }
- private static KnowledgeBase readKnowledgeBase() throws Exception {
- KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();//创建规则构建器
- kbuilder.add(ResourceFactory.newClassPathResource("Sample.drl"), ResourceType.DRL);//加载规则文件,并增加到构建器
- KnowledgeBuilderErrors errors = kbuilder.getErrors();
- if (errors.size() > 0) {//编译规则过程中发现规则是否有错误
- for (KnowledgeBuilderError error: errors) {System.out.println("规则中存在错误,错误消息如下:");
- System.err.println(error);
- }
- throw new IllegalArgumentException("Could not parse knowledge.");
- }
- KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();//创建规则构建库
- kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());//构建器加载的资源文件包放入构建库
- return kbase;
- }
- public static class Message {
- public static final int HELLO = 0;
- public static final int GOODBYE = 1;
- private String message;
- private int status;
- public String getMessage() {
- return this.message;
- }
- public void setMessage(String message) {
- this.message = message;
- }
- public int getStatus() {
- return this.status;
- }
- public void setStatus(int status) {
- this.status = status;
- }
- }
- }
转载:http://justsee.iteye.com/blog/1198259
- Drools入门Helloworld
- Drools入门-----------环境搭建,Helloworld 入门篇
- Drools入门-----------环境搭建,分析Helloworld
- Drools入门-----------环境搭建,分析Helloworld
- Drools规则引擎初学入门实例HelloWorld
- Drools入门-----------环境搭建,分析Helloworld
- Drools入门-----------环境搭建,分析Helloworld
- Drools入门-----------环境搭建,分析Helloworld
- Drools入门系列——HelloWorld详解之Sample.drl
- drools之helloworld
- Drools-入门
- Drools入门
- Drools 入门例子
- Drools学习 入门实例
- Drools 入门例子
- Drools 6.0:入门实例
- drools入门(二)
- Drools 入门例子
- ios 获得设备的方向
- 闭包
- ora-27102 solaris 内存限制
- 纯javascript实现文字、图片无限滚动效果
- Python的日志系统
- Drools入门Helloworld
- 客户端测量输出文章的宽高方案
- Oracle清除表的高水位线
- spring-jms(activemq实现)使用queue发送消息简单例子
- 对自己之前做过项目所做的一些笔记
- 软件开发:个人与团队是永远的核心
- 服务器,tomcat,网页请求错误400,The request sent by the client was syntactically incorrect的问题
- Linux下svn命令行工具使用简介
- VBS基础篇 - 对象(10) - Wscript对象