public List<PrismContainerValue<WorkItemType>> searchApprovalWorkItems(int days, QName sortColumn) throws CommunicationException, ObjectNotFoundException, SchemaException, SecurityViolationException, ConfigurationException, ExpressionEvaluationException, DatatypeConfigurationException { Task task = taskManager.createTaskInstance(); OperationResult result = task.getResult(); ObjectQuery query = prismContext.queryFor(AbstractWorkItemType.class).build(); if (days > 0) { XMLGregorianCalendar since = (new Clock()).currentTimeXMLGregorianCalendar(); DatatypeFactory df = DatatypeFactory.newInstance(); since.add (df.newDuration(false, 0, 0, days, 0, 0, 0)); query.addFilter(prismContext.queryFor(AbstractWorkItemType.class) .item(AbstractWorkItemType.F_CREATE_TIMESTAMP).lt(since).buildFilter()); } if (sortColumn != null) { query.addFilter(prismContext.queryFor(AbstractWorkItemType.class) .asc(sortColumn) .buildFilter()); } Object[] itemsToResolve = { WorkItemType.F_ASSIGNEE_REF, ItemPath.create(PrismConstants.T_PARENT, WfContextType.F_OBJECT_REF), ItemPath.create(PrismConstants.T_PARENT, WfContextType.F_TARGET_REF), ItemPath.create(PrismConstants.T_PARENT, WfContextType.F_REQUESTER_REF) }; SearchResultList<WorkItemType> workItems = model.searchContainers(WorkItemType.class, query, schemaHelper.getOperationOptionsBuilder().items(itemsToResolve).resolve().build(), task, result); return PrismContainerValue.toPcvList(workItems); }