zoukankan      html  css  js  c++  java
  • drools决策表的使用

    决策表我们在drools规则引擎初探里做了简单介绍,这里主要是介绍如何通过java代码来把这个excel文件和drools关联起来,如何使其达到我们想要的效果。

    这里假设我们在resources目录下有这么一个文件:/drools/decisiontable/mydecisiontable.xls

    然后在http://docs.jboss.org/drools/release/6.4.0.Final/drools-docs/html_single/index.html#d0e5549中对决策表的使用也提了一下,一定要有个对应的

    kmodule.xml ,在这里我们并没有提供这个文件,因为在kie-api的介绍和使用中我们已经知道了可以通过程序来获得。

    具体代码如下:

    //1.获取一个KieServices
    KieServices kieServices = KieServices.Factory.get();
    //2.创建kiemodule xml对应的class
    KieModuleModel kieModuleModel = kieServices.newKieModuleModel();
    //3.创建KieFileSystem虚拟文件系统
    KieFileSystem kieFileSystem = kieServices.newKieFileSystem();

    //4.添加具体的KieBase标签
    KieBaseModel kieBaseModel = kieModuleModel.newKieBaseModel("mydecision").
    addPackage("mydecision");//kie fileSystem 中资源文件的文件夹
    //<KieBase></KieBase>标签添加KieSession属性
    kieBaseModel.newKieSessionModel("kiession-mydecision");//a
     
    //5.添加kiemodule.xml文件到虚拟文件系统
    String kieModuleModelXml = kieModuleModel.toXML();
    kieFileSystem.writeKModuleXML(kieModuleModelXml);//kieModuleModel
    //6.把规则文件加载到虚拟文件系统
    Resource resource = getResource("drools/decisiontable/mydecisiontable.xls");
    String fileName = "mydecision-table" + resource.getResourceType().getDefaultExtension();
    //这里是把规则文件添加到虚拟系统,第一个参数是文件在虚拟系统中的路径,这里的文件目录和4.处的addPackage必须一致,否则失败
    String kieFilePath = new StringBuilder("src/main/resources/").
    append("mydecision").append("/").append(fileName).toString();
    kieFileSystem.write(kieFilePath, resource);

    //7.构建所有的KieBase并把所有的KieBase添加到仓库里
    kieServices.newKieBuilder(kieFileSystem).buildAll();
    KieContainer kieContainer = kieServices.newKieContainer(kieServices.getRepository().getDefaultReleaseId());//创建kie容器

    //8.从容器中获取一个会话,这里和a处添加的是一个key,否则找不到 找不到任何一个会报异常
    KieSession kieSession = kieContainer.newKieSession("kiession-mydecision");
    kieSession.insert(new Student(11, "max"));
    kieSession.insert(new Student(13, "max"));
    kieSession.fireAllRules();

    看注释应该能基本看明白了。这里用到了kie-api的一些组件,具体介绍可参见

  • 相关阅读:
    HUST 1584 摆放餐桌
    HUST 1585 排队
    HUST 1583 长度单位
    树状数组 poj2352 Stars
    Visual Studio2013应用笔记---WinForm事件中的Object sender和EventArgs e参数
    倒置输入的数 Exercise07_02
    指定等级 Exercise07_01
    检测密码 Exercise06_18
    一年的天数 Exercise06_16
    数列求和 Exercise06_13
  • 原文地址:https://www.cnblogs.com/yuebintse/p/5751384.html
Copyright © 2011-2022 走看看