@Bean public KieContainer kieShippingDecisionContainer() { KieServices kieServices = KieServices.Factory.get(); KieFileSystem kieFileSystem = kieServices.newKieFileSystem(); kieFileSystem.write(ResourceFactory.newClassPathResource(SHIPPING_DECISION)); KieBuilder kieBuilder = kieServices.newKieBuilder(kieFileSystem); kieBuilder.buildAll(); KieModule kieModule = kieBuilder.getKieModule(); return kieServices.newKieContainer(kieModule.getReleaseId()); }
@Test public void testMainKieModule() { KieServices ks = KieServices.Factory.get(); // Create an in-memory jar for version 1.0.0 ReleaseId releaseId = ks.newReleaseId("org.kie", "test-delete", "1.0.0"); createAndDeployJar( ks, releaseId, createDRL("ruleA") ); KieContainer kieContainer = ks.newKieContainer(releaseId); KieModule kmodule = ((InternalKieContainer) kieContainer).getMainKieModule(); assertEquals( releaseId, kmodule.getReleaseId() ); }
@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" ); }
@Before public void setUp() { final KieFileSystem kfs = KieServices.Factory.get().newKieFileSystem(); kfs.write(KieServices.Factory.get().getResources() .newClassPathResource(UPDATE_TEST_DRL, DeleteTest.class)); final KieBuilder kbuilder = KieServices.Factory.get().newKieBuilder(kfs); kbuilder.buildAll(); final List<Message> res = kbuilder.getResults().getMessages(Message.Level.ERROR); assertEquals(res.toString(), 0, res.size()); final KieBase kbase = KieServices.Factory.get() .newKieContainer(kbuilder.getKieModule().getReleaseId()) .getKieBase(); ksession = kbase.newKieSession(); }
protected ReleaseId createKJar(String... pairs) throws IOException { KieServices ks = KieServices.Factory.get(); KieModuleModel kproj = ks.newKieModuleModel(); KieFileSystem kfs = ks.newKieFileSystem(); for ( int i = 0; i < pairs.length; i += 2 ) { String id = pairs[i]; String rule = pairs[i + 1]; kfs.write( "src/main/resources/" + id.replaceAll( "\\.", "/" ) + "/rule" + i + ".drl", rule ); KieBaseModel kBase1 = kproj.newKieBaseModel( id ) .setEqualsBehavior( EqualityBehaviorOption.EQUALITY ) .setEventProcessingMode( EventProcessingOption.STREAM ) .addPackage( id ); KieSessionModel ksession1 = kBase1.newKieSessionModel(id + ".KSession1") .setType(KieSessionModel.KieSessionType.STATEFUL) .setClockType(ClockTypeOption.get("pseudo")); } kfs.writeKModuleXML(kproj.toXML()); // buildAll() automatically adds the module to the kieRepository KieBuilder kieBuilder = ks.newKieBuilder(kfs).buildAll(); assertTrue(kieBuilder.getResults().getMessages().isEmpty()); KieModule kieModule = kieBuilder.getKieModule(); return kieModule.getReleaseId(); }
@Test public void testLoadKjarFromClasspath() { // DROOLS-1335 ClassLoader cl = Thread.currentThread().getContextClassLoader(); URLClassLoader urlClassLoader = new URLClassLoader( new URL[]{this.getClass().getResource( "/kie-project-simple-1.0.0.jar" )} ); Thread.currentThread().setContextClassLoader( urlClassLoader ); try { KieServices ks = KieServices.Factory.get(); KieRepository kieRepository = ks.getRepository(); ReleaseId releaseId = ks.newReleaseId( "org.test", "kie-project-simple", "1.0.0" ); KieModule kieModule = kieRepository.getKieModule( releaseId ); assertNotNull( kieModule ); assertEquals( releaseId, kieModule.getReleaseId() ); } finally { Thread.currentThread().setContextClassLoader( cl ); } }
@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"); }
@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(); }
@Bean public KieContainer kieManufacturerBasedPricingContainer() { KieServices kieServices = KieServices.Factory.get(); KieFileSystem kieFileSystem = kieServices.newKieFileSystem(); kieFileSystem.write(ResourceFactory.newClassPathResource(MANUFACTURER_BASED_PRICING)); KieBuilder kieBuilder = kieServices.newKieBuilder(kieFileSystem); kieBuilder.buildAll(); KieModule kieModule = kieBuilder.getKieModule(); return kieServices.newKieContainer(kieModule.getReleaseId()); }
public static ReleaseId createKJarWithMultipleResources(String id, String[] resources, ResourceType[] types) { KieServices ks = KieServices.Factory.get(); KieModuleModel kproj = ks.newKieModuleModel(); KieFileSystem kfs = ks.newKieFileSystem(); return kieModule.getReleaseId();
@Test public void testKJarUpgrade() throws Exception { // DROOLS-919 KieServices ks = KieServices.Factory.get(); // Create an in-memory jar for version 1.0.0 ReleaseId releaseId1 = ks.newReleaseId( "org.kie", "test-upgrade", "1.0.0" ); KieModule km = createAndDeployJar( ks, releaseId1, drl1, drl2_1 ); // Create a session and fire rules kieContainer = ks.newKieContainer( km.getReleaseId() ); ksession = kieContainer.newKieSession(); ksession.setGlobal( "test", this ); ksession.insert( new Message( "Hi Universe" ) ); ksession.fireAllRules(); assertTrue( done ); }
@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(); }
/** * This container goes along with shipping custom payment module determines pricing based on * different criterias * * @return */ @Bean public KieContainer kieShippingCustomContainer() { KieServices kieServices = KieServices.Factory.get(); KieFileSystem kieFileSystem = kieServices.newKieFileSystem(); kieFileSystem.write(ResourceFactory.newClassPathResource(SHIPPING_CUSTOM)); KieBuilder kieBuilder = kieServices.newKieBuilder(kieFileSystem); kieBuilder.buildAll(); KieModule kieModule = kieBuilder.getKieModule(); return kieServices.newKieContainer(kieModule.getReleaseId()); }
protected static ReleaseId createKJarWithMultipleResources(String id, String[] resources, ResourceType[] types) { KieServices ks = KieServices.Factory.get(); KieModuleModel kproj = ks.newKieModuleModel(); KieFileSystem kfs = ks.newKieFileSystem(); return kieModule.getReleaseId();
@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(); }
KieServices kieServices = KieServices.Factory.get(); KieResources kieResources = kieServices.getResources(); KieFileSystem kieFileSystem = kieServices.newKieFileSystem(); logger.warn("There are warning in a score DRL:\n{}", results); kieContainer = kieServices.newKieContainer(kieBuilder.getKieModule().getReleaseId());
public KieContainer getKieContainer() { BuildResults results = null; //Kie classes are only available once built if (!isBuilt()) { results = build(); } else { results = new BuildResults(); results.addAllBuildMessages(convertMessages(kieBuilder.getResults().getMessages(), handles)); } //It's impossible to retrieve a KieContainer if the KieModule contains errors if (results.getErrorMessages().isEmpty()) { // Do not retrieve the KieContainer with KieServices.newKieContainer(releaseId) since this looks-up the KieModule to // create the KieContainer from KieRepository. This holds the most recent KieModule (for the ReleaseId) that was built with // kieBuilder.buildAll() which *may* be a KieModule created during asset validation and hence will lack many assets. // See https://bugzilla.redhat.com/show_bug.cgi?id=1202551 final org.kie.api.builder.KieModule kieModule = kieBuilder.getKieModule(); final ReleaseId releaseId = kieModule.getReleaseId(); final org.drools.compiler.kie.builder.impl.KieProject kieProject = new KieModuleKieProject((InternalKieModule) kieBuilder.getKieModule(), null); final KieContainer kieContainer = new KieContainerImpl(kieProject, KieServices.Factory.get().getRepository(), releaseId); return kieContainer; } else { return null; } }
@Test public void testOldXsdTargetNamespace() { final String drl1 = "package org.drools.compiler\n" + "rule R1 when\n" + " $m : Message()\n" + "then\n" + "end\n"; final String kmodule = "<kmodule xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n" + " xmlns=\"http://jboss.org/kie/6.0.0/kmodule\">\n" + " <kbase name=\"kbase1\">\n" + " <ksession name=\"ksession1\" default=\"true\"/>\n" + " </kbase>\n" + "</kmodule>"; final KieServices ks = KieServices.Factory.get(); // Create an in-memory jar for version 1.0.0 final ReleaseId releaseId1 = ks.newReleaseId( "org.kie", "test-kie-builder", "1.0.0" ); final Resource r1 = ResourceFactory.newByteArrayResource( drl1.getBytes() ).setResourceType( ResourceType.DRL ).setSourcePath( "kbase1/drl1.drl" ); final KieModule km = createAndDeployJar( ks, kmodule, releaseId1, r1); ks.newKieContainer( km.getReleaseId() ); }
@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(); }
protected static ReleaseId createKJarWithMultipleResources(String id, String[] resources, ResourceType[] types) { KieServices ks = KieServices.Factory.get(); KieModuleModel kproj = ks.newKieModuleModel(); KieFileSystem kfs = ks.newKieFileSystem(); return kieModule.getReleaseId();