protected static DeploymentDescriptor getDescriptorFromKModule(InternalKieModule kmodule) { DeploymentDescriptor desc = null; if (kmodule.isAvailable(DeploymentDescriptor.META_INF_LOCATION)) { byte[] content = kmodule.getBytes(DeploymentDescriptor.META_INF_LOCATION); ByteArrayInputStream input = new ByteArrayInputStream(content); try { desc = DeploymentDescriptorIO.fromXml(input); } finally { try { input.close(); } catch (IOException e) { logger.debug("Error when closing stream of kie-deployment-descriptor.xml"); } } } return desc; } }
protected static void collectDeploymentDescriptors(InternalKieModule kmodule, List<DeploymentDescriptor> descriptorHierarchy) { DeploymentDescriptor descriptor = getDescriptorFromKModule(kmodule); if (descriptor != null) { descriptorHierarchy.add(descriptor); } if (kmodule.getKieDependencies() != null) { Collection<InternalKieModule> depModules = kmodule.getKieDependencies().values(); for (InternalKieModule depModule : depModules) { collectDeploymentDescriptors(depModule, descriptorHierarchy); } } }
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; }
"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 ); byte[] jar = kieModule.getBytes(); Resource jarRes = ks.getResources().newByteArrayResource( jar ); KieModule km = ks.getRepository().addKieModule( jarRes ); KieSession ksession = ks.newKieContainer( km.getReleaseId() ).newKieSession("KSession1");
"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(); Resource jarRes = ks.getResources().newByteArrayResource( jar ); KieModule km = ks.getRepository().addKieModule( jarRes ); KieContainer kc = ks.newKieContainer( km.getReleaseId() );
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; }
public static byte[] createJarIgnoringErrors(KieServices ks, ReleaseId releaseId, Resource... resources) { KieFileSystem kfs = ks.newKieFileSystem().generateAndWritePomXML(releaseId); for (int i = 0; i < resources.length; i++) { if (resources[i] != null) { kfs.write(resources[i]); } } KieBuilder kieBuilder = ks.newKieBuilder(kfs); ((InternalKieBuilder) kieBuilder).buildAll(o -> true); InternalKieModule kieModule = (InternalKieModule) ((InternalKieBuilder) kieBuilder).getKieModuleIgnoringErrors(); byte[] jar = kieModule.getBytes(); return jar; } }
String namespace = "org.kie.test"; ReleaseId releaseId = KieServices.Factory.get().newReleaseId( namespace, "pomModelReuse", "1.0" ); KieFileSystem kfs = KieServices.Factory.get().newKieFileSystem(); kfs.writePomXML( pom ); kieBuilder1.buildAll(); kfs.writePomXML( pom ); kieBuilder2.buildAll(); final Reader reader1 = kieModule1.getResource( "META-INF/maven/org.kie.test/pomModelReuse/pom.xml" ).getReader(); int charCode; String readPom1 = ""; final Reader reader2 = kieModule2.getResource( "META-INF/maven/org.kie.test/pomModelReuse/pom.xml" ).getReader(); String readPom2 = ""; while ( ( charCode = reader2.read() ) != -1 ) {
"</kmodule>"; final KieServices ks = KieServices.Factory.get(); 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 Resource r2 = ResourceFactory.newByteArrayResource( drl2.getBytes() ).setResourceType( ResourceType.GDRL ).setSourcePath( "kbase1/drl2.gdrl" ); assertNotNull( ikm.getResource( r1.getSourcePath() ) ); assertNotNull( ikm.getResource( r2.getSourcePath() ) ); assertNotNull( ikm.getResource( r3.getSourcePath() ) ); assertNotNull( ikm.getResource( r4.getSourcePath() ) ); final KieContainer kc = ks.newKieContainer( km.getReleaseId() ); final KieSession ksession = kc.newKieSession(); ksession.insert( new Message( "Hello World" ) );
KieServices ks = KieServices.Factory.get(); setSystemProperties(properties); final KieBuilderImpl kieBuilder = (KieBuilderImpl) ks.newKieBuilder(projectDir); kieBuilder.buildAll(ExecutableModelMavenProject.SUPPLIER, s -> { return !s.contains("src/test/java"); List<String> generatedFiles = kieModule.getFileNames() .stream() .filter(f -> f.endsWith("java"))
private InternalKieModule createKieJar( String... drls) { InternalKieModule kieJar = mock( InternalKieModule.class ); KieServices ks = KieServices.Factory.get(); ReleaseId releaseId = ks.newReleaseId("org.kie", "hello-world", "1.0"); List<String> drlFs = new ArrayList<String>(); for( int i=0; i<drls.length; i++ ) { if( drls[i] != null ) { String fileName = "src/main/resources/org/pkg1/drlFile"+i+".drl"; drlFs.add( fileName ); when( kieJar.getBytes( fileName ) ).thenReturn( drls[i].getBytes() ); } } when( kieJar.getBytes( KieModuleModelImpl.KMODULE_JAR_PATH ) ).thenReturn( createKieProjectWithPackages(ks, releaseId).toXML().getBytes() ); when( kieJar.getFileNames() ).thenReturn( drlFs ); return ( InternalKieModule ) kieJar; }
protected RuleUnitExecutor createExecutor(String sourceName) { KieServices ks = KieServices.Factory.get(); KieRepository kr = ks.getRepository(); ReleaseId releaseId = new ReleaseIdImpl("org.kie:pmmlTest:1.0-SNAPSHOT"); ((KieRepositoryImpl) kr).setDefaultGAV(releaseId); Resource res = ResourceFactory.newClassPathResource(sourceName); kbase = new KieHelper().addResource(res, ResourceType.PMML).build(); assertNotNull(kbase); RuleUnitExecutor executor = RuleUnitExecutor.create().bind(kbase); KieContainer kc = ((KnowledgeBaseImpl) ((InternalRuleUnitExecutor) executor).getKieSession().getKieBase()).getKieContainer(); InternalKieModule ikm = (InternalKieModule) kr.getKieModule(releaseId); try (FileOutputStream fos = new FileOutputStream("/tmp/outputModule.jar")) { fos.write(ikm.getBytes()); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } kc.getKieBaseNames().forEach(n -> { System.out.println(n); }); data = executor.newDataSource("request"); resultData = executor.newDataSource("results"); pmmlData = executor.newDataSource("pmmlData"); return executor; }
private File write( InternalKieModule kModule, Path tempDir, ReleaseId releaseId) { String fileName = releaseId.getArtifactId() + "-" + releaseId.getVersion() + ".jar"; File file = new File(tempDir.toString(), fileName); try (FileOutputStream fos = new FileOutputStream(file)) { fos.write(kModule.getBytes()); fos.flush(); } catch (IOException ioe) { throw new RuntimeException(ioe); } return file; }
@Test public void testRemoved() { String drl1 = "package org.drools\n" + "rule R1 when\n" + " $m : Message( message == \"Hello World\" )\n" + "then\n" + "end\n"; String drl2 = "package org.drools\n" + "rule R2 when\n" + " $m : Message( message == \"Hello World\" )\n" + "then\n" + "end\n"; InternalKieModule kieJar1 = createKieJar( drl1, drl2 ); InternalKieModule kieJar2 = createKieJar( drl1 ); KieJarChangeSet changes = ChangeSetBuilder.build( kieJar1, kieJar2 ); String removedFile = (String) kieJar1.getFileNames().toArray()[1]; assertThat( changes.getChanges().size(), is(1)); ResourceChangeSet cs = changes.getChanges().get( removedFile ); assertThat( cs, not( nullValue() ) ); assertThat( cs.getChangeType(), is( ChangeType.REMOVED ) ); }
private void compileDMNFile(InternalKieModule kieModule, DMNAssemblerService assemblerService, KnowledgeBuilder knowledgeBuilder, String dmnFile) throws Exception { Resource resource = kieModule.getResource(dmnFile); ResourceConfiguration resourceConfiguration = kieModule.getResourceConfiguration(dmnFile); ResourceWithConfiguration resourceWithConfiguration = new ResourceWithConfigurationImpl(resource, resourceConfiguration, a -> { }, b -> { }); assemblerService.addResources(knowledgeBuilder, Collections.singletonList(resourceWithConfiguration), ResourceType.DMN); }
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; }
"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.drl", drl1) .write("src/main/resources/KBase1/org/pkg2/r2.drl", drl2) .writeKModuleXML(createKieProjectWithPackagesAnd2KieBases(ks).toXML()); ks.newKieBuilder( kfs ).buildAll(); InternalKieModule kieModule = (InternalKieModule) ks.getRepository().getKieModule( releaseId ); byte[] jar = kieModule.getBytes(); Resource jarRes = ks.getResources().newByteArrayResource( jar ); KieModule km = ks.getRepository().addKieModule( jarRes ); KieSession ksession = ks.newKieContainer( km.getReleaseId() ).newKieSession("KSession1");
KieServices ks = KieServices.Factory.get(); setSystemProperties(properties); final KieBuilderImpl kieBuilder = (KieBuilderImpl) ks.newKieBuilder(projectDir); kieBuilder.buildAll(ExecutableModelMavenProject.SUPPLIER, s -> { return !s.contains("src/test/java"); List<String> generatedFiles = kieModule.getFileNames() .stream() .filter(f -> f.endsWith("java"))
String modifiedFile = (String) kieJar2.getFileNames().toArray()[0]; String addedFile = (String) kieJar2.getFileNames().toArray()[1]; String removedFile = (String) kieJar1.getFileNames().toArray()[1];