protected void cancelTask(CoreSession session, final String taskId) throws DocumentRouteException {
DocumentRef taskRef = new IdRef(taskId);
if (!session.exists(taskRef)) {
log.info(String.format("Task with id %s does not exist anymore", taskId));
DocumentModelList docs = graph.getAttachedDocumentModels();
Framework.getService(DocumentRoutingService.class).removePermissionsForTaskActors(session, docs, taskId);
NuxeoPrincipal principal = session.getPrincipal();
String actor = principal.getActingUser();
updateTaskInfo(taskId, true, null, actor, null);
return;
}
DocumentModel taskDoc = session.getDocument(new IdRef(taskId));
Task task = taskDoc.getAdapter(Task.class);
if (task == null) {
throw new DocumentRouteException("Invalid taskId: " + taskId);
}
DocumentModelList docs = graph.getAttachedDocumentModels();
Framework.getService(DocumentRoutingService.class).removePermissionsForTaskActors(session, docs, task);
if (task.isOpened()) {
task.cancel(session);
}
session.saveDocument(task.getDocument());
NuxeoPrincipal principal = session.getPrincipal();
String actor = principal.getActingUser();
updateTaskInfo(taskId, true, null, actor, null);
}