Pessoal, boa tarde.
Meu problema é o seguinte.
No evento afterProcessCreate eu faço o seguinte. Crio uma pasta, e depois eu adiciono o anexo que o usuário colocou no processo a essa pasta. Como admin, está funcionando certinho.
Mas como usuário normal, não funciona.
Mas investigando o problema, olha só que intrigante: Após o processo já ter sido criado, em uma atividade do processo, no evento AfterTaskSave, eu incluo novamente o anexo que o usuário colocou, nessa pasta. E nessa atividade vai normal. Não dá erro de permissão.
Ou seja, só recebo erro de que o usuário não tem permissão, no evento afterProcessCreate.
Olhando o log, a pasta está sendo criada normalmente, inclusive dou print do Id dela no log, e entro no fluig a pasta está lá, e está com a segurança certinha. Eu criei um grupo, coloquei o usuário nesse grupo, e coloquei a pasta Raiz com permissão total para esse grupo. Ou seja, todas as pastas que eu crio dentro dela, devem respeitar essas permissões. Via código, eu crio a pasta dentro dessa pasta, e digo para herdar as permissões.
Conforme eu disse, depois de acompanhar no log, eu olho as permissões estão certinhas, e se o mesmo usuário, na tarefa seguinte adiciona o arquivo o arquivo é adicionado sem erro.
Alguém faz idéia do que pode estar acontecendo? Será algo relacionado ao evento afterProcessCreate?
function afterProcessCreate(processId) {
try {
//crio a pasta, com herança de segurança
folderId = createFolder(folderName);
//aqui o sistema está mostrando corretamente o log da pasta criada.
//quando eu verifico pelo fluig, as permissões, elas estão criadas corretamente.
log.info('>>> id da pasta criada: ' + folderId);
//pego a lista dos anexos
var anexosDoProcesso = hAPI.listAttachments();
//variavel para recuperar a data
var calendar = java.util.Calendar.getInstance().getTime();
//se tiver anexos
if (anexosDoProcesso.size() > 0) {
//passo por todos os anexos
for ( var i = 0; i < anexosDoProcesso.size(); i++) {
//jogo o anexo na variavel
var doc = anexosDoProcesso.get(i);
//defino as propriedades ...
doc.setParentDocumentId( parseInt("" + folderId) ); // pasta destino
doc.setVersionDescription("Processo: " + getValue("WKNumProces"));
doc.setExpires(false);
doc.setCreateDate(calendar);
doc.setInheritSecurity(true); <<<<< AQUI EU DEIXO CLARO QUE É PARA HERDAR A SEGURANÇA
doc.setTopicId(1);
doc.setUserNotify(false);
doc.setValidationStartDate(calendar);
doc.setVersionOption("0");
doc.setUpdateIsoProperties(true);
//inclui o anexo à pasta
hAPI.publishWorkflowAttachment(doc);
}
}
} catch (e) {
log.error(" >>> ERROR <<< ");
log.error(e.name);
log.error(e.message);
throw " >>> ERROR >>> afterProcessCreate <<< | " + e.name + " - " + e.message;
}
}
Para ajudar, o erro que estou recebendo exatamente é esse aqui abaixo. Mas repito, apenas no create do processo. No aftertasksave das atividades o mesmo usuário consegue fazer normal ...
14:46:20,276 ERROR [com.datasul.technology.webdesk.customization.ScriptingLog] (http-pool-threads - 47) java.lang.Exception: Error when posting the Workflow attachment: java.lang.Exception: User does not have permission to update the document!
— Filipe 06 de Jul de 2017Pessoal, ainda sem sucesso, a unica coisa que consegui foi contornar pelo evento setProcess, mas tem que tomar cuidado pois ele não é executado após concluir a criação do processo como a documentação diz. Ele é executado na proxima visualização após a criação. Triste isso, muito triste.
— Filipe 11 de Jul de 2017