@Test public void testPersistenceSubProcess() { KieSession service = (KieSession) ctx.getBean("jpaSingleSessionCommandService2"); int sessionId = service.getId(); RuleFlowProcessInstance processInstance = (RuleFlowProcessInstance) service.startProcess("org.drools.test.ProcessSubProcess"); log.info("Started process instance {}", processInstance.getId()); long processInstanceId = processInstance.getId(); TestWorkItemHandler handler = TestWorkItemHandler.getInstance(); WorkItem workItem = handler.getWorkItem(); assertNotNull(workItem); service.dispose(); final Environment env = (Environment) ctx.getBean("env"); /*Environment env = KnowledgeBaseFactory.newEnvironment(); env.set( EnvironmentName.ENTITY_MANAGER_FACTORY, ctx.getBean( "myEmf" ) ); env.set( EnvironmentName.TRANSACTION_MANAGER, ctx.getBean( "txManager" ) ); */ KieStoreServices kstore = (KieStoreServices) ctx.getBean("kstore1"); KieBase kbase1 = (KieBase) ctx.getBean("kb_persistence"); service = kstore.loadKieSession(sessionId, kbase1, null, env); processInstance = (RuleFlowProcessInstance) service.getProcessInstance(processInstanceId); assertNotNull(processInstance); Collection<NodeInstance> nodeInstances = processInstance.getNodeInstances(); assertEquals(1, nodeInstances.size()); SubProcessNodeInstance subProcessNodeInstance = (SubProcessNodeInstance) nodeInstances.iterator().next(); long subProcessInstanceId = subProcessNodeInstance.getProcessInstanceId(); RuleFlowProcessInstance subProcessInstance = (RuleFlowProcessInstance) service.getProcessInstance(subProcessInstanceId); assertNotNull(subProcessInstance); service.dispose(); service = kstore.loadKieSession(sessionId, kbase1, null, env); service.getWorkItemManager().completeWorkItem(workItem.getId(), null); service.dispose(); service = kstore.loadKieSession(sessionId, kbase1, null, env); subProcessInstance = (RuleFlowProcessInstance) service.getProcessInstance(subProcessInstanceId); assertNull(subProcessInstance); processInstance = (RuleFlowProcessInstance) service.getProcessInstance(processInstanceId); assertNull(processInstance); service.dispose(); }
@Test public void testPersistenceWorkItemsUserTransaction() throws Exception { KieSession service = (KieSession) ctx.getBean("jpaSingleSessionCommandService2"); int sessionId = service.getId(); ProcessInstance processInstance = service.startProcess("org.drools.test.TestProcess"); log.info("Started process instance {}", processInstance.getId()); TestWorkItemHandler handler = TestWorkItemHandler.getInstance(); WorkItem workItem = handler.getWorkItem(); assertNotNull(workItem); service.dispose(); final Environment env = (Environment) ctx.getBean("env"); /*Environment env = KnowledgeBaseFactory.newEnvironment(); env.set( EnvironmentName.ENTITY_MANAGER_FACTORY, ctx.getBean( "myEmf" ) ); env.set( EnvironmentName.TRANSACTION_MANAGER, ctx.getBean( "txManager" ) ); */ KieStoreServices kstore = (KieStoreServices) ctx.getBean("kstore1"); KieBase kbase1 = (KieBase) ctx.getBean("kb_persistence"); service = kstore.loadKieSession(sessionId, kbase1, null, env); processInstance = service.getProcessInstance(processInstance.getId()); assertNotNull(processInstance); service.dispose(); service = kstore.loadKieSession(sessionId, kbase1, null, env); service.getWorkItemManager().completeWorkItem(workItem.getId(), null); workItem = handler.getWorkItem(); assertNotNull(workItem); service.dispose(); service = kstore.loadKieSession(sessionId, kbase1, null, env); processInstance = service.getProcessInstance(processInstance.getId()); assertNotNull(processInstance); service.dispose(); service = kstore.loadKieSession(sessionId, kbase1, null, env); service.getWorkItemManager().abortWorkItem(workItem.getId()); workItem = handler.getWorkItem(); assertNotNull(workItem); service.dispose(); service = kstore.loadKieSession(sessionId, kbase1, null, env); processInstance = service.getProcessInstance(processInstance.getId()); assertNotNull(processInstance); service.dispose(); service = kstore.loadKieSession(sessionId, kbase1, null, env); service.getWorkItemManager().completeWorkItem(workItem.getId(), null); workItem = handler.getWorkItem(); assertNull(workItem); service.dispose(); service = kstore.loadKieSession(sessionId, kbase1, null, env); processInstance = service.getProcessInstance(processInstance.getId()); assertNull(processInstance); service.dispose(); }