KieServices kieServices = KieServices.Factory.get(); KieResources kieResources = kieServices.getResources(); KieFileSystem kieFileSystem = kieServices.newKieFileSystem(); if (!ConfigUtils.isEmptyCollection(scoreDrlList)) { ClassLoader actualClassLoader = configContext.determineActualClassLoader(); Results results = kieBuilder.getResults(); if (results.hasMessages(Message.Level.ERROR)) { throw new IllegalStateException("There are errors in a score DRL:\n" + results.toString()); } else if (results.hasMessages(Message.Level.WARNING)) { logger.warn("There are warning in a score DRL:\n{}", results);
@Test public void testTooManyPositionalArguments() throws InstantiationException, IllegalAccessException { // DROOLS-559 String drl = "package org.test;\n" + "global java.util.List names;\n" + "declare Person\n" + " name : String\n" + " age : int\n" + "end\n" + "rule R when \n" + " $p : Person( \"Mark\", 37, 42; )\n" + "then\n" + " names.add( $p.getName() );\n" + "end\n"; KieBuilder kieBuilder = build(drl); assertTrue( kieBuilder.getResults().hasMessages( Message.Level.ERROR ) ); }
protected KieSession getSessionFromString( String drlString, KieBaseConfiguration kbConf ) { KieHelper kieHelper = new KieHelper(); kieHelper.addContent( drlString, ResourceType.DRL ); Results res = kieHelper.verify(); if ( res.hasMessages( Message.Level.ERROR ) ) { fail( res.getMessages( Message.Level.ERROR ).toString() ); } if ( kbConf == null ) { kbConf = KieServices.Factory.get().newKieBaseConfiguration(); } kbConf.setOption( EqualityBehaviorOption.EQUALITY ); KieBase kieBase = kieHelper.build( kbConf ); KieSessionConfiguration ksConf = KnowledgeBaseFactory.newKnowledgeSessionConfiguration(); ((SessionConfiguration) ksConf).setBeliefSystemType( BeliefSystemType.DEFEASIBLE ); return kieBase.newKieSession( ksConf, null ); }
protected KieBase createKnowledgeBaseFromResources(Resource... process) throws Exception { KieServices ks = KieServices.Factory.get(); KieRepository kr = ks.getRepository(); if (process.length > 0) { KieFileSystem kfs = ks.newKieFileSystem(); for (Resource p : process) { kfs.write(p); } KieBuilder kb = ks.newKieBuilder(kfs); kb.buildAll(); // kieModule is automatically deployed to KieRepository // if successfully built. if (kb.getResults().hasMessages(Level.ERROR)) { throw new RuntimeException("Build Errors:\n" + kb.getResults().toString()); } } KieContainer kContainer = ks.newKieContainer(kr.getDefaultReleaseId()); return kContainer.getKieBase(); }
@Test public void testOutOfRangePositions() throws InstantiationException, IllegalAccessException { // DROOLS-559 String drl = "package org.test;\n" + "global java.util.List names;\n" + "declare Person\n" + " name : String @position(3)\n" + " age : int @position(1)\n" + "end\n" + "rule R when \n" + " $p : Person( 37, \"Mark\"; )\n" + "then\n" + " names.add( $p.getName() );\n" + "end\n"; KieBuilder kieBuilder = build(drl); assertTrue( kieBuilder.getResults().hasMessages( Message.Level.ERROR ) ); }
@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 ) ); }
protected KieBase createKnowledgeBaseFromResources(Resource... cases) throws Exception { KieServices ks = KieServices.Factory.get(); KieRepository kr = ks.getRepository(); if (cases.length > 0) { KieFileSystem kfs = ks.newKieFileSystem(); for (Resource c : cases) { kfs.write(c); } KieBuilder kb = ks.newKieBuilder(kfs); kb.buildAll(); // kieModule is automatically deployed to KieRepository // if successfully built. if (kb.getResults().hasMessages(Level.ERROR)) { throw new RuntimeException("Build Errors:\n" + kb.getResults().toString()); } } KieContainer kContainer = ks.newKieContainer(kr.getDefaultReleaseId()); return kContainer.getKieBase(); } }
@Test public void testDuplicatedPositions() throws InstantiationException, IllegalAccessException { // DROOLS-559 String drl = "package org.test;\n" + "global java.util.List names;\n" + "declare Person\n" + " name : String @position(1)\n" + " age : int @position(1)\n" + "end\n" + "rule R when \n" + " $p : Person( 37, \"Mark\"; )\n" + "then\n" + " names.add( $p.getName() );\n" + "end\n"; KieBuilder kieBuilder = build(drl); assertTrue( kieBuilder.getResults().hasMessages( Message.Level.ERROR ) ); }
@Test public void testRemoveAndAddSomething() { final KieServices ks = KieServices.Factory.get(); final KieContainer kieContainer = KieHelper.getKieContainer( ks.newReleaseId("org.kie", "dmn-test", "1.0.0"), wrapWithDroolsModelResource(ks, ks.getResources().newClassPathResource("0001-input-data-string.dmn", this.getClass()))); DMNRuntime runtime = kieContainer.newKieSession().getKieRuntime(DMNRuntime.class); Assert.assertNotNull(runtime); assertThat(runtime.getModels(), hasSize(1)); check0001_input_data_string(runtime); final ReleaseId v101 = ks.newReleaseId("org.kie", "dmn-test", "1.0.1"); KieHelper.createAndDeployJar(ks, v101, wrapWithDroolsModelResource(ks, ks.getResources().newClassPathResource("0001-input-data-string-itIT.dmn", this.getClass()))); final Results updateResults = kieContainer.updateToVersion(v101); assertThat(updateResults.hasMessages(Level.ERROR), is(false)); runtime = kieContainer.newKieSession().getKieRuntime(DMNRuntime.class); Assert.assertNotNull(runtime); assertThat(runtime.getModels(), hasSize(1)); final DMNContext dmnContext2 = runtime.newContext(); dmnContext2.set("Full Name", "John Doe"); final DMNResult evaluateAll2 = runtime.evaluateAll(runtime.getModels().get(0), dmnContext2); assertThat(evaluateAll2.getDecisionResultByName("Greeting Message").getResult(), is("Salve John Doe")); }
protected KieBase createKnowledgeBaseFromDisc(String process) throws Exception { KieServices ks = KieServices.Factory.get(); KieRepository kr = ks.getRepository(); KieFileSystem kfs = ks.newKieFileSystem(); if (kb.getResults().hasMessages(Level.ERROR)) { throw new RuntimeException("Build Errors:\n" + kb.getResults().toString()); if (kb.getResults().hasMessages(Level.ERROR)) { throw new RuntimeException("Build Errors:\n" + kb.getResults().toString());
public static byte[] buildKJar(KieServices ks, KieFileSystem kfs, ReleaseId releaseId) { KieBuilder kb = ks.newKieBuilder(kfs).buildAll(); if (kb.getResults().hasMessages(Message.Level.ERROR)) { for (Message result : kb.getResults().getMessages()) { System.out.println(result.getText()); } return null; } InternalKieModule kieModule = (InternalKieModule) ks.getRepository() .getKieModule(releaseId); byte[] jar = kieModule.getBytes(); return jar; }
@Test public void testReplace() { final KieServices ks = KieServices.Factory.get(); final KieContainer kieContainer = KieHelper.getKieContainer( ks.newReleaseId("org.kie", "dmn-test", "1.0.0"), wrapWithDroolsModelResource(ks, ks.getResources().newClassPathResource("0001-input-data-string.dmn", this.getClass()))); DMNRuntime runtime = kieContainer.newKieSession().getKieRuntime(DMNRuntime.class); Assert.assertNotNull(runtime); assertThat(runtime.getModels(), hasSize(1)); check0001_input_data_string(runtime); final ReleaseId v101 = ks.newReleaseId("org.kie", "dmn-test", "1.0.1"); final Resource newClassPathResource = ks.getResources().newClassPathResource("0001-input-data-string-itIT.dmn", this.getClass()); newClassPathResource.setTargetPath("0001-input-data-string.dmn"); KieHelper.createAndDeployJar(ks, v101, wrapWithDroolsModelResource(ks, newClassPathResource)); final Results updateResults = kieContainer.updateToVersion(v101); assertThat(updateResults.hasMessages(Level.ERROR), is(false)); runtime = kieContainer.newKieSession().getKieRuntime(DMNRuntime.class); Assert.assertNotNull(runtime); assertThat(runtime.getModels(), hasSize(1)); final DMNContext dmnContext2 = runtime.newContext(); dmnContext2.set("Full Name", "John Doe"); final DMNResult evaluateAll2 = runtime.evaluateAll(runtime.getModels().get(0), dmnContext2); assertThat(evaluateAll2.getDecisionResultByName("Greeting Message").getResult(), is("Salve John Doe")); }
KieServices kieServices = KieServices.Factory.get(); KieFileSystem kfs = kieServices.newKieFileSystem(); FileInputStream fis = new FileInputStream( pathToSomeDrl ); kfs.write( "src/main/resources/simple.drl", kieServices.getResources().newInputStreamResource( fis ) ); KieBuilder kieBuilder = kieServices.newKieBuilder( kfs ).buildAll(); Results results = kieBuilder.getResults(); if( results.hasMessages( Message.Level.ERROR ) ){ System.out.println( results.getMessages() ); throw new IllegalStateException( "### errors ###" ); } KieContainer kieContainer = kieServices.newKieContainer( kieServices.getRepository().getDefaultReleaseId() ); KieBase kieBase = kieContainer.getKieBase(); KieSession kieSession = kieContainer.newKieSession();
public void createAndTestKieContainer(ReleaseId releaseId, KieBuilder kb, String kBaseName) throws IOException, ClassNotFoundException, InterruptedException { KieServices ks = KieServices.Factory.get(); kb.buildAll(); if ( kb.getResults().hasMessages(Level.ERROR) ) { fail("Unable to build KieModule\n" + kb.getResults( ).toString() ); } KieRepository kr = ks.getRepository(); KieModule kJar = kr.getKieModule(releaseId); assertNotNull( kJar ); KieContainer kContainer = ks.newKieContainer(releaseId); KieBase kBase = kBaseName != null ? kContainer.getKieBase( kBaseName ) : kContainer.getKieBase(); KieSession kSession = kBase.newKieSession(); List list = new ArrayList(); kSession.setGlobal( "list", list ); kSession.fireAllRules(); assertEquals( 1, list.size() ); assertEquals( "org.kie.test.Message", list.get(0).getClass().getName() ); }
@Test public void testReplaceDisposeCreateReplace() { final KieServices ks = KieServices.Factory.get(); assertThat(updateResults.hasMessages(Level.ERROR), is(false)); assertThat(updateResults.hasMessages(Level.ERROR), is(false));
private KieSession kieSession; public void build() throws Exception { KieServices kieServices = KieServices.Factory.get(); KieFileSystem kfs = kieServices.newKieFileSystem(); // for each DRL file, referenced by a plain old path name: FileInputStream fis = new FileInputStream( "simple/simple.drl" ); kfs.write( "src/main/resources/simple.drl", kieServices.getResources().newInputStreamResource( fis ) ); KieBuilder kieBuilder = kieServices.newKieBuilder( kfs ).buildAll(); Results results = kieBuilder.getResults(); if( results.hasMessages( Message.Level.ERROR ) ){ System.out.println( results.getMessages() ); throw new IllegalStateException( "### errors ###" ); } KieContainer kieContainer = kieServices.newKieContainer( kieServices.getRepository().getDefaultReleaseId() ); KieBase kieBase = kieContainer.getKieBase(); kieSession = kieContainer.newKieSession(); }
@Test( expected = UnsupportedOperationException.class ) public void testPreventReflectionAPIsOnJavaClasses() { String drl = "package org.test; " + // existing java class "declare org.drools.compiler.Person " + " @role(event) " + "end \n" + ""; KieBuilder kieBuilder = build(drl); assertFalse( kieBuilder.getResults().hasMessages( Message.Level.ERROR ) ); KieBase kieBase = KieServices.Factory.get().newKieContainer( kieBuilder.getKieModule().getReleaseId() ).getKieBase(); FactType type = kieBase.getFactType( "org.drools.compiler", "Person" ); }
@Test public void testFromClonedKiePackageThenUpgrade() { final KieServices ks = KieServices.Factory.get(); final ReleaseId v100 = ks.newReleaseId("org.kie", "dmn-test", "1.0.0"); KieHelper.createAndDeployJar(ks, v100, wrapWithDroolsModelResource(ks, ks.getResources().newClassPathResource("0001-input-data-string.dmn", this.getClass()))); KieContainer kieContainer = ks.newKieContainer(v100); DMNRuntime runtime = kieContainer.newKieSession().getKieRuntime(DMNRuntime.class); Assert.assertNotNull(runtime); assertThat(runtime.getModels(), hasSize(1)); kieContainer.dispose(); kieContainer = ks.newKieContainer(v100); runtime = kieContainer.newKieSession().getKieRuntime(DMNRuntime.class); Assert.assertNotNull(runtime); assertThat(runtime.getModels(), hasSize(1)); final ReleaseId v101 = ks.newReleaseId("org.kie", "dmn-test", "1.0.1"); final Resource newClassPathResource = ks.getResources().newClassPathResource("0001-input-data-string-itIT.dmn", this.getClass()); newClassPathResource.setTargetPath("0001-input-data-string.dmn"); KieHelper.createAndDeployJar(ks, v101, wrapWithDroolsModelResource(ks, newClassPathResource)); final Results updateResults = kieContainer.updateToVersion(v101); assertThat(updateResults.hasMessages(Level.ERROR), is(false)); runtime = kieContainer.newKieSession().getKieRuntime(DMNRuntime.class); Assert.assertNotNull(runtime); assertThat(runtime.getModels(), hasSize(1)); }
private void testInvalid(final String drl) { final KieServices ks = KieServices.Factory.get(); final KieFileSystem kfs = ks.newKieFileSystem().write( "src/main/resources/r1.drl", drl ); final Results results = ks.newKieBuilder( kfs ).buildAll().getResults(); assertTrue( results.hasMessages( Message.Level.ERROR ) ); }
@Test public void testUnknownField() throws InstantiationException, IllegalAccessException { // DROOLS-546 String drl = "package org.test; " + "declare Pet" + " " + "end \n"; KieBuilder kieBuilder = build(drl); assertFalse( kieBuilder.getResults().hasMessages( Message.Level.ERROR ) ); KieBase kieBase = KieServices.Factory.get().newKieContainer( kieBuilder.getKieModule().getReleaseId() ).getKieBase(); FactType factType = kieBase.getFactType("org.test", "Pet"); Object instance = factType.newInstance(); factType.get(instance, "unknownField"); factType.set(instance, "unknownField", "myValue"); }