KieSession kieSession = kieManufacturerBasedPricingContainer.newKieSession(); kieSession.insert(inputParameters); kieSession.fireAllRules();
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(); }
KieMavenRepository repository = KieMavenRepository.getKieMavenRepository(); repository.resolveArtifact(releaseId.toExternalForm()); KieServices ks = KieServices.Factory.get(); KieContainer kieContainer = ks.newKieContainer(releaseId); throw new IllegalStateException("Cannot find kbase, either it does not exist or there are multiple default kbases in kmodule.xml"); KieBase kbase = kieContainer.getKieBase(kbaseName); contaxtParams.put("classLoader", kieContainer.getClassLoader()); .classLoader(kieContainer.getClassLoader()) .registerableItemsFactory(new KModuleRegisterableItemsFactory(kieContainer, ksessionName));
solutionDescriptor.checkIfProblemFactsExist(); KieSessionModel kieSessionModel = kieContainer.getKieSessionModel(ksessionName); if (kieSessionModel == null) { if (ksessionName == null) { KieBase kieBase = kieContainer.newKieBase(kbaseName, null); checkIfGlobalScoreHolderExists(kieBase); createRuleToConstraintWeightExtractorMap(kieBase);
private static RuntimeEnvironmentBuilder setupClasspathKmoduleBuilder( KieContainer kieContainer, String kbaseName, String ksessionName ) { if (StringUtils.isEmpty(kbaseName)) { KieBaseModel defaultKBaseModel = ((KieContainerImpl)kieContainer).getKieProject().getDefaultKieBaseModel(); if (defaultKBaseModel != null) { kbaseName = defaultKBaseModel.getName(); } else { kbaseName = DEFAULT_KBASE_NAME; } } InternalKieModule module = (InternalKieModule) ((KieContainerImpl)kieContainer).getKieModuleForKBase(kbaseName); if (module == null) { throw new IllegalStateException("Cannot find kbase with name " + kbaseName); } KieBase kbase = kieContainer.getKieBase(kbaseName); return getDefault() .knowledgeBase(kbase) .classLoader(kieContainer.getClassLoader()) .registerableItemsFactory(new KModuleRegisterableItemsFactory(kieContainer, ksessionName)); }
@Test public void testWildcardImportForTypeField() throws Exception { // DROOLS-348 String drl = "import java.util.*\n" + "declare MyType\n" + " l : List\n" + "end\n"; KieServices ks = KieServices.Factory.get(); KieFileSystem kfs = ks.newKieFileSystem().write( "src/main/resources/r1.drl", drl ); ks.newKieBuilder( kfs ).buildAll(); KieSession ksession = ks.newKieContainer( ks.getRepository().getDefaultReleaseId() ).newKieSession(); }
@Test public void testHelloWorldWithPackages() throws Exception { KieServices ks = KieServices.Factory.get(); ReleaseId releaseId = ks.newReleaseId("org.kie", "hello-world", "1.0"); KieFileSystem kfs = ks.newKieFileSystem() .generateAndWritePomXML( releaseId ) .write( "src/main/resources/KBase1/org/pkg1/r1.drl", createDrl( "R1" ) ) .write( "src/main/resources/KBase1/org/pkg2/r2.drl", createDrl( "R2" ) ) .writeKModuleXML( createKieProjectWithPackages( ks, "org.pkg1" ).toXML() ); ks.newKieBuilder( kfs ).buildAll(); KieSession ksession = ks.newKieContainer(releaseId).newKieSession("KSession1"); ksession.insert(new Message("Hello World")); int count = ksession.fireAllRules(); assertEquals( 1, count ); }
@Test public void testAutomaticallySwitchFromReteOOToPhreak() { String str = "rule R when then end\n"; KieServices ks = KieServices.Factory.get(); KieFileSystem kfs = ks.newKieFileSystem(); kfs.write( "src/main/resources/rule.drl", str ); KieBuilder kbuilder = ks.newKieBuilder( kfs ); kbuilder.buildAll(); assertEquals( 0, kbuilder.getResults().getMessages().size() ); KieBase kbase = ks.newKieContainer( kbuilder.getKieModule().getReleaseId() ).getKieBase(); KieSession ksession = kbase.newKieSession(); ksession.fireAllRules(); }
@Test public void testWireChannel() throws Exception { KieServices ks = KieServices.Factory.get(); ReleaseId releaseId = ks.newReleaseId("org.kie", "listener-test", "1.0"); build(ks, releaseId); KieContainer kieContainer = ks.newKieContainer(releaseId); KieSession ksession = kieContainer.newKieSession(); ksession.fireAllRules(); assertEquals(1, channelMessages.size()); assertEquals("Test Message", channelMessages.get(0)); }
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();
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);
KieServices ks = KieServices.Factory.get(); KieModuleModel kproj = ks.newKieModuleModel(); .setType( KieSessionModel.KieSessionType.STATELESS ); KieContainer kc = ks.newKieContainer( containerId, releaseId1 ); KieBase kiebase = kc.getKieBase( KBASE1 ); KieSession ksession = kc.newKieSession(KSESSION1, sessionConf); assertFalse( aggrMonitor.getStatsByRule().containsKey("ND2") ); checkStatsByRule(aggrMonitor,"ND2",1,0,1); KieSession ksession2 = kc.newKieSession(KSESSION1, sessionConf); StatelessKieSession stateless = kc.newStatelessKieSession(KSESSION2, sessionConf); checkStatsByRule(aggrMonitor2,"ND2",2,0,2); StatelessKieSession stateless2 = kc.newStatelessKieSession(KSESSION2, sessionConf); LOG.debug(stateless + " " + stateless2); checkTotalSessions(aggrMonitor2, 2); kc.dispose(); assertEquals(0, mbserver.queryNames(new ObjectName("org.kie:kcontainerId="+ObjectName.quote(containerId)+",*"), null).size()); assertEquals(1, mbserver.queryNames(new ObjectName("org.kie:kcontainerId="+ObjectName.quote("kc2")+",*"), null).size());
@Test public void testClassLoaderStore() throws Exception { // DROOLS-1766 String drl = "package org; declare Person name : String end"; KieServices ks = KieServices.Factory.get(); KieFileSystem kfs = ks.newKieFileSystem().write( "src/main/resources/r1.drl", drl ); ks.newKieBuilder( kfs ).buildAll(); KieContainer kcontainer = ks.newKieContainer(ks.getRepository().getDefaultReleaseId()); KieProject kieProject = (( KieContainerImpl ) kcontainer).getKieProject(); ResultsImpl messages = kieProject.verify(); assertSame( kieProject.getClassLoader(), kcontainer.getClassLoader() ); ProjectClassLoader pcl = (( ProjectClassLoader ) kieProject.getClassLoader()); assertNotNull( pcl.getStore().get("org/Person.class") ); }
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() ); }
@Before public void initialization() { KieFileSystem kfs = KieServices.Factory.get().newKieFileSystem(); kfs.write("src/main/resources/kbase1/window_test.drl", drl); KieBuilder kbuilder = KieServices.Factory.get().newKieBuilder(kfs); kbuilder.buildAll(); List<Message> res = kbuilder.getResults().getMessages(Level.ERROR); assertEquals(res.toString(), 0, res.size()); KieBaseConfiguration kbconf = KnowledgeBaseFactory .newKnowledgeBaseConfiguration(); kbconf.setOption(EventProcessingOption.STREAM); KieBase kbase = KieServices.Factory.get() .newKieContainer(kbuilder.getKieModule().getReleaseId()) .newKieBase(kbconf); KieSessionConfiguration ksconfig = KnowledgeBaseFactory .newKnowledgeSessionConfiguration(); ksconfig.setOption(ClockTypeOption.get("pseudo")); ksession = kbase.newKieSession(ksconfig, null); clock = ksession.getSessionClock(); }
@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" ) ); } }
@Test public void testDeclarativeKieConsoleLoggerStateless() throws Exception { String drl = "package org.drools.integrationtests\n" + "import org.drools.compiler.Message;\n" + "rule \"Hello World\"\n" + " when\n" + " m : Message( myMessage : message )\n" + " then\n" + "end"; KieServices ks = KieServices.Factory.get(); KieModuleModel kproj = ks.newKieModuleModel(); kproj.newKieBaseModel("KBase1") .newKieSessionModel("KSession1") .setType(KieSessionModel.KieSessionType.STATELESS) .setConsoleLogger("logger"); KieFileSystem kfs = ks.newKieFileSystem(); kfs.writeKModuleXML(kproj.toXML()); kfs.write("src/main/resources/KBase1/rule.drl", drl); KieModule kieModule = ks.newKieBuilder(kfs).buildAll().getKieModule(); KieContainer kieContainer = ks.newKieContainer(kieModule.getReleaseId()); StatelessKieSession ksession = kieContainer.newStatelessKieSession("KSession1"); ksession.execute( new Message("Hello World") ); KieRuntimeLogger logger = ksession.getLogger(); assertNotNull(logger); logger.close(); }
@Test public void testKJarUpgradeWithJavaClass() throws Exception { KieServices ks = KieServices.Factory.get(); ReleaseId releaseId1 = ks.newReleaseId( "org.kie", "test-upgrade-java", "1.0.0" ); Resource javaResource = ResourceFactory.newByteArrayResource(javaSrc.getBytes()).setResourceType( ResourceType.JAVA ) .setSourcePath( "org/drools/compiler/test/PersonObject.java" ); kieContainer = ks.newKieContainer( km.getReleaseId() ); ksession = kieContainer.newKieSession(); Class<?> clazz = kieContainer.getClassLoader().loadClass("org.drools.compiler.test.PersonObject"); Object person = clazz.newInstance(); ksession.insert( person ); ksession.fireAllRules(); assertEquals("Person from version 1", personId); kieContainer.updateToVersion(releaseId2); assertEquals(releaseId2, kieContainer.getReleaseId()); ksession = kieContainer.newKieSession(); person = kieContainer.getClassLoader().loadClass("org.drools.compiler.test.PersonObject").newInstance(); ksession.insert( person ); ksession.fireAllRules();
KieSession kieSession = this.kieContainer.newKieSession(); try { context.loadTaskVariables(task); kieSession.insert(task); kieSession.fireAllRules(); Set<Assignment> assignments = new TreeSet<>(); String queryName = System.getProperty("org.jbpm.task.assignment.rules.query"); if (queryName != null) { logger.debug("Query {} is going to be used to retrieve results from working memory", queryName); QueryResults results = kieSession.getQueryResults(queryName); results.forEach(row -> assignments.add((Assignment)row.get("assignment")));
@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" ); }