Falha no retorno da URL para download dos anexos dos processos BPM via regra LSP
Problema
Ao realizar a chamada da API requestAttachmentAccess nas regras da G5, ocorre erro ao executar a URL que é retornada.
Ao inserir a URL de retorno no navegador, temos no navegador o retorno de que o recurso está com acesso negado e não permite realizar o download do arquivo.
Resolução
Ao analisarmos o retorno da regra, vemos que o problema ocorre devido a URL de retorno ser montada com alguns caracteres especiais que são suportados no formato JSON, mas que ao informar estes valores na URL tornam a busca pelo parâmetro incorreta.
No exemplo abaixo, ao verificarmos o retorno, observamos que os caracteres "=" e "&" são substituídos respectivamente por "\u003D" e "\u0026"
Para resolver o problema, devemos utilizar a função ConverteTexto() que irá fazer a substituição de caracteres especiais de acordo com o padrão de codificação informada no primeiro parâmetro, retorna um novo texto com os caracteres convertidos.
Abaixo um exemplo de como montar a regra base para fazer a chamada da requisição da API, com a validação do token e a conversão da URL final e os comentários indicando o que é cada parte da regra.
/* definição das variáveis que serão utilizadas */
Definir Alfa vurlanexos;
Definir Alfa vdadosanexos;
Definir Alfa vHttpgetattachments;
Definir ALfa vOutputAttachmentsuri;
Definir ALfa vOutputAttachmentsuriRetorno;
/* definição dos tipos de objetos HTTP que deverão ser utilizados. Retorna um objeto HTTP inicializado para ser utilizado nos retornos com as URLs*/
HttpObjeto(vHttpgetattachments);
HttpObjeto(vOutputAttachmentsuri);
HttpObjeto(vOutputAttachmentsuriRetorno);
/* Definição da URL contendo a API que será chamada para fazer o download do arquivo da Plataforma*/
vurlanexos = "https://platform.senior.com.br/t/senior.com.br/bridge/1.0/rest/platform/workflow/queries/requestAttachmentAccess";
/* Definição do ID do arquivo que será realizado o download da Plataforma Senior X */
vdadosanexos = "{ \"id\":\"999-9999-9999"+"\"}";
/*Monta o cabeçalho da requisição com a passagem do token de acesso a Plataforma Senior X*/
HttpAlteraCabecalhoRequisicao(vHttpgetattachments, "Content-Type", "application/json");
HttpAlteraCabecalhoRequisicao(vHttpgetattachments, "Authorization", "Bearer yuo1NA2wQfN1Y7FghFuLf1tjSLLNEUES");
/*Executa a chamada do Post para a API da Plataforma para que a mesma retorne a URL que será utilizada para download*/
HttpPost(vHttpgetattachments, vurlanexos, vdadosanexos, vOutputAttachmentsuri);
/*Como o retorno da função httpPost() irá retornar os caracteres especiais, a linha abaixo realiza a conversão do texto retirando os caracteres especiais e ajustando a URL corretamente para que seja possível realizar o download do arquivo requisitado*/
ConverteTexto("JSON",vOutputAttachmentsuri,vOutputAttachmentsuriRetorno);
x=0;
Após a execução da função completa, verificamos então que a variável que irá conter o valor do retorno após a função ConverteTexto irá apresentar a URL de download corretamente.
Funções utilizadas