@Override public Results verify() { return kieContainer.verify(); }
@Test public void testVeyifyNotExistingKieBase() throws Exception { // DROOLS-2757 KieServices ks = KieServices.Factory.get(); KieFileSystem kfs = ks.newKieFileSystem().write( "src/main/resources/r1.drl", createDrl( "R1" ) ); ks.newKieBuilder( kfs ).buildAll(); KieContainer kieContainer = ks.newKieContainer(ks.getRepository().getDefaultReleaseId()); try { kieContainer.verify( "notexistingKB" ); fail("Verifying a not existing KieBase should throw a RuntimeException"); } catch (RuntimeException e) { assertTrue( e.getMessage().contains( "notexistingKB" ) ); } }
@Override public Results verify( String... kBaseNames ) { return getKieContainer().verify(kBaseNames); }
public Results verify() { return getKieContainer().verify(); }
@Override public Results verify( String... kBaseNames ) { return getKieContainer().verify(kBaseNames); }
public Results verify() { return getKieContainer().verify(); }
public boolean verify(KieContainer container) { boolean verified = true; try { Results results = container.verify(); for (Message message : results.getMessages()) { Level level = message.getLevel(); switch (level) { case INFO: logger.info(message.toString()); break; case WARNING: logger.warn(message.toString()); break; case ERROR: logger.error(message.toString()); verified = false; break; } } } catch (Throwable t) { logger.error(t.getMessage(), t); verified = false; } return verified; }
/** * 小明喝汽水问题 * * 1元钱一瓶汽水,喝完后两个空瓶换一瓶汽水,问:小明有20元钱,最多可以喝到几瓶汽水? */ public static void main(final String[] args) { KieContainer kc = KieServices.Factory.get().getKieClasspathContainer(); System.out.println(kc.verify().getMessages().toString()); execute(kc); }
public static void main(final String[] args) { KieContainer kc = KieServices.Factory.get().getKieClasspathContainer(); System.out.println(kc.verify().getMessages().toString()); execute(kc); }
public static void main(final String[] args) { KieContainer kc = KieServices.Factory.get().getKieClasspathContainer(); System.out.println(kc.verify().getMessages().toString()); execute(kc); }
/** * 加载KieContainer容器 */ public static KieContainer loadKieContainer() throws RuntimeException { //通过kmodule.xml 找到规则文件,这个文件默认放在resources/META-INF文件夹 log.info("准备创建 KieContainer"); if (kieContainer == null) { log.info("首次创建:KieContainer"); // 设置drools的日期格式 System.setProperty("drools.dateformat", "yyyy-MM-dd HH:mm:ss"); //线程安全 synchronized (DroolsUtil.class) { if (kieContainer == null) { // 创建Container kieContainer = kieServices.getKieClasspathContainer(); // 检查规则文件是否有错 Results results = kieContainer.verify(); if (results.hasMessages(Message.Level.ERROR)) { StringBuffer sb = new StringBuffer(); for (Message mes : results.getMessages()) { sb.append("解析错误的规则:").append(mes.getPath()).append(" 错误位置:").append(mes.getLine()).append(";"); } throw new RuntimeException(sb.toString()); } } } } log.info("KieContainer创建完毕"); return kieContainer; }
public static void main(final String[] args) { KieContainer kc = KieServices.Factory.get().getKieClasspathContainer(); System.out.println(kc.verify().getMessages().toString()); execute(kc); }
/** * 在一次数学竞赛中,获得前三名的同学是A,B,C. 老师对他们说:“祝贺你们,请你们猜一猜名次。” * 甲:“A是第二,C是第三.” * 乙:“A是第一,B是第三.” * 丙:“B是第二,A是第三.” * 感觉有更好的方法,但是写不出规则来0.0 */ public static void main(final String[] args) { KieContainer kc = KieServices.Factory.get().getKieClasspathContainer(); System.out.println(kc.verify().getMessages().toString()); execute(kc); }
/** * 已知有四个高尔夫球员,他们的名字是Fred,Joe,Bob,Tom; * 今天他们分别穿着红色,蓝色,橙色,以及格子衣服,并且他们按照从左往右的顺序站成一排。 * 我们将最左边的位置定为1,最右边的位置定为4,中间依次是2,3位置。 * 现在我们了解的情况是: * 1.高尔夫球员Fred,目前不知道他的位置和衣服颜色 * 2.Fred右边紧挨着的球员穿蓝色衣服 * 3.Joe排在第2个位置 * 4.Bob穿着格子短裤 * 5.Tom没有排在第1位或第4位,也没有穿橙色衣服 * 请问,这四名球员的位置和衣服颜色。 */ public static void main(final String[] args) { KieContainer kc = KieServices.Factory.get().getKieClasspathContainer(); System.out.println(kc.verify().getMessages().toString()); execute(kc); }
Results messages = kc.verify();
public static void main(String[] args) { KieServices kieServices = KieServices.Factory.get(); KieContainer container = kieServices.getKieClasspathContainer(); Results results = container.verify(); List<Message> messages = results.getMessages(); System.out.println("messages size:" + messages.size()); for (Message msg : messages) { System.out.println("level:" + msg.getLevel() + ";text=" + msg.getText()); } Collection<String> kieBaseNames = container.getKieBaseNames(); for(String kieBaseName : kieBaseNames){ System.out.println("kieBaseName----" + kieBaseName); Collection<String> kieSessionNamesInKieBase = container.getKieSessionNamesInKieBase(kieBaseName); for(String kieSession : kieSessionNamesInKieBase){ System.out.println("kieSession-----" + kieSession); } } } }
Results messages = kc.verify();
public static List<DMNMessage> createExpectingDMNMessages(final String resourceName, final Class testClass) { final KieServices ks = KieServices.Factory.get(); final KieContainer kieContainer = getKieContainerIgnoringErrors(ks.newReleaseId("org.kie", "dmn-test-" + UUID.randomUUID(), "1.0"), ks.getResources().newClassPathResource(resourceName, testClass)); Results verify = kieContainer.verify(); List<Message> kie_messages = verify.getMessages(); LOG.debug("{}", kie_messages); List<DMNMessage> dmnMessages = kie_messages.stream() .filter(DMNMessage.class::isInstance) .map(DMNMessage.class::cast) .collect(Collectors.toList()); assertThat(dmnMessages.isEmpty(), is(false)); return dmnMessages; }
@Test public void testAPIUsage() { // DROOLS-3335 Broken DMN resource should inhibit KJAR and report KieBuilder message final KieServices ks = KieServices.Factory.get(); final KieContainer kieContainer = DMNRuntimeUtil.getKieContainerIgnoringErrors(ks.newReleaseId("org.kie", "dmn-test-" + UUID.randomUUID(), "1.0"), ks.getResources().newClassPathResource("incomplete_expression.dmn", this.getClass()), ks.getResources().newClassPathResource("duff.drl", this.getClass())); Results verify = kieContainer.verify(); List<Message> kie_messages = verify.getMessages(); kie_messages.forEach(m -> LOG.info("{}", m)); assertThat(kie_messages.size(), is(3)); assertThat(kie_messages.stream().filter(m -> m.getPath().equals("duff.drl")).count(), is(2L)); List<DMNMessage> dmnMessages = kie_messages.stream() .filter(DMNMessage.class::isInstance) .map(DMNMessage.class::cast) .collect(Collectors.toList()); assertThat(dmnMessages.size(), is(1)); DMNMessage dmnMessage = dmnMessages.get(0); assertThat(dmnMessage.getSourceId(), is("_c990c3b2-e322-4ef9-931d-79bcdac99686")); assertThat(dmnMessage.getMessageType(), is(DMNMessageType.ERR_COMPILING_FEEL)); assertThat(dmnMessage.getPath(), is("incomplete_expression.dmn")); }
@Test public void testKieBaseCompilation() { KieServices ks = KieServices.Factory.get(); Results rs = ks.getKieClasspathContainer().verify(); System.out.println( rs.getMessages() ); assertFalse( rs.hasMessages( Message.Level.ERROR ) ); }