Manipulação de Anexos - MyFluig

Fluiggers, boa tarde!

Estamos implementando um processo onde é necessário fazer a manipulação de anexos a partir de preenchimento de campos no formulário. Utilizei este repositório do mestre Sérgio Machado como inspiração e consegui fazer tudo o que precisava no desenvolvimento para navegador. Contudo, ao migrar para o mobile me deparei com um problema: consigo inserir anexo mas não consigo remover usando os botões de formulário.

Alguém aí já passou por isso no mobile e tem uma luz para este problema?

Só o remover anexo que não funciona? As funções visualizar e download estão funcionando no mobile?

É que, pela pouca experiência que tenho com o app mobile, tudo que normalmente a gente consegue fazer usando parent. no JS pelo navegador não funciona no app mobile. E essa parte dos anexos usa bastante esse recurso de acessar componentes do parent.

As funções visualizar e download não estão funcionando também :sweat_smile:
Mas a funcionalidade de exclusão é mais crítica :confused:

Chegamos ao limite de tentativas para manipular a aba de anexo no app via formulário.
Acho que optaremos por controlar anexos via ECM para processos que precisarem rodar no app. Ainda estamos fazendo testes.

Qualquer novidade para contornar esse problema eu publico aqui :slight_smile:

Quando precisei mexer com isso de anexo no formulário eu abandonei totalmente o app. Até porque aqui só alguns gerentes usam o app. Os usuários no geral usam Fluig só no computador mesmo, então facilitou pra mim.

Uma novidade que postaram do Fluig 2.0 é que com o formulário dele, desenhado na web, dá pra ter esse controle de anexo nativo. Se já usa o 2.0 tenta atualizar pra última versão e ver como tá isso.

Encontramos um caminho por aqui, mas ainda vamos refinar o fluxo e criar um método padrão de uso. A sequência abaixo é necessária na abertura da solicitação:

1-Captura o arquivo enviado no input do formulário e insere em uma pasta de attachments_staging criada para o processo.

2-Configura o evento de formulário beforeTaskComplete para buscar todos os arquivos que foram inseridos no formulário e usar a função hApi.attachDocument(documentId) para vincular o documento no ged com a solicitação.

3-Posteriormente move os arquivos para uma pasta definitiva de anexos do processo. (mantendo o vinculo com as solicitações).

A etapa 2 é necessária porque durante a abertura só tenho acesso ao Id da solicitação no evento beforeTaskComplete e preciso dele pra criar o vínculo do documento no ged com a solicitação.

Para que o usuário não tenha acesso à pasta de staging e de anexos do processo, tivemos que usar usuario oauth mesmo.

Estamos testando ainda, vamos ver se ficará viável​:exploding_head:

Se der certo nós criaremos datasets padronizados para serem usados como “Lib” nos outros processos que exigirem esse tipo de manipulação de anexos.

Esse app é muito complicado… Se tivesse uma boa compatibilidade PWA eu iria padronizar o uso do site instalado como app para o usuário…

Não temos perspectiva de migração para o Fluig 2.0, e o medo de perder tudo que já fizemos…

É uma ótima alternativa a que você fez. Uso algo similar, no quesito inserir como anexo, quando é um processo executado numa widget que gera uma Resolução (de reunião) que deve ir pra outros processos (só não precisei gerar uma pasta intermediária).

Eu ainda vou enrolar o máximo possível antes de ir pro 2.0. Talvez aqui no trabalho acabem mudando pra um concorrente, então ainda não vale o esforço de iniciar adaptações.

Após minha última mensagem assisti um vídeo seu no youtube sobre anexos no fluig que já previa todos os problemas (gestão de acessos principalmente) que encontramos em nossas tentativas de manipular anexos via GED :clown_face:

Contudo, assistindo ao vídeo alguns conceitos ficaram mais claro e permitiram que chegássemos em uma nova abordagem que funcionou tanto no navegador quanto no app:

1 - UPLOAD DOS ANEXOS

Anexos do usuário são enviados para área de UPLOAD, que nada mais é do que uma pasta “temporária” no servidor contendo arquivos que o usuário enviou mas ainda não foram publicados. O envio é feito através do endpoint /ecm/upload.

2 - VÍNCULO DOS ARQUIVOS COM A SOLICITAÇÃO

Agora que temos os anexos na pasta de upload precisamos vinculá-los à solicitação, mas o problema é que durante a abertura de uma nova solicitação ainda não temos o ID dela (porque tecnicamente ela não existe ainda). Nesse momento nós usamos o evento de processo afterTaskComplete, pois durante a execução desse evento já é possível buscar o id da solicitação.

No evento em questão iremos usar o endpoint saveAttachments, onde enviaremos uma requisição detalhando os nomes dos arquivos que estão na pasta de upload do usuáro que serão anexados à solicitação.

O problema é que o evento afterTaskComplete não mantém a sessão do usuário que abriu a solicitação, iremos usar um usuário oauth. Porém a função saveAttachments busca os arquivos na pasta de upload do usuário que fez a requisição (usuario oauth no caso), a solução é mover o arquivo da pasta de upload do usuário que fez a abertura da solicitação para a pasta de upload do oauth renomeando o arquivo adicionando prefixo de colleagueId do usuário que iniciou a solicitação e também o Id da Solicitação.

Após mover os arquivos necessários (e renomeá-los para que todos os arquivos mantenham nomes únicos na pasta) basta usar o endpoint saveAttachments informando o nome dos arquivos que serão anexados ao processo e pronto!! Arquivos anexados.

3 - MANTER A LIMPEZA DA PASTA DE UPLOADS DO OAUTH

Após realizar o vínculo dos arquivos é importante fazer a limpeza da pasta de upload, pelo menos o fluig fornece api oficial para isso.

@Bruno_Gasparetto já pensaram em algum concorrente específico? :face_in_clouds:

Meu gerente tá apaixonado no SoftExpert Suite. Ele é muito mais no-code, com toda a parte de criação do processo e formulário diretamente no navegador e possuí muito mais complementos do que o Fluig.

Porém não tem essa regalia do Fluig de permitir que façamos umas customizações pesadas (poxa, podemos fazer até código java e jogar dentro dele né).