BPM

Utilizando serviço externo

805 views 16/02/2018 14/09/2020 marcio-poffo 3

O BPM permite ainda utilizar serviço externo para fazer consulta ou persistência de dados.

Esse tipo de serviço pode ser utilizado para por exemplo, alimentar uma variável do processo.

Veja por exemplo o serviço abaixo:

https://br-cidade-estado-nodejs.glitch.me/estados

[{
“id”: “AC”,
“estado”: “Acre”
},
{
“id”: “AL”,
“estado”: “Alagoas”
},
{
“id”: “AM”,
“estado”: “Amazonas”
}, …

Esse serviço retorna todos os estados do Brasil. Poderia ser utilizado inclusive como datasource.

Porém nesse caso o serviço suporta filtro para retornar um registro único.

https://br-cidade-estado-nodejs.glitch.me/estados?id=SP

No exemplo acima informamos a sigla “SP” no atributo “id” para filtrar apenas o estado específico que vai retornar.

[{
“id”: “SC”,
“estado”: “São Paulo”
}]

Com isso, podemos usar o campo estado para alimentar algum campo do processo.

Para configurar um serviço acesse o menu principal do BPM em Configurações > Serviço externo

Para o serviço configura-se então o nome, o tipo GET/POST (consulte o fornecedor do serviço para saber o tipo) e a URL. O Tipo de Execução e Protocolo do Serviço são padrões conforme a imagem. O serviço deve ser https por questões de segurança.

Conforme na URL de exemplo mais acima, o id é um parâmetro de entrada. E a resposta do serviço (saída) retorna o próprio id e também o atributo estado, que possui o nome do estado.

Em relação aos parâmetros de entrada, quando o tipo da requisição for GET,  são enviados com query param (Ex.: <url>?param1=<valor_1>&param_2=<valor_2>). Quando é uma requisição POST, os valores de entrada são enviados em um objeto JSON, sendo cada parâmetro um atributo do objeto (Ex.: { “param1”: <valor_1>, “param2”: <valor_2> }).

Em relação aos parâmetros de saída, é esperado um objeto JSON de retorno sendo cada um dos valores configurados um atributo do objeto (Ex.: { “retorno1”: <valor_1>, “retorno2”: <valor_2> }). Caso o objeto de retorno do serviço contenha valores não configurados como saída do serviço externo, esses valores serão ignorados. Se o retorno for um array JSON, o primeiro objeto deste array é extraído e os outros serão ignorados.

Em um serviço devem ser definidas entradas e saídas, podendo ter apenas entradas ou apenas saídas. Serviços com apenas entradas são comum em cenários em que realizam a persistência de dados. Quando possuem apenas saídas, são comuns em cenários que provêm informações sobre algum contexto, como dados sobre o usuário corrente.

Vamos à utilização do serviço em um processo.

No modelador de processos, clique sobre a engrenagem da ligação que você quer que execute o serviço externo:

Configurar link

No painel de propriedades (lado direito) da ligação, possui a guia Serviço Externo. Ao clicar em configurar, será exibido a tela de configuração abaixo:

O que tiver sido definido de entrada e saída no serviço, será apresentado nessa tela para conectar com o processo.

No exemplo acima, utilizaremos uma variável do processo chamada “sigla_uf” para alimentar o campo de entrada “id” do serviço.

E a resposta “estado” do serviço alimentará a variável do processo com o nome “nome_estado”. Dessa forma fechamos o ciclo de enviar parâmetros e receber a resposta no processo.

Os parâmetros de entrada podem ser de 3 tipos:

  • Variável de processo: variáveis definidas no formulário no na interface web;
  • Constante: valor fixo;
  • Variável de execução:  Disponibiliza 4 informações. Instancia do processo, nome do processo, usuário solicitante e usuário responsável atual da tarefa.

Poderia haver um serviço similar, porém com os parâmetros de entrada id e estado, e sem parâmetros de saída. E ao invés do serviço retornar informações, o serviço gravaria os dados enviados em alguma base. Onde e como os dados são gravados são de responsabilidade do serviço.

Ao BPM realizar a requisição, os seguintes headers são adicionados:

Header Descrição
X-bpm-tenant  O tenant corrente do processo que está chamando o serviço.
X-bpm-user  O usuário corrente da plataforma que está chamando o serviço.

*É possível integrar com serviços da G5, exemplo com o módulo Administração de Pessoal ou ERP.
Veja mais em Integração G5/G6

Este artigo foi útil para você?