}
Command<List<HistoryActivityInstance>> cmd = new Command<List<HistoryActivityInstance>>() {
@Override
public List<HistoryActivityInstance> execute(Environment environment) throws Exception {
AbstractQuery q = new AbstractQuery() {
@Override
protected void applyPage(Query query) {
query.setFirstResult(0);
query.setMaxResults(1);
}
@Override
protected void applyParameters(Query query) {
query.setString("userIds", user.getLogin());
query.setString("internalIds", log.getExecutionId());
query.setDate("minDate", minDate.getTime());
if (!taskNames.isEmpty()) {
query.setParameterList("taskName", taskNames);
}
}
@Override
public String hql() {
StringBuilder hql = new StringBuilder()
.append("select act ")
.append("from ")
.append(HistoryTaskInstanceImpl.class.getName()).append(" as act, ")
.append(HistoryProcessInstanceImpl.class.getName()).append(" as proc, ")
.append(HistoryTaskImpl.class.getName()).append(" as task ")
.append(" where act.historyProcessInstance = proc ")
.append(" and act.historyTask = task ")
.append(" and act.endTime is not null ");
if (!taskNames.isEmpty()) {
hql.append(" and act.activityName in (:taskName) ");
}
hql.append(" and task.assignee = :userIds ")
.append(" and task.endTime > :minDate ")
.append(" and act.executionId = :internalIds ")
.append(" order by act.endTime asc ");
return hql.toString();
}
};
return (List<HistoryActivityInstance>) q.execute(environment);
}
};
List<HistoryActivityInstance> pastTasks = getProcessEngine(ctx).execute(cmd);
if (!pastTasks.isEmpty()) {