package com.synapsis.gp.test.process; import java.util.List; import org.jbpm.api.Execution; import org.jbpm.api.RepositoryService; import org.jbpm.api.task.Task; import org.jbpm.pvm.internal.cfg.JbpmConfiguration; import org.jbpm.test.JbpmTestCase; public class TestForkAndJoin extends JbpmTestCase { String deploymentId; protected void setUp() throws Exception { super.setUp(); deploymentId = repositoryService .createDeployment() .addResourceFromClasspath( "com/synapsis/gp/test/process/testForkAndJoin.jpdl.xml") .deploy(); } protected void tearDown() throws Exception { repositoryService.deleteDeploymentCascade(deploymentId); super.tearDown(); } public void testForkAndJoi() { Execution execution = executionService .startProcessInstanceByKey("TestForkAndJoin"); List taskList = taskService.findPersonalTasks("otto"); // Expects // to // have // task1 // and // task2. // Works ok. Task task1 = taskList.get(0); // Takes task1 taskService.completeTask(task1.getId()); taskList = taskService.findPersonalTasks("otto"); // Now I expect to // have task2 and // task3, but task3 // is repeated!! assertTrue(taskList.size() == 2); } protected synchronized void initialize() { if (processEngine == null) { JbpmConfiguration conf = new JbpmConfiguration(); conf.setResource("jbpm.cfg.xml"); processEngine = conf.buildProcessEngine(); repositoryService = processEngine.get(RepositoryService.class); executionService = processEngine.getExecutionService(); historyService = processEngine.getHistoryService(); managementService = processEngine.getManagementService(); taskService = processEngine.getTaskService(); identityService = processEngine.getIdentityService(); } } }