TaskQuery q = getProcessEngine().getTaskService().createTaskQuery().processInstanceId(pi.getInternalId());
if (userLogin != null)
q = q.taskAssignee(userLogin);
if (taskNames != null && !taskNames.isEmpty()) //TODO what if more than 1 task name is supplied
q = q.taskName(taskNames.iterator().next());
List<Task> tasks = q.listPage(0, 1000);
return collectTasks(tasks, pi, ctx);