private void createRuntimeManager(RuntimeEnvironment environment, RuntimeEnvironment environment2) { if ("singleton".equals(strategy)) { managerV1 = RuntimeManagerFactory.Factory.get().newSingletonRuntimeManager(environment, DEPLOYMENT_ID_V1); managerV2 = RuntimeManagerFactory.Factory.get().newSingletonRuntimeManager(environment2, DEPLOYMENT_ID_V2); } else if ("processinstance".equals(strategy)) { managerV1 = RuntimeManagerFactory.Factory.get().newPerProcessInstanceRuntimeManager(environment, DEPLOYMENT_ID_V1); managerV2 = RuntimeManagerFactory.Factory.get().newPerProcessInstanceRuntimeManager(environment2, DEPLOYMENT_ID_V2); } assertNotNull(managerV1); assertNotNull(managerV2); } }
private void createRuntimeManager() { RuntimeEnvironment environment = createEnvironment(); if ("singleton".equals(strategy)) { manager = RuntimeManagerFactory.Factory.get().newSingletonRuntimeManager(environment, "first"); } else if ("processinstance".equals(strategy)) { manager = RuntimeManagerFactory.Factory.get().newPerProcessInstanceRuntimeManager(environment, "first"); } else if ("request".equals(strategy)) { manager = RuntimeManagerFactory.Factory.get().newPerRequestRuntimeManager(environment, "first"); } else if ("case".equals(strategy)) { manager = RuntimeManagerFactory.Factory.get().newPerCaseRuntimeManager(environment, "first"); } assertNotNull(manager); }
private void createRuntimeManager() { RuntimeEnvironment environment = createEnvironment(); if ("singleton".equals(strategy)) { manager = RuntimeManagerFactory.Factory.get().newSingletonRuntimeManager(environment, "first"); } else if ("processinstance".equals(strategy)) { manager = RuntimeManagerFactory.Factory.get().newPerProcessInstanceRuntimeManager(environment, "first"); } else if ("request".equals(strategy)) { manager = RuntimeManagerFactory.Factory.get().newPerRequestRuntimeManager(environment, "first"); } else if ("case".equals(strategy)) { manager = RuntimeManagerFactory.Factory.get().newPerCaseRuntimeManager(environment, "first"); } assertNotNull(manager); }
@Test public void testPerProcessInstanceRuntimeManagerScopeSignal() { RuntimeEnvironment environment = createEnvironment(); manager = RuntimeManagerFactory.Factory.get().newPerProcessInstanceRuntimeManager(environment, "first"); assertNotNull(manager); RuntimeEnvironment environment2 = createEnvironment(); manager2 = RuntimeManagerFactory.Factory.get().newPerProcessInstanceRuntimeManager(environment2, "second"); assertNotNull(manager2); testSignalEventScopedToOwningRuntimeManager(); }
@Test public void testPerProcessInstanceRuntimeManagerCompleteTaskViaWrongRuntimeManager() { RuntimeEnvironment environment = createEnvironment(); manager = RuntimeManagerFactory.Factory.get().newPerProcessInstanceRuntimeManager(environment, "first"); assertNotNull(manager); RuntimeEnvironment environment2 = createEnvironment(); manager2 = RuntimeManagerFactory.Factory.get().newPerProcessInstanceRuntimeManager(environment2, "second"); assertNotNull(manager2); testCompleteTaskViaWrongRuntimeManager(); }
@Test public void testPerProcessInstanceRuntimeManagerScopeSignal() { RuntimeEnvironment environment = createEnvironment(); manager = RuntimeManagerFactory.Factory.get().newPerProcessInstanceRuntimeManager(environment, "first"); assertNotNull(manager); testAdHocSubprocess(); }
@Test public void testDeploymentDescriptorFromKieContainer() throws IOException { Map<String, String> resources = new HashMap<String, String>(); KieServices ks = KieServices.Factory.get(); ReleaseId releaseId = ks.newReleaseId(GROUP_ID, ARTIFACT_ID, VERSION); String kmoduleString = IOUtils.toString(this.getClass() .getResourceAsStream("/kmodule-custom-wih.xml"), "UTF-8"); resources.put("src/main/resources/META-INF/kmodule.xml", kmoduleString); String processString = IOUtils.toString(this.getClass() .getResourceAsStream("/BPMN2-CustomTask.bpmn2"), "UTF-8"); resources.put("src/main/resources/BPMN2-CustomTask.bpmn2", processString); InternalKieModule kJar1 = createKieJar(ks, releaseId, resources); installKjar(releaseId, kJar1); Properties properties = new Properties(); UserGroupCallback userGroupCallback = new JBossUserGroupCallbackImpl( properties); RuntimeEnvironment environment = RuntimeEnvironmentBuilder.Factory .get().newDefaultBuilder(releaseId) .userGroupCallback(userGroupCallback).get(); manager = RuntimeManagerFactory.Factory.get() .newPerProcessInstanceRuntimeManager(environment); manager.getRuntimeEngine(ProcessInstanceIdContext.get()) .getKieSession().startProcess("customtask"); }
@Test(timeout=10000) public void testPerProcessInstanceMultiInstanceCallactivityCompleteAtTheSameTime() { RuntimeEnvironment environment = createEnvironment(); manager = RuntimeManagerFactory.Factory.get().newPerProcessInstanceRuntimeManager(environment, "first"); assertNotNull(manager); testMultiInstanceCallactivityCompleteAtTheSameTime(ProcessInstanceIdContext.get()); }
@Test public void testCreationOfRuntimeManagerWithinTransaction() throws Exception { System.setProperty("jbpm.tm.jndi.lookup", "java:comp/UserTransaction"); UserTransaction ut = InitialContext.doLookup("java:comp/UserTransaction"); ut.begin(); RuntimeEnvironment environment = RuntimeEnvironmentBuilder.Factory.get() .newDefaultBuilder() .userGroupCallback(userGroupCallback) .addAsset(ResourceFactory.newClassPathResource("BPMN2-ScriptTask.bpmn2"), ResourceType.BPMN2) .get(); manager = RuntimeManagerFactory.Factory.get().newPerProcessInstanceRuntimeManager(environment); assertNotNull(manager); RuntimeEngine runtime = manager.getRuntimeEngine(EmptyContext.get()); KieSession ksession = runtime.getKieSession(); assertNotNull(ksession); ksession.startProcess("ScriptTask"); ut.commit(); System.clearProperty("jbpm.tm.jndi.lookup"); }
@Test public void testEventSignalingBetweenProcessesWithPeristence() { RuntimeEnvironment environment = RuntimeEnvironmentBuilder.Factory.get() .newDefaultBuilder() .userGroupCallback(userGroupCallback) .addAsset(ResourceFactory.newClassPathResource("events/throw-an-event.bpmn"), ResourceType.BPMN2) .addAsset(ResourceFactory.newClassPathResource("events/start-on-event.bpmn"), ResourceType.BPMN2) .get(); manager = RuntimeManagerFactory.Factory.get().newPerProcessInstanceRuntimeManager(environment); assertNotNull(manager); RuntimeEngine runtime = manager.getRuntimeEngine(EmptyContext.get()); KieSession ksession = runtime.getKieSession(); assertNotNull(ksession); ksession.startProcess("com.sample.bpmn.hello"); AuditService auditService = runtime.getAuditService(); List<? extends ProcessInstanceLog> throwProcessLogs = auditService.findProcessInstances("com.sample.bpmn.hello"); List<? extends ProcessInstanceLog> catchProcessLogs = auditService.findProcessInstances("com.sample.bpmn.Second"); assertNotNull(throwProcessLogs); assertEquals(1, throwProcessLogs.size()); assertEquals(ProcessInstance.STATE_COMPLETED, throwProcessLogs.get(0).getStatus().intValue()); assertNotNull(catchProcessLogs); assertEquals(1, catchProcessLogs.size()); assertEquals(ProcessInstance.STATE_COMPLETED, catchProcessLogs.get(0).getStatus().intValue()); manager.disposeRuntimeEngine(runtime); manager.close(); }
@Test public void testErrorThrowOfChildProcessOnParent() { RuntimeEnvironment environment = RuntimeEnvironmentBuilder.Factory.get() .newDefaultBuilder() .userGroupCallback(userGroupCallback) .addAsset(ResourceFactory.newClassPathResource("reusable-subprocess/ParentError.bpmn2"), ResourceType.BPMN2) .addAsset(ResourceFactory.newClassPathResource("reusable-subprocess/ChildError.bpmn2"), ResourceType.BPMN2) .get(); manager = RuntimeManagerFactory.Factory.get().newPerProcessInstanceRuntimeManager(environment); assertNotNull(manager); RuntimeEngine runtime = manager.getRuntimeEngine(EmptyContext.get()); KieSession ksession = runtime.getKieSession(); assertNotNull(ksession); ksession.startProcess("ParentError"); List<? extends ProcessInstanceLog> processInstanceLogs = runtime.getAuditService().findProcessInstances(); assertEquals(2, processInstanceLogs.size()); for (ProcessInstanceLog log : processInstanceLogs) { if (log.getProcessId().equals("ParentError")) { assertEquals(ProcessInstance.STATE_COMPLETED, log.getStatus().intValue()); } else if(log.getProcessId().equals("ChildError")) { assertEquals(ProcessInstance.STATE_ABORTED, log.getStatus().intValue()); } } manager.disposeRuntimeEngine(runtime); manager.close(); } @Test
@Test public void testSignalStartMultipleProcesses() { // independent = true RuntimeEnvironment environment = RuntimeEnvironmentBuilder.Factory.get() .newDefaultBuilder() .userGroupCallback(userGroupCallback) .addAsset(ResourceFactory.newClassPathResource("BPMN2-SignalMultipleProcessesMain.bpmn2"), ResourceType.BPMN2) .addAsset(ResourceFactory.newClassPathResource("BPMN2-SignalMultipleProcessesOne.bpmn2"), ResourceType.BPMN2) .addAsset(ResourceFactory.newClassPathResource("BPMN2-SignalMultipleProcessesTwo.bpmn2"), ResourceType.BPMN2) .get(); manager = RuntimeManagerFactory.Factory.get().newPerProcessInstanceRuntimeManager(environment); assertNotNull(manager); // since there is no process instance yet we need to get new session RuntimeEngine runtime = manager.getRuntimeEngine(ProcessInstanceIdContext.get()); KieSession ksession = runtime.getKieSession(); assertNotNull(ksession); long ksession1Id = ksession.getIdentifier(); assertTrue(ksession1Id == 2); Map<String, Object> inputParams = new HashMap<String, Object>(); inputParams.put("processInput", "MyCoolParam"); ksession.startProcess("main-process", inputParams); AuditService auditService = runtime.getAuditService(); List<? extends ProcessInstanceLog> processInstanceLogs = auditService.findProcessInstances(); assertEquals(3, processInstanceLogs.size()); manager.close(); }
@Test(expected=UnsupportedOperationException.class) public void testAuditServiceNotAvailable() { RuntimeEnvironment environment = RuntimeEnvironmentBuilder.Factory.get() .newDefaultInMemoryBuilder() .userGroupCallback(userGroupCallback) .addAsset(ResourceFactory.newClassPathResource("BPMN2-ScriptTask.bpmn2"), ResourceType.BPMN2) .addAsset(ResourceFactory.newClassPathResource("BPMN2-UserTask.bpmn2"), ResourceType.BPMN2) .get(); manager = RuntimeManagerFactory.Factory.get().newPerProcessInstanceRuntimeManager(environment); assertNotNull(manager); // ksession for process instance #1 // since there is no process instance yet we need to get new session RuntimeEngine runtime = manager.getRuntimeEngine(ProcessInstanceIdContext.get()); runtime.getAuditService(); }
@Test public void testCreationOfSessionTaskServiceNotConfigured() { RuntimeEnvironment environment = RuntimeEnvironmentBuilder.Factory.get() .newEmptyBuilder() .userGroupCallback(userGroupCallback) .addAsset(ResourceFactory.newClassPathResource("BPMN2-ScriptTask.bpmn2"), ResourceType.BPMN2) .addAsset(ResourceFactory.newClassPathResource("BPMN2-UserTask.bpmn2"), ResourceType.BPMN2) .get(); manager = RuntimeManagerFactory.Factory.get().newPerProcessInstanceRuntimeManager(environment); assertNotNull(manager); // ksession for process instance #1 // since there is no process instance yet we need to get new session RuntimeEngine runtime = manager.getRuntimeEngine(ProcessInstanceIdContext.get()); KieSession ksession = runtime.getKieSession(); assertNotNull(ksession); try { runtime.getTaskService(); fail("Should fail as task service is not configured"); } catch (UnsupportedOperationException e) { assertEquals("TaskService was not configured", e.getMessage()); } manager.close(); }
final NodeLeftCountDownProcessEventListener countDownListener = new NodeLeftCountDownProcessEventListener("Intermediate Catch Event 1", 1); RuntimeEnvironment environment = createEnvironment(countDownListener); manager = RuntimeManagerFactory.Factory.get().newPerProcessInstanceRuntimeManager(environment, "first"); assertNotNull(manager);
.get(); manager = RuntimeManagerFactory.Factory.get().newPerProcessInstanceRuntimeManager(environment); assertNotNull(manager);
@Test public void testEndMessageEventProcess() { RuntimeEnvironment environment = RuntimeEnvironmentBuilder.Factory.get() .newDefaultBuilder() .userGroupCallback(userGroupCallback) .addAsset(ResourceFactory.newClassPathResource("events/EndMessageEvent.bpmn2"), ResourceType.BPMN2) .registerableItemsFactory(new DefaultRegisterableItemsFactory(){ @Override public Map<String, WorkItemHandler> getWorkItemHandlers(RuntimeEngine runtime) { Map<String, WorkItemHandler> handlers = new HashMap<String, WorkItemHandler>(); handlers.putAll(super.getWorkItemHandlers(runtime)); handlers.put("Send Task", new SendTaskHandler()); return handlers; } }) .get(); manager = RuntimeManagerFactory.Factory.get().newPerProcessInstanceRuntimeManager(environment); assertNotNull(manager); // since there is no process instance yet we need to get new session RuntimeEngine runtime = manager.getRuntimeEngine(ProcessInstanceIdContext.get()); KieSession ksession = runtime.getKieSession(); ProcessInstance pi1 = ksession.startProcess("test-process"); assertEquals(ProcessInstance.STATE_COMPLETED, pi1.getState()); manager.close(); }
.get(); manager = RuntimeManagerFactory.Factory.get().newPerProcessInstanceRuntimeManager(environment); assertNotNull(manager);
@Test(timeout=10000) public void testReusableSubprocessWithWaitForCompletionFalse() throws Exception { final NodeLeftCountDownProcessEventListener countDownListener = new NodeLeftCountDownProcessEventListener("SLATimer", 1); RuntimeEnvironment environment = RuntimeEnvironmentBuilder.Factory.get() .newDefaultBuilder() .userGroupCallback(userGroupCallback) .addAsset(ResourceFactory.newClassPathResource("reusable-subprocess/parentprocess.bpmn2"), ResourceType.BPMN2) .addAsset(ResourceFactory.newClassPathResource("reusable-subprocess/subprocess.bpmn2"), ResourceType.BPMN2) .registerableItemsFactory(new DefaultRegisterableItemsFactory(){ @Override public List<ProcessEventListener> getProcessEventListeners(RuntimeEngine runtime) { List<ProcessEventListener> listeners = super.getProcessEventListeners(runtime); listeners.add(countDownListener); return listeners; } }) .get(); manager = RuntimeManagerFactory.Factory.get().newPerProcessInstanceRuntimeManager(environment); assertNotNull(manager); RuntimeEngine runtime = manager.getRuntimeEngine(EmptyContext.get()); KieSession ksession = runtime.getKieSession(); assertNotNull(ksession); ksession.startProcess("Project01360830.parentprocess"); countDownListener.waitTillCompleted(); manager.disposeRuntimeEngine(runtime); manager.close(); }
@Test public void testStartTwoProcessIntancesOnSameSession() { RuntimeEnvironment environment = RuntimeEnvironmentBuilder.Factory.get() .newDefaultBuilder() .userGroupCallback(userGroupCallback) .addAsset(ResourceFactory.newClassPathResource("BPMN2-ScriptTask.bpmn2"), ResourceType.BPMN2) .addAsset(ResourceFactory.newClassPathResource("BPMN2-UserTask.bpmn2"), ResourceType.BPMN2) .get(); manager = RuntimeManagerFactory.Factory.get().newPerProcessInstanceRuntimeManager(environment); assertNotNull(manager); // since there is no process instance yet we need to get new session RuntimeEngine runtime = manager.getRuntimeEngine(ProcessInstanceIdContext.get()); KieSession ksession = runtime.getKieSession(); assertNotNull(ksession); long ksession1Id = ksession.getIdentifier(); assertTrue(ksession1Id == 2); ProcessInstance pi1 = ksession.startProcess("UserTask"); assertEquals(ProcessInstance.STATE_ACTIVE, pi1.getState()); try { ProcessInstance pi2 = ksession.startProcess("UserTask"); fail("Invalid session was used for (" + pi2.getId() + ") process instance"); } catch (RuntimeException e) { } manager.close(); }