Menu

IvyCookbook

Pat

Just some code snippets.

Finding all Tasks with a specific state.

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.

Execute as System User

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 ...
                      }
                    });

Related

Wiki: Home

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.