Just some code snippets.
Using the TaskQuery fluent interface (or DSL).
:::java
import ch.ivyteam.ivy.workflow.TaskState;
import ch.ivyteam.ivy.workflow.ITask;
import ch.ivyteam.ivy.workflow.query.TaskQuery;
TaskQuery query = ivy.wf.getTaskQueryExecutor().createTaskQuery().where().state().isEqual(TaskState.FAILED).orderBy().name();
List<ITask> results = ivy.wf.getTaskQueryExecutor().getResults(query);
for(ITask task : results) {
// Do something
}
You can also use the following code, but I would recommend the TaskQuery interface.
:::java
import ch.ivyteam.ivy.workflow.PropertyOrder;
import ch.ivyteam.ivy.workflow.IPropertyFilter;
import ch.ivyteam.ivy.workflow.TaskState;
import ch.ivyteam.ivy.workflow.ITask;
import ch.ivyteam.ivy.persistence.IQueryResult;
IPropertyFilter filter = ivy.wf.createTaskPropertyFilter(ch.ivyteam.ivy.workflow.TaskProperty.STATE,ch.ivyteam.logicalexpression.RelationalOperator.EQUAL,TaskState.FAILED);
List<PropertyOrder> order;
order.add(new PropertyOrder(ch.ivyteam.ivy.workflow.TaskProperty.NAME));
IQueryResult result = ivy.wf.findTasks(filter,order,0,-1,true);
for(ITask task : result.getResultList()) {
// Do something
}
Depending on the users rights, you may want to run this as system user. Search for method executeAsSystemUser in class ISecurityContext.
You need to do this in a Java class. Replace <t> with the class you want to return.</t>
:::java
Ivy.session().getSecurityContext().executeAsSystemUser(
new Callable<T>()
{
public T call() throws Exception
{
return ...
}
});