private void buildVersion(KieServices ks, String message, String version) { String drl = "package org.drools.compiler.integrationtests\n" + "import " + Message.class.getCanonicalName() + "\n" + "rule R1 when\n" + " $m : Message( message == \"" + message+ "\" )\n" + "then\n" + "end\n"; ReleaseId releaseId = ks.newReleaseId("org.kie", "hello-world", version); KieFileSystem kfs = ks.newKieFileSystem() .generateAndWritePomXML(releaseId) .write("src/main/resources/KBase1/org/pkg1/r1.drl", drl) .writeKModuleXML(createKieProjectWithPackages(ks, "*").toXML()); ks.newKieBuilder( kfs ).buildAll(); }
public static byte[] createKJar(KieServices ks, KieModuleModel kproj, ReleaseId releaseId, String pom, String... drls) { KieFileSystem kfs = ks.newKieFileSystem(); if (kproj != null) { kfs.writeKModuleXML(kproj.toXML()); } if (pom != null) { kfs.write("pom.xml", pom); } else { kfs.generateAndWritePomXML(releaseId); } for (int i = 0; i < drls.length; i++) { if (drls[i] != null) { kfs.write("src/main/resources/r" + i + ".drl", drls[i]); } } return buildKJar(ks, kfs, releaseId); }
public static byte[] createKJar(KieServices ks, ReleaseId releaseId, Resource pom, Resource... resources) { KieFileSystem kfs = ks.newKieFileSystem(); if (pom != null) { kfs.write(pom); } else { kfs.generateAndWritePomXML(releaseId); } for (int i = 0; i < resources.length; i++) { if (resources[i] != null) { kfs.write(resources[i]); } } ks.newKieBuilder(kfs).buildAll(); InternalKieModule kieModule = (InternalKieModule) ks.getRepository() .getKieModule(releaseId); byte[] jar = kieModule.getBytes(); return jar; }
public static byte[] createJar(KieServices ks, String kmoduleContent, Predicate<String> classFilter, ReleaseId releaseId, Resource... resources) { KieFileSystem kfs = ks.newKieFileSystem().generateAndWritePomXML(releaseId).writeKModuleXML(kmoduleContent); for (int i = 0; i < resources.length; i++) { if (resources[i] != null) { kfs.write(resources[i]); } } KieBuilder kieBuilder = ks.newKieBuilder(kfs); ((InternalKieBuilder) kieBuilder).buildAll(classFilter); Results results = kieBuilder.getResults(); if (results.hasMessages(Message.Level.ERROR)) { throw new IllegalStateException(results.getMessages(Message.Level.ERROR).toString()); } InternalKieModule kieModule = (InternalKieModule) ks.getRepository() .getKieModule(releaseId); byte[] jar = kieModule.getBytes(); return jar; }
private void checkKModule( final String kmodule, final int expectedErrors ) { final KieServices ks = KieServices.Factory.get(); final ReleaseId releaseId = ks.newReleaseId( "org.kie", "test-kie-builder", "1.0.0" ); final KieFileSystem kfs = ks.newKieFileSystem().generateAndWritePomXML( releaseId ).writeKModuleXML( kmodule ); final KieBuilder kieBuilder = ks.newKieBuilder( kfs ); kieBuilder.buildAll(); final Results results = kieBuilder.getResults(); assertEquals( expectedErrors, results.getMessages( org.kie.api.builder.Message.Level.ERROR ).size() ); assertNotNull(((InternalKieBuilder) kieBuilder ).getKieModuleIgnoringErrors()); }
@Test public void testMultipleKBaseWithDrlError() { // RHBRMS-2651 final String drl = "package org.drools.compiler;\n" + "rule \"test\"\n" + " when\n" + " Smurf\n" + " then\n" + "end"; final KieServices ks = KieServices.Factory.get(); final KieModuleModel kproj = ks.newKieModuleModel(); kproj.newKieBaseModel( "kbase1" ).newKieSessionModel( "ksession1" ).setDefault( true ); kproj.newKieBaseModel( "kbase2" ).newKieSessionModel( "ksession2" ); final ReleaseId releaseId = ks.newReleaseId( "org.kie", "test-kie-builder", "1.0.0" ); final KieFileSystem kfs = ks.newKieFileSystem().generateAndWritePomXML( releaseId ).writeKModuleXML( kproj.toXML() ); final Resource drlResource = ResourceFactory.newByteArrayResource( drl.getBytes() ).setResourceType( ResourceType.DRL ) .setSourcePath( "kbase1/drl1.drl" ); kfs.write( "src/main/resources/org/drools/compiler/drl1.drl", drlResource ); final KieBuilder kb = ks.newKieBuilder( kfs ).buildAll(); final List<org.kie.api.builder.Message> messages = kb.getResults().getMessages( org.kie.api.builder.Message.Level.ERROR ); assertEquals( 4, messages.size() ); assertTrue( messages.get(0).toString().contains( "kbase1" ) ); assertTrue( messages.get(1).toString().contains( "kbase1" ) ); assertTrue( messages.get(2).toString().contains( "kbase2" ) ); assertTrue( messages.get(3).toString().contains( "kbase2" ) ); }
public static byte[] createJar(KieServices ks, ReleaseId releaseId, String... drls) { KieFileSystem kfs = ks.newKieFileSystem().generateAndWritePomXML( releaseId); for (int i = 0; i < drls.length; i++) { if (drls[i] != null) { kfs.write("src/main/resources/r" + i + ".drl", drls[i]); } } KieBuilder kb = ks.newKieBuilder(kfs).buildAll(); assertFalse(kb.getResults().getMessages(org.kie.api.builder.Message.Level.ERROR).toString(), kb.getResults().hasMessages(org.kie.api.builder.Message.Level.ERROR)); InternalKieModule kieModule = (InternalKieModule) ks.getRepository() .getKieModule(releaseId); byte[] jar = kieModule.getBytes(); return jar; }
@Test public void testHelloWorldWithWildcardPackages() 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/org/pkg1/test/r1.drl", createDrlWithGlobal( "R1" ) ) .write( "src/main/resources/org/pkg2/test/r2.drl", createDrlWithGlobal( "R2" ) ) .writeKModuleXML( createKieProjectWithPackages( ks, "org.pkg1.*" ).toXML() ); ks.newKieBuilder( kfs ).buildAll(); KieSession ksession = ks.newKieContainer(releaseId).newKieSession("KSession1"); ksession.insert(new Message("Hello World")); List<String> list = new ArrayList<String>(); ksession.setGlobal("list", list); assertEquals( 1, ksession.fireAllRules() ); assertEquals( 1, list.size() ); assertEquals( "R1", list.get( 0 ) ); }
@Test public void testHelloWorldWithWildcardPackagesComplex() throws Exception { // BZ-1174563 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/rules/rules.drl", createDrlWithGlobal("R1")) .write("src/main/resources/rules/tests/tests.drl", createDrlWithGlobal("R2")) .write("src/main/resources/aaarules/aaarules.drl", createDrlWithGlobal("R3")) .write("src/main/resources/sample/brms601_1310778/rules/rules.drl", createDrlWithGlobal("R4")) .write("src/main/resources/sample/brms601_1310778/tests/tests.drl", createDrlWithGlobal("R5")) .write("src/main/resources/tests/tests.drl", createDrlWithGlobal("R6")) .write("src/main/resources/rules2/rules2.drl", createDrlWithGlobal("R7")) .writeKModuleXML( createKieProjectWithPackages(ks, "rules.*").toXML()); ks.newKieBuilder( kfs ).buildAll(); KieSession ksession = ks.newKieContainer(releaseId).newKieSession("KSession1"); ksession.insert(new Message("Hello World")); List<String> list = new ArrayList<String>(); ksession.setGlobal("list", list); assertEquals( 2, ksession.fireAllRules() ); assertTrue( list.contains("R1") ); assertTrue( list.contains("R2") ); }
@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 testHelloWorldUsingPackages() throws Exception { String drlDef = "package org.drools.compiler.integrationtests\n" + "import " + Message.class.getCanonicalName() + "\n" + "rule R_def when\n" + " $m : Message( message == \"Hello World\" )\n" + "then\n" + "end\n"; 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_1.drl", drlDef) .write("src/main/resources/KBase1/org/pkg1/r1_2.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" ) ); assertEquals( 2, ksession.fireAllRules() ); }
KieFileSystem kfs2 = ks.newKieFileSystem() .generateAndWritePomXML(releaseId2) .write("src/main/resources/rules/rules.drl", drl2) .writeKModuleXML(kmoduleContent2); ks.newKieBuilder(kfs2).buildAll(); KieFileSystem kfs1 = ks.newKieFileSystem() .write("src/main/resources/rules/rules.drl", drl1) .writeKModuleXML(kmoduleContent1); ks.newKieBuilder(kfs1).buildAll();
KieFileSystem kfs2 = ks.newKieFileSystem() .generateAndWritePomXML(releaseId2) .write("src/main/resources/rules2/rules.drl", drl2) .writeKModuleXML(kmoduleContent2); ks.newKieBuilder(kfs2).buildAll(); KieFileSystem kfs1 = ks.newKieFileSystem() .write("src/main/resources/rules/rules.drl", drl1) .writeKModuleXML(kmoduleContent1); ks.newKieBuilder(kfs1).buildAll();
/** * Inserts a new KieModule containing single KieBase and two KieSession * instances into KieRepository. * * @return created module ReleaseId */ private ReleaseId prepareKieModule() { final KieServices ks = KieServices.Factory.get(); final ReleaseId releaseId = ks.newReleaseId("org.drools.compiler", "severalKieSessionsTest", "1.0.0"); KieModuleModel module = ks.newKieModuleModel(); KieBaseModel baseModel = module.newKieBaseModel("defaultKBase"); baseModel.setDefault(true); baseModel.addPackage("*"); baseModel.newKieSessionModel("defaultKSession").setDefault(true); KieFileSystem kfs = ks.newKieFileSystem(); kfs.writeKModuleXML(module.toXML()); kfs.generateAndWritePomXML(releaseId); kfs.write("src/main/resources/" + PACKAGE_PATH + "/" + DRL_FILE_NAME, ResourceFactory.newClassPathResource(DRL_FILE_NAME, this.getClass())); KieBuilder builder = ks.newKieBuilder(kfs).buildAll(); assertEquals(0, builder.getResults().getMessages().size()); ks.getRepository().addKieModule(builder.getKieModule()); return releaseId; }
statelessSessionModel.newListenerModel(MarkingRuntimeEventListener.class.getName(), ListenerModel.Kind.RULE_RUNTIME_EVENT_LISTENER); KieFileSystem kfs = ks.newKieFileSystem(); kfs.writeKModuleXML(module.toXML()); kfs.generateAndWritePomXML(RELEASE_ID); kfs.write("src/main/resources/" + PACKAGE_PATH + "/test.drl", ResourceFactory.newByteArrayResource(DRL.getBytes())); KieBuilder builder = ks.newKieBuilder(kfs).buildAll(); assertEquals("Unexpected compilation errors", 0, builder.getResults().getMessages().size());
.setDefault( true ); KieFileSystem kfs = ks.newKieFileSystem() .generateAndWritePomXML( releaseId ) .write( "src/main/resources/rules/r1.drl", drl1 ) .write( "src/main/resources/myrules/r2.drl", drl2 ) .writeKModuleXML( kproj.toXML() ); KieBuilder kieBuilder = ks.newKieBuilder( kfs ).buildAll(); KieSession ksession = ks.newKieContainer( releaseId ).newKieSession( );
.setDefault( true ); KieFileSystem kfs = ks.newKieFileSystem() .generateAndWritePomXML(releaseId) .write("src/main/resources/org/mypackage/r1.drl", drl) .write("src/main/java/org/mypackage/WeekendCalendar.java", weekendCalendarSource) .write("src/main/java/org/mypackage/WeekdayCalendar.java", weekdayCalendarSource) .writeKModuleXML(kproj.toXML()); ks.newKieBuilder( kfs ).buildAll();
KieFileSystem kfs = ks.newKieFileSystem(); kfs.generateAndWritePomXML( ks.newReleaseId( "test", "foo", "1.0" ) ); KieModuleModel km = ks.newKieModuleModel(); km.newKieBaseModel( "rules" ) .setSourcePath( "org/drools/compiler/test2/p2.drl" ); kfs.write( r1 ); kfs.write( r2 ); KieBuilder builder = ks.newKieBuilder( kfs ); builder.buildAll();
KieFileSystem kfs = ks.newKieFileSystem() .generateAndWritePomXML(releaseId) .write("src/main/resources/KBase1/org/pkg1/r1.drl", drl1) .writeKModuleXML(createKieProjectWithPackagesAnd2KieBases(ks).toXML()); ks.newKieBuilder( kfs ).buildAll();
KieFileSystem kfs = ks.newKieFileSystem() .generateAndWritePomXML(releaseId) .write("src/main/resources/KBase1/org/pkg1/r1.drl", drl1) .write("src/main/resources/KBase1/org/pkg2/r2.drl", drl2) .writeKModuleXML(createKieProjectWithPackagesAnd2KieBases(ks).toXML()); ks.newKieBuilder( kfs ).buildAll();