package org.jbpm.perf;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import org.jbpm.db.AbstractDbTestCase;
import org.jbpm.taskmgmt.exe.TaskInstance;
public class TasklistEagerLoadingTest extends AbstractDbTestCase {
private List taskInstanceIds = new ArrayList();
public void testTasklistEagerLoading() {
for (int i = 0; i < 20; i++) {
TaskInstance taskInstance = new TaskInstance("task " + i);
taskInstance.setActorId("johndoe");
save(taskInstance);
}
newTransaction();
try {
assertEquals(20, jbpmContext.getTaskList("johndoe").size());
}
finally {
deleteTaskInstances();
}
}
public void testPooledTasklistEagerLoading() {
for (int i = 0; i < 20; i++) {
TaskInstance taskInstance = new TaskInstance("group task " + i);
taskInstance.setPooledActors(new String[] { "group" + i });
save(taskInstance);
}
for (int i = 0; i < 20; i++) {
TaskInstance taskInstance = new TaskInstance("task " + i);
taskInstance.setPooledActors(new String[] { "johndoe", "bachelors", "partyanimals",
"wildwomen" });
save(taskInstance);
}
newTransaction();
try {
assertEquals(20, jbpmContext.getGroupTaskList(Collections.singletonList("johndoe")).size());
}
finally {
deleteTaskInstances();
}
}
private void save(TaskInstance taskInstance) {
Serializable id = session.save(taskInstance);
taskInstanceIds.add(id);
}
private void deleteTaskInstances() {
for (Iterator i = taskInstanceIds.iterator(); i.hasNext();) {
Serializable id = (Serializable) i.next();
Object taskInstance = session.load(TaskInstance.class, id);
session.delete(taskInstance);
}
}
}