private void executeCompleteAction(AccessCertificationCampaignType campaign, CompleteWorkItemActionType completeAction,
Task task, OperationResult result)
throws SchemaException, SecurityViolationException, ObjectNotFoundException, ObjectAlreadyExistsException, ExpressionEvaluationException, CommunicationException, ConfigurationException {
List<AccessCertificationWorkItemType> workItems = queryHelper.searchOpenWorkItems(
CertCampaignTypeUtil.createWorkItemsForCampaignQuery(campaign.getOid(), prismContext),
null, true, null, result);
for (AccessCertificationWorkItemType workItem : workItems) {
AccessCertificationCaseType aCase = CertCampaignTypeUtil.getCase(workItem);
if (aCase == null || aCase.getId() == null || workItem.getId() == null) {
LOGGER.error("Couldn't auto-complete work item {} in case {}: some identifiers are missing", aCase, workItem);
} else {
certManager.recordDecision(campaign.getOid(), aCase.getId(), workItem.getId(),
OutcomeUtils.fromUri(completeAction.getOutcome()), null, task, result);
}
}
}