Olá comunidade!
Gostaria de saber o que vocês acham da funcionalidade atual de regras de anexos do construtor de processos.
Tanto no eclipse como no desenhador do fluig web
Vocês fazem o uso dessa funcionalidade, ou determinam as regras de anexos direto pelo código do processo?
Quem usa a funcionalidade, pelo eclipe ou desenhador web, o que poderia ser melhorado?
Obrigada 
Uso quando a atividade exige anexo, mas só nessa situação.
Algo que poderia ser melhorado, e que faço em Evento de Processo, é ter regra pra exigir anexo de acordo com a atividade destino. Tenho situações na qual o usuário pode escolher uma atividade destino que exige um anexo antecipado e outra atividade destino que não precisa do anexo, aí nesses casos somente por evento de processo pra tratar.
Até pensando nessa questão de indicar regras de acordo com o destino poderia ter opção de colocar condicionais nas regras, permitindo obrigar anexo caso algum campo do formulário esteja preenchido com um valor específico, por exemplo. Ao menos até onde sei o “valor” dessa regra de anexo só faz uma validação do nome do arquivo, então hoje a única validação por campo é pra indicar o nome né
Oi Bruno, obrigada por responder 
Que bacana as suas sugestões! Poderia ilustrar um pouco mais os seus cenários que exigem a necessidade de um anexo antecipado?
Hoje na regra de anexo low code é possível criar regra por atividades do processo e essas regras podem criar condições referentes ao nomes do arquivo, tipos de extensão, quantidade a ser anexada ou regras para proibir algum tipo de anexo.
É possível definir, por exemplo, esses tipo de regras com o lowcode:
Você deve anexar 1 arquivo nomearquivo.log ou algum arquivo de extensão diferente de .log
Você deve anexar 2 arquivos que não possua server no nome
Apenas arquivos .jpg, .png ou .gif são permitidos
Um caso simples que temos aqui.
Na atividade “Elaborar Parecer Jurídico” o responsável pode tramitar para “Elaborar Minuta do Parecer Jurídico”, onde algum estagiário criará a minuta do parecer. Então não há como exigir que seja inserido o parecer em anexo, pois ainda será feita a minuta por um estagiário.
Na atividade “Elaborar Minuta do Parecer Jurídico” utilizo a regra lowcode pra obrigar o estagiário a inserir anexo (validando quantidade e extensão). Na sequência volta para um responsável do jurídico, na atividade “Inserir Parecer Jurídico”, na qual também uso regra lowcode pra obrigar a inserir o anexo que é o parecer.
Porém na atividade “Elaborar Parecer Jurídico” o responsável pode tramitar para “Analisar Parecer Jurídico”, que é a atividade na qual o demandante vai verificar a opinião jurídica para decidir se continuará com o processo. Então nessa situação o responsável é obrigado a inserir um anexo na “Elaborar Parecer Jurídico”.
Então essa atividade “Elaborar Parecer Jurídico” tem regra de anexo de acordo com o destino e nessa situação só é possível validar por evento de processo, e ainda por cima não é uma validação muito simples, pois devemos consultar vários datasets pra validar que determinado anexo foi inserido em uma atividade específica.
Bom dia Bruno,
Por acaso você coloca alguma validação no evento do processo para checar a extensão do arquivo anexado? Por exemplo para checar se é um arquivo excel, word ou ppt?
Olá, @PatrickRehder.
No meu caso não me preocupei com isso, porque o jurídico já tem por padrão colocar o PDF, então eu só validei se foi inserido algum anexo.
Mas é possível pegar o nome do anexo se necessário.
Show.
Eu acabei descobrindo uma forma de validar o tipo de documento, pois para o meu caso foi preciso. Vou deixar aqui para quem precisar:
function beforeTaskSave(colleagueId, nextSequenceId, userList) {
var attachments = hAPI.listAttachments();
if (nextSequenceId == 6 || nextSequenceId == 12) {
for (var i = 0; i < attachments.size(); i++) {
var attachment = attachments.get(i);
var nomeArquivo = attachment.getDocumentDescription();
var retornoFuncao = obterExtensao(nomeArquivo);
if (retornoFuncao != "xlsx" && retornoFuncao != "docx") {
throw "É permitido anexar apenas arquivos Excel ou Word!"
}
}
}
}
function obterExtensao(nomeArquivo) {
var ultimoPonto = nomeArquivo.lastIndexOf(‘.’);
// Verifica se há um ponto e se não está no início (ex: .htaccess)
if (ultimoPonto !== -1 && ultimoPonto !== 0) {
return nomeArquivo.slice(ultimoPonto + 1).toLowerCase();
}
return ‘’;
}