Erro ao anexar arquivo à pasta via hAPI

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;

  }
}
compartilhar
  • 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 2017
  • Pessoal, 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
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do fluig Forum!

2 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags fluig hapi ou faça a sua própria pergunta.