KieServices kieServices = KieServices.Factory.get(); KieResources kieResources = kieServices.getResources(); KieFileSystem kieFileSystem = kieServices.newKieFileSystem(); if (!ConfigUtils.isEmptyCollection(scoreDrlList)) { ClassLoader actualClassLoader = configContext.determineActualClassLoader(); kieFileSystem.write(kieResources.newClassPathResource(scoreDrl, "UTF-8", actualClassLoader)); + ") does not exist."); kieFileSystem.write(kieResources.newFileSystemResource(scoreDrlFile, "UTF-8")); KieModuleModel kmodel = kieServices.newKieModuleModel() .setConfigurationProperty(PropertySpecificOption.PROPERTY_NAME, PropertySpecificOption.ALLOWED.toString()); kieFileSystem.writeKModuleXML(kmodel.toXML()); logger.warn("There are warning in a score DRL:\n{}", results); kieContainer = kieServices.newKieContainer(kieBuilder.getKieModule().getReleaseId()); KieBaseConfiguration kieBaseConfiguration = kieServices.newKieBaseConfiguration(); KieBase kieBase = kieContainer.newKieBase(kieBaseConfiguration); if (BooleanUtils.isTrue(generateDroolsTestOnError)) { return new TestGenLegacyDroolsScoreDirectorFactory<>(solutionDescriptor, kieBase, scoreDrlList, scoreDrlFileList);
@Test public void testHelloWorldWithEmptyFile() throws Exception { String drl = createDrl("R1"); KieServices ks = KieServices.Factory.get(); KieFileSystem kfs = ks.newKieFileSystem() .write("src/main/resources/r1.drl", drl) .write( "src/main/resources/empty.drl", ks.getResources().newInputStreamResource( new ByteArrayInputStream( new byte[0] ) ) ); ks.newKieBuilder( kfs ).buildAll(); KieSession ksession = ks.newKieContainer( ks.getRepository().getDefaultReleaseId() ).newKieSession(); ksession.insert(new Message("Hello World")); int count = ksession.fireAllRules(); assertEquals( 1, count ); }
" // do something;\n" + "end"; KieServices ks = KieServices.Factory.get(); KieFileSystem kfs = ks.newKieFileSystem(); final Resource drl = ks.getResources().newByteArrayResource( drlString.getBytes() ).setTargetPath("org/jboss/brms/lifecycle.drl"); kfs.write(drl); KieModuleModel kmoduleModel = ks.newKieModuleModel(); kmoduleModel.newKieBaseModel("defaultKBase") .addPackage("*") .setClockType(ClockTypeOption.get("pseudo")); kfs.writeKModuleXML(kmoduleModel.toXML()); KieBuilder builder = ks.newKieBuilder(kfs).buildAll(); assertEquals(0, builder.getResults().getMessages().size()); this.kieSession = ks.newKieContainer(ks.getRepository() .getDefaultReleaseId()).newKieSession();
"end\n"; KieServices ks = KieServices.Factory.get(); ReleaseId releaseId = ks.newReleaseId("org.kie", "cache-accumulate", "1.0"); KieFileSystem kfs = ks.newKieFileSystem() .generateAndWritePomXML(releaseId) .write("src/main/resources/KBase1/org/pkg1/r1.drl", drl1) .writeKModuleXML(createKieProjectWithPackagesAnd2KieBases(ks).toXML()); ks.newKieBuilder( kfs ).buildAll(); InternalKieModule kieModule = (InternalKieModule) ks.getRepository().getKieModule( releaseId ); assertNotNull( file ); Resource jarRes = ks.getResources().newByteArrayResource( jar ); KieModule km = ks.getRepository().addKieModule( jarRes ); KieSession ksession = ks.newKieContainer( km.getReleaseId() ).newKieSession("KSession1"); ksession.insert(new String("Hello World")); assertEquals( 1, ksession.fireAllRules() );
"end\n"; KieServices ks = KieServices.Factory.get(); KieFileSystem kfs = ks.newKieFileSystem().write( "src/main/resources/r1.drl", drl ); ks.newKieBuilder( kfs ).buildAll(); ReleaseId releaseId = ks.getRepository().getDefaultReleaseId(); InternalKieModule kieModule = (InternalKieModule) ks.getRepository().getKieModule( releaseId ); byte[] jar = kieModule.getBytes(); assertNotNull( file ); Resource jarRes = ks.getResources().newByteArrayResource( jar ); KieModule km = ks.getRepository().addKieModule( jarRes ); KieContainer kc = ks.newKieContainer( km.getReleaseId() ); KieBase kbase = kc.getKieBase(); FactType type = kbase.getFactType( "org.drools.compiler", "X" ); FactField foo = type.getField( "foo" ); foo.set( x, "Hello World" ); KieSession ksession = kc.newKieSession(); ksession.insert(x); int count = ksession.fireAllRules(); assertEquals( 1, count );
@Before public void setUp() { KieFileSystem kfs = KieServices.Factory.get().newKieFileSystem(); kfs.write(KieServices.Factory.get().getResources() .newClassPathResource(DELETE_TEST_DRL, DeleteTest.class)); KieBuilder kbuilder = KieServices.Factory.get().newKieBuilder(kfs); kbuilder.buildAll(); List<Message> res = kbuilder.getResults().getMessages(Level.ERROR); Assertions.assertThat(res).isEmpty(); KieBase kbase = KieServices.Factory.get() .newKieContainer(kbuilder.getKieModule().getReleaseId()) .getKieBase(); ksession = kbase.newKieSession(); }
KieServices ks = KieServices.Factory.get(); KieFileSystem kfs = ks.newKieFileSystem(); kfs.generateAndWritePomXML( ks.newReleaseId( "test", "foo", "1.0" ) ); KieModuleModel km = ks.newKieModuleModel(); km.newKieBaseModel( "rules" ) .addPackage( "org.drools.compiler.test2" ) .addPackage( "org.drools.compiler.test1" ); kfs.writeKModuleXML( km.toXML() ); KieResources kr = ks.getResources(); Resource r1 = kr.newByteArrayResource( pkg1.getBytes() ) .setResourceType( ResourceType.DRL ) .setSourcePath( "org/drools/compiler/test1/p1.drl" ); Resource r2 = kr.newByteArrayResource( pkg2.getBytes() ) .setResourceType( ResourceType.DRL ) .setSourcePath( "org/drools/compiler/test2/p2.drl" ); kfs.write( r1 ); kfs.write( r2 ); KieBuilder builder = ks.newKieBuilder( kfs ); builder.buildAll(); assertEquals( Collections.emptyList(), builder.getResults().getMessages( Message.Level.ERROR ) ); KieContainer kc = ks.newKieContainer(builder.getKieModule().getReleaseId()); FactType ft = kc.getKieBase( "rules" ).getFactType( "org.drools.compiler.test2", "Child" );
private KieBuilder build(String drl) { KieServices kieServices = KieServices.Factory.get(); KieFileSystem kfs = kieServices.newKieFileSystem(); kfs.write( kieServices.getResources().newByteArrayResource( drl.getBytes() ) .setSourcePath( "test.drl" ) .setResourceType( ResourceType.DRL ) ); KieBuilder kieBuilder = kieServices.newKieBuilder( kfs ); kieBuilder.buildAll(); return kieBuilder; }
"}"; final KieServices ks = KieServices.Factory.get(); final ReleaseId kjarReleaseId = ks.newReleaseId("org.kie.dmn.core.classloader", "testClassloaderFunctionInvocation", UUID.randomUUID().toString()); final ReleaseId commonsMathGAV = ks.newReleaseId("org.apache.commons", "commons-math3", "3.6.1"); final KieFileSystem kfs = ks.newKieFileSystem(); kfs.write("src/main/java/com/acme/functions/StandardDeviation.java", javaSource); kfs.write(ks.getResources().newClassPathResource("Standard Deviation.dmn", this.getClass())); kfs.writePomXML(getPom(kjarReleaseId, commonsMathGAV)); final KieBuilder kieBuilder = ks.newKieBuilder(kfs).buildAll(); assertTrue(kieBuilder.getResults().getMessages().toString(), kieBuilder.getResults().getMessages().isEmpty()); final KieContainer container = ks.newKieContainer(kjarReleaseId); final DMNRuntime runtime = container.newKieSession().getKieRuntime(DMNRuntime.class); final DMNModel dmnModel = runtime.getModel("http://www.trisotech.com/dmn/definitions/_48c4b6e2-25da-44bc-97b2-1e842ff28c71", "Standard Deviation"); assertThat(dmnModel, notNullValue());
" end"; final KieServices kieServices = KieServices.get(); final Resource drlResource = kieServices.getResources().newByteArrayResource( rule.getBytes(StandardCharsets.UTF_8.name()), StandardCharsets.UTF_8.name()); drlResource.setResourceType(ResourceType.DRL); drlResource.setTargetPath("test.drl"); final KieFileSystem kieFileSystem = kieServices.newKieFileSystem(); kieFileSystem.write(drlResource); final KieBuilder kieBuilder = kieServices.newKieBuilder(kieFileSystem); kieBuilder.buildAll(); final KieBase kieBase = kieServices.newKieContainer(kieBuilder.getKieModule().getReleaseId()).getKieBase(); assertThat(kieSession.fireAllRules()).isEqualTo(1);
KieServices ks = KieServices.Factory.get(); KieFileSystem kFileSystem = ks.newKieFileSystem(); kFileSystem.write("src/main/resources/" + ruleFile, ks.getResources().newFileSystemResource(new File(ruleFile))); KieBuilder kbuilder = ks.newKieBuilder(kFileSystem); kbuilder.buildAll(); if (kbuilder.getResults().hasMessages(org.kie.api.builder.Message.Level.ERROR)) { LOG.warn("Unable to initialize Drools engine: {}", kbuilder.getResults().getMessages(Level.ERROR)); throw new IllegalStateException("Unable to initialize Drools engine: " + kbuilder.getResults().getMessages(Level.ERROR)); ruleBaseConfig.setEventProcessingMode(EventProcessingOption.STREAM); m_kieBase = kContainer.newKieBase(ruleBaseConfig); m_kieSession = m_kieBase.newKieSession(); m_kieSession.setGlobal("engine", this); m_kieSession.setGlobal(global.getName(), global.constructValue(ctx)); Logging.putPrefix(getName()); LOG.debug("Starting task thread for {}", getName()); m_kieSession.fireUntilHalt(); LOG.debug("Stopping task thread for {}", getName()); }, "FireTask-" + getName()).start();
KieServices kieServices = KieServices.Factory.get(); ReleaseId releaseId = KieServices.Factory.get().newReleaseId("org.overlord.rtgov.tmp", getRuleName(), String.valueOf(_count.getAndIncrement())); KieFileSystem kieFileSystem = kieServices.newKieFileSystem().generateAndWritePomXML(releaseId); kieFileSystem.write(kieServices.getResources().newClassPathResource(droolsRuleBase)); KieBuilder kieBuilder = kieServices.newKieBuilder(kieFileSystem).buildAll(); Results results = kieBuilder.getResults(); properties.setProperty(DROOLS_EVENT_PROCESSING_MODE, EVENT_PROCESSING_MODE_STREAM); KieBaseConfiguration kieBaseConfiguration = KieServices.Factory.get().newKieBaseConfiguration(properties); return (kieContainer.newKieBase(kieBaseConfiguration)); return kieContainer.getKieBase();
@Test public void testAskTypeCheckWithGlobalEnvVariable() { System.setProperty(RuntimeTypeCheckOption.PROPERTY_NAME, "true"); // do NOT use the DMNRuntimeUtil as that enables typeSafe check override for runtime. final KieContainer kieContainer = KieHelper.getKieContainer(ks.newReleaseId("org.kie", "dmn-test-" + UUID.randomUUID(), "1.0"), ks.getResources().newClassPathResource("forTypeCheckTest.dmn", this.getClass())); final DMNRuntime runtime = kieContainer.newKieSession().getKieRuntime(DMNRuntime.class); assertPerformTypeCheck(runtime); System.clearProperty(RuntimeTypeCheckOption.PROPERTY_NAME); }
@Test public void testDuplicateXLSResources() throws Exception { KieServices ks = KieServices.Factory.get(); KieFileSystem kfs = ks.newKieFileSystem(); InputStream in1 = null; InputStream in2 = null; try { //Add XLS decision table in1 = this.getClass().getResourceAsStream( "incrementalBuild.dtable.xls" ); kfs.write( "src/main/resources/incrementalBuild1.dtable.xls", KieServices.Factory.get().getResources().newInputStreamResource( in1 ) ); //Add the same XLS decision table again as a different resource in2 = this.getClass().getResourceAsStream( "incrementalBuild.dtable.xls" ); kfs.write( "src/main/resources/incrementalBuild2.dtable.xls", KieServices.Factory.get().getResources().newInputStreamResource( in2 ) ); //Check errors on a full build List<Message> messages = ks.newKieBuilder( kfs ).buildAll().getResults().getMessages(); assertFalse( messages.isEmpty() ); } finally { if ( in1 != null ) { in1.close(); } if ( in2 != null ) { in2.close(); } } }
@Test public void testFromClonedKiePackage() { 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)); }
@Test(expected = IllegalStateException.class) public void testAPIUsageSnippetForDocumentation() { KieServices ks = KieServices.Factory.get(); ReleaseId releaseId = ks.newReleaseId("org.kie", "dmn-test-" + UUID.randomUUID(), "1.0"); Resource dmnResource = ks.getResources().newClassPathResource("incomplete_expression.dmn", this.getClass()); KieFileSystem kfs = ks.newKieFileSystem() .generateAndWritePomXML(releaseId) .write(dmnResource); KieBuilder kieBuilder = ks.newKieBuilder(kfs) .buildAll(); Results results = kieBuilder.getResults(); if (results.hasMessages(Message.Level.ERROR)) { throw new IllegalStateException(results.getMessages(Message.Level.ERROR).toString()); } } }
@Test public void test_as_kie_wb_common_services_backend_Builder() throws Exception { final KieServices ks = KieServices.Factory.get(); final ReleaseId v100 = ks.newReleaseId("org.kie", "dmn-test", "1.0.0"); final KieModule kieModule = KieHelper.createAndDeployJar(ks, v100, wrapWithDroolsModelResource(ks, ks.getResources().newClassPathResource("0001-input-data-string.dmn", this.getClass()))); final KieContainer kieContainer = ks.newKieContainer(v100); final KieSession kieSession = kieContainer.newKieSession(); final DMNRuntime runtime = kieSession.getKieRuntime(DMNRuntime.class); Assert.assertNotNull(runtime); assertThat(runtime.getModels(), hasSize(1)); check0001_input_data_string(runtime); // the below is performed by the WB at: https://github.com/kiegroup/kie-wb-common/blob/master/kie-wb-common-services/kie-wb-common-services-backend/src/main/java/org/kie/workbench/common/services/backend/builder/core/Builder.java#L592 final KieProject kieProject = new KieModuleKieProject((InternalKieModule) kieModule, null); final KieContainer kieContainer2 = new KieContainerImpl(kieProject, ks.getRepository(), v100); final KieSession kieSession2 = kieContainer2.newKieSession(); // exhibit the issue. final DMNRuntime runtime2 = kieSession2.getKieRuntime(DMNRuntime.class); Assert.assertNotNull(runtime2); assertThat(runtime2.getModels(), hasSize(1)); check0001_input_data_string(runtime2); }
@Test public void testDuplicateModel() { final KieServices ks = KieServices.Factory.get(); final KieFileSystem kfs = ks.newKieFileSystem(); kfs.write(ks.getResources().newClassPathResource("0001-input-data-string.dmn", this.getClass())); kfs.write(ks.getResources().newClassPathResource("duplicate.0001-input-data-string.dmn", this.getClass())); final Results results = ks.newKieBuilder(kfs ).buildAll().getResults(); LOG.info("buildAll() completed."); results.getMessages(Level.ERROR).forEach( e -> LOG.error("{}", e)); assertTrue( results.getMessages(Level.ERROR).size() > 0 ); }
@Test public void testGetDefaultKieSessionModelEmptyKmodule() { KieServices kieServices = KieServices.Factory.get(); String drl = "package org.drools.test\n" + "rule R1 when\n" + " $m : Object()\n" + "then\n" + "end\n"; Resource resource = kieServices.getResources().newReaderResource( new StringReader( drl), "UTF-8" ); resource.setTargetPath("org/drools/test/rules.drl"); String kmodule = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<kmodule xmlns=\"http://www.drools.org/xsd/kmodule\">\n" + "</kmodule>"; // Create an in-memory jar for version 1.0.0 ReleaseId releaseId = kieServices.newReleaseId("org.kie", "test-testGetDefaultKieSessionModelEmptyKmodule", "1.0.0"); createAndDeployJar(kieServices, kmodule, releaseId, resource); KieContainer kieContainer = kieServices.newKieContainer(releaseId); KieSessionModel sessionModel = kieContainer.getKieSessionModel(null); assertNotNull(sessionModel); }
@Test public void testKieMarshaller() throws Exception { 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); KieSession kieSession = kieContainer.newKieSession(); KieBase kieBase = kieSession.getKieBase(); DMNRuntime runtime = kieSession.getKieRuntime(DMNRuntime.class); Assert.assertNotNull(runtime); assertThat(runtime.getModels(), hasSize(1)); check0001_input_data_string(runtime); KieMarshallers kieMarshallers = ks.getMarshallers(); Marshaller marshaller = kieMarshallers.newMarshaller(kieBase); ByteArrayOutputStream baos = new ByteArrayOutputStream(); marshaller.marshall(baos, kieSession); ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); baos.close(); kieSession = marshaller.unmarshall(bais); bais.close(); runtime = kieSession.getKieRuntime(DMNRuntime.class); Assert.assertNotNull(runtime); assertThat(runtime.getModels(), hasSize(1)); check0001_input_data_string(runtime); }