规则文件测试类
2016-01-23 15:28
169 查看
package com.ideal.crm.modelconvert.ruleengine; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.net.URLDecoder; import java.util.ArrayList; import java.util.List; import org.apache.commons.io.FileUtils; import org.drools.builder.KnowledgeBuilder; import org.drools.builder.KnowledgeBuilderFactory; import org.drools.builder.ResourceType; import org.drools.io.ResourceFactory; import org.junit.Test; import com.ideal.crm.common.constants.Constant; import com.ideal.crm.common.log.ILogger; import com.ideal.crm.common.log.LoggerFactory; public class DrlTest { private static final ILogger logger = LoggerFactory.getLogger(DrlTest.class); private String[] dirs = new String[]{"rules", "complete-rules", "dsync-rules"}; @Test public void checkDrl() throws IOException { for (String dir : dirs) { List<String> drlErrors = new ArrayList<>(); URL url = Thread.currentThread().getContextClassLoader().getResource(dir); handleDir(url.getPath(), drlErrors); if (!drlErrors.isEmpty()) { File file = new File("D:\\drlErrors_" + dir); if (file.exists()) file.delete(); try { file.createNewFile(); for (String drlError : drlErrors) { FileUtils.writeStringToFile(file, drlError + "\n\n", true); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } private void handleDir(String dir, List<String> drlErrors) throws IOException { File drlFileDir = new File(URLDecoder.decode(dir, Constant.CHAR_ENCODING)); File[] files = drlFileDir.listFiles(); for (File file : files) { if (file.isDirectory()) { handleDir(file.getPath(), drlErrors); } else if (file.isFile()) { logger.debug(file.getName()); KnowledgeBuilder kb = KnowledgeBuilderFactory.newKnowledgeBuilder(); InputStream is = new FileInputStream(file); kb.add(ResourceFactory.newInputStreamResource(is), ResourceType.DRL); if (kb.hasErrors()) { drlErrors.add("Errors in the rules:\ndrl=" + file.getName() + ", \nerrors=" + kb.getErrors().toString()); } } } } }
相关文章推荐
- Highcharts.js -纯javasctipt图表库初体验
- C#语言基础(二)
- hiho 28 堆
- sed匹配与替换
- 【CODEFORCES】 A. Team Olympiad
- hdu1875 畅通工程再续 最小生成树(prim算法)
- Ubuntu apt-get 源
- 敏捷开发之Scrum扫盲篇
- nyoj246 Human Gene Functions(LCS变形)
- Theano(1):windows、linux下安装深度学习库Theano
- SuperMap超图基础——打开地图
- C++ typedef typename 作用
- HackPwn2015:IoT智能硬件安全威胁分析
- 推荐!国外程序员整理的机器学习资源大全
- 运维安全概述
- MySQL数据库读写分离
- 解决ubuntu14.04编译boost1.5.4没有thread库生成
- linux常用命令
- (进阶篇)每日一更:函数式编程(lamda)
- 浅谈互联网公司业务安全