package org.jboss.seam.bpm;
import static org.jboss.seam.ScopeType.APPLICATION;
import static org.jboss.seam.annotations.Install.BUILT_IN;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.jboss.seam.annotations.Install;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.annotations.Transactional;
import org.jboss.seam.annotations.Unwrap;
import org.jbpm.taskmgmt.exe.TaskInstance;
/**
* Support for a list of tasks of a particular type.
*
* @see TaskInstanceList
* @author Gavin King
* @author <a href="mailto:steve@hibernate.org">Steve Ebersole </a>
*/
@Name("org.jboss.seam.bpm.taskInstanceListForType")
@Scope(APPLICATION)
@Install(precedence=BUILT_IN, dependencies="org.jboss.seam.bpm.jbpm")
public class TaskInstanceListForType
{
@Unwrap
@Transactional
public Map<String,List<TaskInstance>> getTaskInstanceList()
{
return getTaskInstanceList( Actor.instance().getId() );
}
private Map<String,List<TaskInstance>> getTaskInstanceList(String actorId)
{
if ( actorId == null ) return null;
Map<String, List<TaskInstance>> map = new HashMap<String, List<TaskInstance>>();
List<TaskInstance> taskInstances = ManagedJbpmContext.instance().getTaskList(actorId);
for ( TaskInstance task: taskInstances )
{
String name = task.getName();
List<TaskInstance> list = map.get(name);
if (list==null)
{
list = new ArrayList<TaskInstance>();
map.put(name, list);
}
list.add(task);
}
return map;
}
}