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的一些组件,具体介绍可参见
drools决策表的使用的更多相关文章
- drools决策表的简单使用
目录 一.背景 二.一个简单的决策表 1.在同一个决策表中处理多个Sheet页 2.RuleSet下方可以有哪些属性 3.RuleTable下方可以有哪些属性 4.规则属性的编写 三.需求 四.实现 ...
- Drools环境搭建(转)
Eclipse3.5安装Drools5.2.0.Final插件 到Drools下载页面(现在是http://www.jboss.org/drools/downloads.html) -下载并解压Dro ...
- Drools文档(六) 用户手册
用户手册 基础 无状态的知识Session Drools规则引擎拥有大量的用例和功能,我们要如何开始?你无须担心,这些复杂性是分层的,你可以用简单的用例来逐步入门. 无状态Session,无须使用推理 ...
- drools规则引擎初探
https://www.cnblogs.com/yuebintse/p/5767996.html 1.drools是什么 Drools是为Java量身定制的基于Charles Forgy的RETE算 ...
- Drools规则引擎
一.简介 Drools is a Business Rules Management System (BRMS) solution. It provides a core Business Rules ...
- Drools 7.4.1.Final参考手册(六) 用户手册
用户手册 基础 无状态的知识Session Drools规则引擎拥有大量的用例和功能,我们要如何开始?你无须担心,这些复杂性是分层的,你可以用简单的用例来逐步入门. 无状态Session,无须使用推理 ...
- Java规则引擎drools:drt动态生成规则并附上具体项目逻辑
一 整合 由于本人的码云太多太乱了,于是决定一个一个的整合到一个springboot项目里面. 附上自己的项目地址https://github.com/247292980/spring-boot 以整 ...
- drools原生drl规则文件的使用
在初识drools中对drl文件进行了简单的介绍.这里举个例子来具体说明下.主要是写了规则之后我们如何用java代码来run起来. drl文件内容如下: rule "ageUp12" ...
- Drools集成SpringBootStarter
1.说明 基于fast-drools-spring-boot-starter, 能够方便的将规则引擎Drools集成到Spring Boot, 基于前面介绍过的文章Drools集成SpringBoot ...
随机推荐
- 拾遗:vim 快捷键设置
~/.vimrc 零.批量注释与反注释 :sp / :vsp 横向 / 纵向拆分窗口 :e 打开新文件 zc:拆叠代码 / zo:展开代码 set foldmetho ...
- 【react】---Hooks的基本使用---【巷子】
一.react-hooks概念 React中一切皆为组件,React中组件分为类组件和函数组件,在React中如果需要记录一个组件的状态的时候,那么这个组件必须是类组件.那么能否让函数组件拥有类组件的 ...
- 剑指offer——75不用加减乘除做加法
题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 题解: 使用位运算 class Solution { public: int Add(int num1 ...
- jmeter 读写excel插件编写教程系列(1) -开篇
不知道为什么,jmeter 竟然不提供 读写excel 的Sampler! 但是在我们自动化接口测试过程中,参数化.保存测试数据,用excel 是比较好的解决方案! 接下来一段儿时间,大虫会抽出一些时 ...
- js基本包装类型
基本包装类型 3种特殊的引用类型 为了便于操作基本类型值,es还提供了3种特殊的引用类型: Boolean,Number,String. 每当读取一个基本类型值的时候,后台就会创建一个对应的基本包 ...
- 高效IO之File文件操作类的基础用法(二)
更多Android高级架构进阶视频学习请点击:https://space.bilibili.com/474380680 前言 众所周知Java提供File类,让我们对文件进行操作,下面就来简单整理了一 ...
- [BOI2009]Radio Transmission 无线传输
题目描述 给你一个字符串,它是由某个字符串不断自我连接形成的. 但是这个字符串是不确定的,现在只想知道它的最短长度是多少. 输入输出格式 输入格式: 第一行给出字符串的长度,1 < L ≤ 1, ...
- eduCF#60 D. Magic Gems /// 矩阵快速幂
题目大意: 给定n m (1≤N≤1e18, 2≤M≤100) 一个魔法水晶可以分裂成连续的m个普通水晶 求用水晶放慢n个位置的方案modulo 1000000007 (1e9+7) input 4 ...
- eclipse 在复制/粘贴 时很卡(转)
最近发现eclipse在按Ctrl+C 时卡的要命,在网上找了一下,发现原来如此: 打开选项: Window -> Preferences -> General -> Editors ...
- java创建一个空白zip
String zipath = localpath+zipname+".zip"; public static void createNewzip(String zipath) t ...