@Test @Ignore public void testScannerOnPomProject() throws Exception { KieServices ks = KieServices.Factory.get(); ReleaseId releaseId1 = ks.newReleaseId("org.kie", "scanner-test", "1.0"); ReleaseId releaseId2 = ks.newReleaseId("org.kie", "scanner-test", "2.0"); MavenRepository repository = getMavenRepository(); repository.deployPomArtifact("org.kie", "scanner-master-test", "1.0", createMasterKPom()); resetFileManager(); InternalKieModule kJar1 = createKieJarWithClass(ks, releaseId1, false, 2, 7); repository.deployArtifact(releaseId1, kJar1, createKPom(fileManager, releaseId1)); KieContainer kieContainer = ks.newKieContainer(ks.newReleaseId("org.kie", "scanner-master-test", "LATEST")); KieSession ksession = kieContainer.newKieSession("KSession1"); checkKSession(ksession, 14); KieScanner scanner = ks.newKieScanner(kieContainer); InternalKieModule kJar2 = createKieJarWithClass(ks, releaseId2, false, 3, 5); repository.deployArtifact(releaseId2, kJar2, createKPom(fileManager, releaseId1)); scanner.scanNow(); KieSession ksession2 = kieContainer.newKieSession("KSession1"); checkKSession(ksession2, 15); }
@Test @Ignore public void testKScanner() throws Exception { KieServices ks = KieServices.Factory.get(); ReleaseId releaseId = ks.newReleaseId("org.kie", "scanner-test", "1.0-SNAPSHOT"); InternalKieModule kJar1 = createKieJar(ks, releaseId, "rule1", "rule2"); KieContainer kieContainer = ks.newKieContainer(releaseId); MavenRepository repository = getMavenRepository(); repository.deployArtifact(releaseId, kJar1, kPom); // create a ksesion and check it works as expected KieSession ksession = kieContainer.newKieSession("KSession1"); checkKSession(ksession, "rule1", "rule2"); // create a new kjar InternalKieModule kJar2 = createKieJar(ks, releaseId, "rule2", "rule3"); // deploy it on maven repository.deployArtifact(releaseId, kJar2, kPom); // since I am not calling start() on the scanner it means it won't have automatic scheduled // scanning KieScanner scanner = ks.newKieScanner(kieContainer); // scan the maven repo to get the new kjar version and deploy it on the kcontainer scanner.scanNow(); // create a ksesion and check it works as expected KieSession ksession2 = kieContainer.newKieSession("KSession1"); checkKSession(ksession2, "rule2", "rule3"); }
protected static void deployKjar() { KieServices ks = KieServices.Factory.get(); ReleaseId releaseId = ks.newReleaseId(GROUP_ID, ARTIFACT_ID, VERSION); List<String> processes = new ArrayList<String>(); processes.add("processes/hiring.bpmn2"); processes.add("processes/customtask.bpmn"); processes.add("processes/humanTask.bpmn"); processes.add("processes/signal.bpmn"); processes.add("processes/import.bpmn"); processes.add("processes/callactivity.bpmn"); processes.add("processes/itemrefissue.bpmn"); InternalKieModule kJar1 = createKieJar(ks, releaseId, processes); File pom = new File("target/kmodule", "pom.xml"); pom.getParentFile().mkdir(); try { FileOutputStream fs = new FileOutputStream(pom); fs.write(getPom(releaseId).getBytes()); fs.close(); } catch (Exception e) { } MavenRepository repository = getMavenRepository(); repository.deployArtifact(releaseId, kJar1, pom); }
@Before public void setup() { TestUtil.cleanupSingletonSessionId(); KieServices ks = KieServices.Factory.get(); ReleaseId releaseId = ks.newReleaseId(GROUP_ID, ARTIFACT_ID, VERSION); List<String> processes = new ArrayList<String>(); processes.add("BPMN2-ScriptTask.bpmn2"); processes.add("BPMN2-UserTask.bpmn2"); processes.add("BPMN2-CustomTask.bpmn2"); InternalKieModule kJar1 = createKieJar(ks, releaseId, processes); File pom = new File("target/kmodule", "pom.xml"); pom.getParentFile().mkdir(); try { FileOutputStream fs = new FileOutputStream(pom); fs.write(getPom(releaseId).getBytes()); fs.close(); } catch (Exception e) { } MavenRepository repository = getMavenRepository(); repository.deployArtifact(releaseId, kJar1, pom); Properties properties = new Properties(); properties.setProperty("mary", "HR"); properties.setProperty("john", "HR"); userGroupCallback = new JBossUserGroupCallbackImpl(properties); pds = TestUtil.setupPoolingDataSource(); }
@Before public void prepare() throws MalformedURLException { configureServices(); KieServices ks = KieServices.Factory.get(); ReleaseId releaseId = ks.newReleaseId(GROUP_ID, ARTIFACT_ID, VERSION); File kjar = new File("src/test/resources/kjar/custom-data-project-1.0.jar"); File pom = new File("src/test/resources/kjar/pom.xml"); MavenRepository repository = getMavenRepository(); repository.deployArtifact(releaseId, kjar, pom); }
private void checkIncrementalCompilation(boolean useJavaInDrl) throws IOException { KieServices ks = KieServices.Factory.get(); MavenRepository repository = getMavenRepository(); InternalKieModule kJar1 = createKieJarWithClass(ks, releaseId, FIRST_VALUE, useJavaInDrl); repository.deployArtifact(releaseId, kJar1, kPom); KieContainer kieContainer = ks.newKieContainer(releaseId); KieScanner scanner = ks.newKieScanner(kieContainer); checkValue(kieContainer, FIRST_VALUE); InternalKieModule kJar2 = createKieJarWithClass(ks, releaseId, SECOND_VALUE, useJavaInDrl); repository.deployArtifact(releaseId, kJar2, kPom); scanner.scanNow(); checkValue(kieContainer, SECOND_VALUE); ks.getRepository().removeKieModule(releaseId); }
@Test @Ignore public void testKScannerWithRange() throws Exception { KieServices ks = KieServices.Factory.get(); ReleaseId releaseId1 = ks.newReleaseId("org.kie", "scanner-test", "1.0.1"); ReleaseId releaseId2 = ks.newReleaseId("org.kie", "scanner-test", "1.0.2"); ReleaseId releaseRange = ks.newReleaseId("org.kie", "scanner-test", "[1.0.0,)"); InternalKieModule kJar1 = createKieJar(ks, releaseId1, "rule1", "rule2"); KieContainer kieContainer = ks.newKieContainer(releaseRange); MavenRepository repository = getMavenRepository(); repository.deployArtifact(releaseId1, kJar1, kPom); // create a ksesion and check it works as expected KieSession ksession = kieContainer.newKieSession("KSession1"); checkKSession(ksession, "rule1", "rule2"); // create a new kjar InternalKieModule kJar2 = createKieJar(ks, releaseId2, "rule2", "rule3"); // deploy it on maven repository.deployArtifact(releaseId2, kJar2, kPom); // since I am not calling start() on the scanner it means it won't have automatic scheduled // scanning InternalKieScanner scanner = (InternalKieScanner) ks.newKieScanner(kieContainer); assertEquals(releaseId1, scanner.getCurrentReleaseId()); assertEquals(InternalKieScanner.Status.STOPPED, scanner.getStatus()); // scan the maven repo to get the new kjar version and deploy it on the kcontainer scanner.scanNow(); assertEquals(releaseId2, scanner.getCurrentReleaseId()); assertEquals(InternalKieScanner.Status.STOPPED, scanner.getStatus()); // create a ksesion and check it works as expected KieSession ksession2 = kieContainer.newKieSession("KSession1"); checkKSession(ksession2, "rule2", "rule3"); }
private void testKScannerWithType(boolean useTypeDeclaration) throws Exception { KieServices ks = KieServices.Factory.get(); ReleaseId releaseId = ks.newReleaseId("org.kie", "scanner-test", "1.0-SNAPSHOT"); InternalKieModule kJar1 = createKieJarWithClass(ks, releaseId, useTypeDeclaration, 2, 7); MavenRepository repository = getMavenRepository(); repository.deployArtifact(releaseId, kJar1, kPom); KieContainer kieContainer = ks.newKieContainer(releaseId); KieScanner scanner = ks.newKieScanner(kieContainer); KieSession ksession = kieContainer.newKieSession("KSession1"); checkKSession(ksession, 14); InternalKieModule kJar2 = createKieJarWithClass(ks, releaseId, useTypeDeclaration, 3, 5); repository.deployArtifact(releaseId, kJar2, kPom); scanner.scanNow(); KieSession ksession2 = kieContainer.newKieSession("KSession1"); checkKSession(ksession2, 15); }
@Test @Ignore public void testTypeAndRuleInDifferentKieModules() throws Exception { KieServices ks = KieServices.Factory.get(); ReleaseId depId = ks.newReleaseId("org.kie", "test-types", "1.0"); InternalKieModule kJar1 = createKieJarWithType(ks, depId); MavenRepository repository = getMavenRepository(); repository.deployArtifact(depId, kJar1, kPom); ReleaseId releaseId = ks.newReleaseId("org.kie", "test-rules", "1.0"); InternalKieModule kieModule = createKieJarWithRules(ks, releaseId, depId); KieContainer kieContainer = ks.newKieContainer(releaseId); KieSession ksession = kieContainer.newKieSession("KSession1"); checkKSession(ksession, 15); }
@Before public void prepare() { KieServices ks = KieServices.Factory.get(); List<String> processes = new ArrayList<String>(); processes.add("src/test/resources/kjar/testProcess.bpmn2"); InternalKieModule kjar = createKieJar(ks, kri.toReleaseIdImpl(), processes); File pom = new File("target/kmodule", "pom.xml"); pom.getParentFile().mkdir(); try { FileOutputStream fs = new FileOutputStream(pom); fs.write(getPom(kri).getBytes()); fs.close(); } catch (Exception e) { } MavenRepository repository = getMavenRepository(); repository.deployArtifact(kri.toReleaseIdImpl(), kjar, pom); }
private static void createAndDeployJar(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/org/pkg1/r" + i + ".drl", drls[i]); } } byte[] pom = kfs.read("pom.xml"); KieBuilder kb = ks.newKieBuilder(kfs).buildAll(); Assert.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(); repository = MavenRepository.getMavenRepository(); repository.deployArtifact(releaseId, jar, pom); }
@Before public void prepare() { KieServices ks = KieServices.Factory.get(); ReleaseId releaseId = ks.newReleaseId(GROUP_ID, ARTIFACT_ID, VERSION); List<String> processes = new ArrayList<String>(); processes.add("repo/processes/support/support.bpmn"); InternalKieModule kJar1 = createKieJar(ks, releaseId, processes); File pom = new File("target/kmodule", "pom.xml"); pom.getParentFile().mkdir(); try { FileOutputStream fs = new FileOutputStream(pom); fs.write(getPom(releaseId).getBytes()); fs.close(); } catch (Exception e) { } MavenRepository repository = getMavenRepository(); repository.deployArtifact(releaseId, kJar1, pom); }
@Test public void testDeploymentOfProcessWithDescriptorKieConteinerInjection() { assertNotNull(deploymentService); KieServices ks = KieServices.Factory.get(); ReleaseId releaseId = ks.newReleaseId(GROUP_ID, "kjar-with-dd", VERSION); List<String> processes = new ArrayList<String>(); processes.add("repo/processes/general/customtask.bpmn"); processes.add("repo/processes/general/humanTask.bpmn"); processes.add("repo/processes/general/import.bpmn"); DeploymentDescriptor customDescriptor = new DeploymentDescriptorImpl("org.jbpm.domain"); customDescriptor .getBuilder() .runtimeStrategy(RuntimeStrategy.PER_REQUEST) .addWorkItemHandler( new NamedObjectModel( "mvel", "Log", "new org.jbpm.kie.services.test.objects.KieConteinerSystemOutWorkItemHandler(kieContainer)")); Map<String, String> resources = new HashMap<String, String>(); resources.put( "src/main/resources/" + DeploymentDescriptor.META_INF_LOCATION, customDescriptor.toXml()); InternalKieModule kJar1 = createKieJar(ks, releaseId, processes, resources); File pom = new File("target/kmodule", "pom.xml"); pom.getParentFile().mkdir(); try { FileOutputStream fs = new FileOutputStream(pom); fs.write(getPom(releaseId).getBytes()); fs.close(); } catch (Exception e) { } MavenRepository repository = getMavenRepository(); repository.deployArtifact(releaseId, kJar1, pom); DeploymentUnit deploymentUnit = new KModuleDeploymentUnit( GROUP_ID, "kjar-with-dd", VERSION, "KBase-test", "ksession-test2"); deploymentService.deploy(deploymentUnit); units.add(deploymentUnit); DeployedUnit deployedGeneral = deploymentService.getDeployedUnit(deploymentUnit.getIdentifier()); assertNotNull(deployedGeneral); assertNotNull(deployedGeneral.getDeploymentUnit()); assertNotNull(deployedGeneral.getRuntimeManager()); DeploymentDescriptor descriptor = ((InternalRuntimeManager) deployedGeneral.getRuntimeManager()).getDeploymentDescriptor(); assertNotNull(descriptor); assertEquals("org.jbpm.domain", descriptor.getPersistenceUnit()); assertEquals("org.jbpm.domain", descriptor.getAuditPersistenceUnit()); assertEquals(AuditMode.JPA, descriptor.getAuditMode()); assertEquals(PersistenceMode.JPA, descriptor.getPersistenceMode()); assertEquals(RuntimeStrategy.PER_REQUEST, descriptor.getRuntimeStrategy()); assertEquals(0, descriptor.getMarshallingStrategies().size()); assertEquals(0, descriptor.getConfiguration().size()); assertEquals(0, descriptor.getEnvironmentEntries().size()); assertEquals(0, descriptor.getEventListeners().size()); assertEquals(0, descriptor.getGlobals().size()); assertEquals(0, descriptor.getTaskEventListeners().size()); assertEquals(1, descriptor.getWorkItemHandlers().size()); assertEquals(0, descriptor.getRequiredRoles().size()); RuntimeManager manager = deploymentService.getRuntimeManager(deploymentUnit.getIdentifier()); assertNotNull(manager); RuntimeEngine engine = manager.getRuntimeEngine(EmptyContext.get()); assertNotNull(engine); Map<String, Object> params = new HashMap<String, Object>(); ProcessInstance processInstance = engine.getKieSession().startProcess("customtask", params); assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState()); manager.disposeRuntimeEngine(engine); }