`
MMSCAU
  • 浏览: 114331 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

读取Guvnor中的规则...

阅读更多

 

配合Guvnor一起使用,简单的实现如下:

 

直接使用Drools 的HelloWorld例子进行改动:

 

代码清单一:

 

 

package com.sample;

import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseFactory;
import org.drools.agent.KnowledgeAgent;
import org.drools.agent.KnowledgeAgentFactory;
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);
  kbuilder.add(ResourceFactory.newUrlResource("http://localhost:8080/drools-guvnor/org.drools.guvnor.Guvnor/package/com.chen.rules/LATEST"), ResourceType.PKG);
  KnowledgeBuilderErrors errors = kbuilder.getErrors();
  if (errors.size() > 0) {
   for (KnowledgeBuilderError error: errors) {
    System.err.println(error);
   }
   throw new IllegalArgumentException("Could not parse knowledge.");
  }
  KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
  kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
  //采用Agent的方式
/*  KnowledgeAgent kagent=KnowledgeAgentFactory.newKnowledgeAgent("/deploy.properties");
  
  KnowledgeBase kbase=kagent.getKnowledgeBase();*/
  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;
  }
  
 }

}

 

部分截图:

Guvnor package

 

Code

 

Code2

 

图示:

Guvnor

 

测试结果:

 

 

结果输出

 

------Game Over----------------

 

 

 

  • 大小: 25.3 KB
  • 大小: 18.2 KB
  • 大小: 14.6 KB
  • 大小: 15.7 KB
  • 大小: 14 KB
分享到:
评论
2 楼 mponeno 2014-11-07  
规则有条件的话,貌似不能触发规则,比如你helloWorld的例子,如果以message作为判断,会无法触发规则,但是用测试场景就可以触发。。。
1 楼 duyangsss 2014-02-19  
你好,我看见你将KnowledgeAgent的方式注释掉了,
/* 
KnowledgeAgent kagent=KnowledgeAgentFactory.newKnowledgeAgent("/deploy.properties");
KnowledgeBase kbase=kagent.getKnowledgeBase();
*/
而是通过Guvnor的路径方式访问的PKG资源
kbuilder.add(ResourceFactory.newUrlResource("http://localhost:8080/drools-guvnor/org.drools.guvnor.Guvnor/package/com.chen.rules/LATEST"), ResourceType.PKG);
这是为什么呢?
这个规则是否会在本地有缓存呢,如果我的Gunvor在某个时候没有启动,是否还能正常执行。
还有就是如果我在Gunvor中对规则做了修改,这个时候怎么办?

相关推荐

    python读取excel数据源码.zip

    python读取excel数据python读取excel数据源码.zippython读取excel数据源码.zippython读取excel数据源码.zippython读取excel数据源码.zippython读取excel数据源码.zippython读取excel数据源码.zippython读取excel数据...

    MATLAB读取.dat与.img格式的影像数据

    本函数用来读取.dat与.img格式的ENVI数据,所用到的数据为.hdr格式的头文件与.dat格式的数据文件。

    读取写入保存excel.zip源码Labview个人项目资料程序资源下载

    读取写入保存excel.zip源码Labview个人项目资料程序资源下载读取写入保存excel.zip源码Labview个人项目资料程序资源下载读取写入保存excel.zip源码Labview个人项目资料程序资源下载读取写入保存excel.zip源码Labview...

    NRRD读取.zip_.nrrd_matlab 编辑nrrd_nrrdread_医学图像_图像读取

    基于matlab编写的nrrd医学图像数据读取函数: nrrdread.m nrrdread_std.m

    按修改时间读取文件夹下文件.zip源码Labview个人项目资料程序资源下载

    按修改时间读取文件夹下文件.zip源码Labview个人项目资料程序资源下载按修改时间读取文件夹下文件.zip源码Labview个人项目资料程序资源下载按修改时间读取文件夹下文件.zip源码Labview个人项目资料程序资源下载按...

    选择框读取保存模块代码.e.rar

    选择框读取保存模块代码.e.rar 选择框读取保存模块代码.e.rar 选择框读取保存模块代码.e.rar 选择框读取保存模块代码.e.rar 选择框读取保存模块代码.e.rar 选择框读取保存模块代码.e.rar

    用C++结合MATLAB读取NOAA气象数据.pdf

    用C++结合MATLAB读取NOAA气象数据.pdf

    易语言保存和读取整数型数组.rar

    易语言保存和读取整数型数组.rar 易语言保存和读取整数型数组.rar 易语言保存和读取整数型数组.rar 易语言保存和读取整数型数组.rar 易语言保存和读取整数型数组.rar 易语言保存和读取整数型数组.rar

    Java 读取本地.xls .xlsx文件

    接下来,我们来看如何读取.xls文件: ```java import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import java.io....

    易语言源码易语言读取注册表关联图标.rar

    易语言源码易语言读取注册表关联图标.rar 易语言源码易语言读取注册表关联图标.rar 易语言源码易语言读取注册表关联图标.rar 易语言源码易语言读取注册表关联图标.rar 易语言源码易语言读取注册表关联图标.rar ...

    易语言源码易语言读取进度循环暂停.rar

    易语言源码易语言读取进度循环暂停.rar 易语言源码易语言读取进度循环暂停.rar 易语言源码易语言读取进度循环暂停.rar 易语言源码易语言读取进度循环暂停.rar 易语言源码易语言读取进度循环暂停.rar 易语言源码...

    读取nii或nii.gz文件中的信息即输出图像操作

    读取nii或者nii.gz文件中的信息,并且输出图像。 import matplotlib from matplotlib import pylab as plt import nibabel as nib from nibabel.viewers import OrthoSlicer3D file = '' #你的nii或者nii.gz文件...

    易语言源码保存和读取整数型数组.rar

    易语言源码保存和读取整数型数组.rar 易语言源码保存和读取整数型数组.rar 易语言源码保存和读取整数型数组.rar 易语言源码保存和读取整数型数组.rar 易语言源码保存和读取整数型数组.rar 易语言源码保存和读取...

    读取MySQL的*.frm文件(解压密码:zcgonvh)

    在MySQL数据库系统中,`.frm`文件是存储表结构的关键文件,它包含了关于数据库表的定义,如字段名、字段类型、索引等信息。当遇到数据库损坏或丢失元数据的情况,`.frm`文件就成为了恢复数据结构的重要资源。本文将...

    易语言源码易语言读取卸载列表源码.rar

    易语言源码易语言读取卸载列表源码.rar 易语言源码易语言读取卸载列表源码.rar 易语言源码易语言读取卸载列表源码.rar 易语言源码易语言读取卸载列表源码.rar 易语言源码易语言读取卸载列表源码.rar 易语言源码...

    易语言源码易语言进度读取文件内容源码.rar

    易语言源码易语言进度读取文件内容源码.rar 易语言源码易语言进度读取文件内容源码.rar 易语言源码易语言进度读取文件内容源码.rar 易语言源码易语言进度读取文件内容源码.rar 易语言源码易语言进度读取文件内容...

    易语言源码易语言超速读取网页源码模块.rar

    易语言源码易语言超速读取网页源码模块.rar 易语言源码易语言超速读取网页源码模块.rar 易语言源码易语言超速读取网页源码模块.rar 易语言源码易语言超速读取网页源码模块.rar 易语言源码易语言超速读取网页源码...

    易语言源码易语言对象excel读取MDB数据库源码.rar

    易语言源码易语言对象excel读取MDB数据库源码.rar 易语言源码易语言对象excel读取MDB数据库源码.rar 易语言源码易语言对象excel读取MDB数据库源码.rar 易语言源码易语言对象excel读取MDB数据库源码.rar 易语言...

    java 写的读取txt、property...等文件内容保存在list里

    java 写的读取txt、property...等文件的内容保存在list里,希望对大家能得到帮助。

Global site tag (gtag.js) - Google Analytics