[jboss-user] [JBoss jBPM] - Re: forking tasks
kukeltje
do-not-reply at jboss.com
Thu Sep 11 13:03:50 EDT 2008
Ok, basic trial without Seam and no special transaction stuff works
| package net.vankuijk.jbpm;
|
| import java.util.ArrayList;
| import java.util.Arrays;
| import java.util.HashSet;
| import java.util.Iterator;
| import java.util.List;
| import java.util.Set;
|
| import org.apache.commons.logging.Log;
| import org.apache.commons.logging.LogFactory;
| import org.jbpm.JbpmContext;
| import org.jbpm.db.AbstractDbTestCase;
| import org.jbpm.graph.def.ProcessDefinition;
| import org.jbpm.graph.exe.ExecutionContext;
| import org.jbpm.graph.exe.ProcessInstance;
| import org.jbpm.taskmgmt.def.AssignmentHandler;
| import org.jbpm.taskmgmt.exe.Assignable;
| import org.jbpm.taskmgmt.exe.TaskAssignmentDbTest;
| import org.jbpm.taskmgmt.exe.TaskInstance;
| import org.jbpm.taskmgmt.exe.TaskMgmtInstance;
|
| import junit.framework.TestCase;
|
| public class ForkedTaskTest extends AbstractDbTestCase {
| void deployProcessDefinition(String xml) {
| ProcessDefinition processDefinition = ProcessDefinition
| .parseXmlString(xml);
| jbpmContext.deployProcessDefinition(processDefinition);
| newTransaction();
| }
|
| public void testStartStateSwimlaneInitialization() {
| deployProcessDefinition("<process-definition name='testForkedTasks'>"
| + " <swimlane name='gertsGroupSwimlane'>"
| + " <assignment pooled-actors='gertsGroup' />"
| + " </swimlane>"
| + " <start-state>"
| + " <transition name='to_0' to='0' />"
| + " </start-state>"
| + " <task-node name='0'>"
| + " <task name='task 0' swimlane='gertsGroupSwimlane' />"
| + " <transition name='to_fork1' to='fork1' />"
| + " </task-node>"
| + " <fork name='fork1'>"
| + " <transition name='to_11' to='11' />"
| + " <transition name='to_21' to='21' />"
| + " </fork>"
| + " <task-node name='11'>"
| + " <task name='task 11' swimlane='gertsGroupSwimlane' />"
| + " <transition name='to_12' to='12' />"
| + " </task-node>"
| + " <task-node name='12'>"
| + " <task name='task 12' swimlane='gertsGroupSwimlane' />"
| + " <transition name='to_join' to='join1' />"
| + " </task-node>"
| + " <task-node name='21'>"
| + " <task name='task 21' swimlane='gertsGroupSwimlane' />"
| + " <transition name='to_join' to='join1' />"
| + " </task-node>"
| + " <join name='join1'>"
| + " <transition name='end' to='end' />"
| + " </join>"
| + " <end-state name='end' />"
| + "</process-definition>");
|
| ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("testForkedTasks");
| processInstance.signal();
|
| processInstance = saveAndReload(processInstance);
|
| ArrayList actorIDs = new ArrayList();
| actorIDs.add("gertsGroup");
|
| //assertNotNull(processInstance.getTaskMgmtInstance().getTaskInstances());
|
| List tasks = jbpmContext.getGroupTaskList(actorIDs);
| assertEquals(1, tasks.size());
| assertEquals(false, ((TaskInstance) tasks.get(0)).isStartTaskInstance());
| TaskInstance task0 = (TaskInstance) tasks.iterator().next();
| assertEquals("task 0", task0.getName());
| task0.end();
|
| processInstance = saveAndReload(processInstance);
|
| tasks = jbpmContext.getGroupTaskList(actorIDs);
| assertEquals(2, tasks.size());
| ArrayList taskNames = new ArrayList();
| taskNames.add(((TaskInstance) tasks.get(0)).getName());
| taskNames.add(((TaskInstance) tasks.get(1)).getName());
| assertTrue(taskNames.contains("task 11"));
| assertTrue(taskNames.contains("task 21"));
| assertFalse(taskNames.contains("task 12"));
|
| TaskInstance task11 = (TaskInstance) tasks.get(0); //gamble it is the first
| if (!task11.getName().equals("task 11")) {
| task11 = (TaskInstance) tasks.get(1); // ok, it's the second
| }
| task11.end();
|
| processInstance = saveAndReload(processInstance);
|
| tasks = jbpmContext.getGroupTaskList(actorIDs);
| assertEquals(2, tasks.size());
| taskNames = new ArrayList();
| taskNames.add(((TaskInstance) tasks.get(0)).getName());
| taskNames.add(((TaskInstance) tasks.get(1)).getName());
| assertFalse(taskNames.contains("task 11")); //ended
| assertTrue(taskNames.contains("task 21"));
| assertTrue(taskNames.contains("task 12"));
| }
|
| private static final Log log = LogFactory
| .getLog(ForkedTaskTest.class);
|
| }
|
So it I have no clue what is going wrong in your case. Transactions? What if you try to retrieve the tasklist by using the jBPM api directly?
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4175927#4175927
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4175927
More information about the jboss-user
mailing list