Just some code snippets.
Using the TaskQuery fluent interface (or DSL).
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.
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.
Ivy.session().getSecurityContext().executeAsSystemUser( new Callable<T>() { public T call() throws Exception { return ... } });