protected void createTask(DocumentModel document, CoreSession session, NuxeoPrincipal principal) {
String[] actorIds = getValidatorsFor(document);
Map<String, String> variables = new HashMap<String, String>();
variables.put(Task.TaskVariableName.needi18n.name(), "true");
variables.put(Task.TaskVariableName.taskType.name(), PUBLISH_TASK_TYPE);
variables.put(TaskService.VariableName.documentId.name(), document.getId());
variables.put(TaskService.VariableName.documentRepositoryName.name(), document.getRepositoryName());
variables.put(TaskService.VariableName.initiator.name(), principal.getName());
getTaskService().createTask(session, principal, document, TASK_NAME, Arrays.asList(actorIds), false, TASK_NAME,
null, null, variables, null);
DocumentEventContext ctx = new DocumentEventContext(session, principal, document);
ctx.setProperty(NotificationConstants.RECIPIENTS_KEY, actorIds);
getEventProducer().fireEvent(ctx.newEvent(TaskEventNames.WORKFLOW_TASK_START));
}