Mingle x Logix! O Legado de um ERP externalizado em aplicações Web
Atualmente venho trabalhando no desenvolvimento de uma aplicação web onde seu BackEnd é executado no ERP Logix, este que embarca muito forte os segmentos de Backoffice, Manufatura e Logística.
O maior desafio dessa integração, é expor com segurança o serviço REST deste produto sem precisar realizar configurações complexas entre a Aplicação e o ERP.
Neste artigo vamos ver na prática como implementei a plataforma Mingle na aplicação e através dela foi possível realizar o roteamento entre o FrontEnd x BackEnd.
Antes de iniciar, caso ainda não conheça a plataforma Mingle, é bom dar uma lida neste artigo que explica sobre essa incrível plataforma, que, em resumo, disponibiliza como serviço para a sustentação de aplicativos, resolvendo três principais necessidades dos clientes: Autenticação, API Gateway e Métricas, fazendo tudo isso sem que os produtos tenham que expor suas APIs diretamente para quem irá consumi-las, deixando o controle dessa exposição para o próprio Mingle.
Como pré-requisito para implementar a plataforma do Mingle, a aplicação deve estar cadastrada na plataforma Mingle. Isso é primordial pois, ao final do cadastro, você terá um código único da aplicação, sendo que este código será informado nas configurações do Mingle dentro do projeto.
Você também receberá um Alias, cuja informação será utilizada para que o Mingle saiba para qual server Logix ele precisará rotear as requisições HTTP. Importante salientar que o Mingle possui ambiente de desenvolvimento, homologação e produção.
Também é importante saber que para cada servidor Logix que irá consumir o serviço REST, é necessário um Alias cadastrado no Mingle, ou seja cada Cliente que deseja utilizar a aplicação no final deverá requisitar este Alias ao Mingle e informar na aplicação.
Ah!!! Para título de informação, nesta aplicação estamos utilizando o framework Angular e PO-UI, uma biblioteca incrível de componentes baseados em Angular.
Dito isto, a primeira coisa a fazer em termos de implementação do Mingle no projeto, foi instalar o pacote do Mingle através do comando abaixo.
npm install -- save @totvs/mingle
Nas variáveis de ambiente da aplicação, implementei os parâmetros de configuração do Mingle, tanto para ambiente “DEV” como para ambiente “PROD”, pois o Mingle possui ambientes diferentes conforme já mencionado.
O serviço principal que necessito neste momento é o serviço de Gateway gateway: true
e como a minha aplicação é web, então também devo setar o parâmetro web: true
. Como de “bandeja”, após autenticado, posso criar métricas na aplicação, então acabo setando o parâmetro de métricas também usage_metrics: true
.
No arquivo app.module criei uma instância do serviço MingleService e fiz a configuração importando os dados do meu enviroment.ts realizado anteriormente.
Pronto, a configuração para que o serviço do Mingle reconheça a aplicação está pronta.
Após a configuração realizada, criei um arquivo de serviço e importei o mingleService para dentro desse arquivo. Dessa forma, caso queira invocar algum serviço do Mingle, basta eu invocar os métodos disponíveis no meu serviço.
Perceba que implementei um método chamado login(). Para que o Mingle possa estabelecer uma conexão com o ERP, é preciso primeiramente autenticar o serviço e, assim, abrir uma sessão entre a aplicação e o Mingle. A aplicação envia para o Mingle os parâmetros “login”, “password” e “alias” mingleService.auth.login(login,password,alias)
que, por sua vez, verifica qual é o servidor do produto Logix que está cadastrado, de acordo com o Alias recebido.
Ao encontrar o servidor, então, o Mingle realiza uma chamada de autenticação ao servidor que, após validar as informações, retornará “OK” para o Mingle, resultando na liberação do serviço Gateway entre o FrontEnd e BackEnd. Caso o servidor não retorne o “OK”, a sessão não será aberta e o serviço com o Mingle não poderá ser utilizado.
A partir desse momento, quando a aplicação já possuir uma sessão aberta no Mingle, basta utilizar o serviço Gateway disponível dentro do módulo do Mingle para realizar as requições HTTP GET, POST, PUT, DELETE, conforme a necessidade do projeto.
Neste momento, só é preciso saber qual a API/Endpoint disponível no BackEnd do Logix, que o Mingle se encarregue de realizar a mágica do roteamento com servidor cadastrado na plataforma. Em nenhum momento no projeto apontei para o serviço no BackEnd.
Perceba que ao realizar a requisição GET, passando apenas o endpoint api/supply/v1/equotation
, o serviço do Mingle agrupou na url que configurei no enviroment.ts, sem expor o servidor onde está executando o BackEnd, que, por sua vez, retornou o status http 200 com o JSON da pesquisa realizada.
Com a sessão aberta da Aplicação e Mingle, há disponível vários outros recursos que o Mingle apresenta para facilitar a comunicação com a aplicação. Além dos serviços de autenticação e métricas, um recurso que devemos utilizar logo será o serviço MingleHttpInterceptor
que funciona como um interceptador de solicitações HTTP. Mas isso deixamos para um próximo momento.