Aproveite o poder de integração dos Logic Apps


Visão Geral

Quantas vezes nós desenvolvedores não necessitamos automatizar alguma tarefa ou processo e acabamos investindo boas horas para desenvolver isto? A solução para estes problemas encontra-se em um serviço integrante do Azure App Services, os Logic Apps.

LogicApps0

O conceito de Logic Apps baseia-se na integração de vários microservices em um workflow, onde após triggers serem ativos, uma série de passos adicionais podem ser feitos por actions. Independente do microservice desejado ser um trigger ou action, ambos são denominados um connector.

Workflow e Connectors

Durante a criação um workflow, que pode-se ser feito de maneira totalmente gráfica, deve-se adicionar os connectors desejados, que basicamente são tipos especiais de API projetadas para serem integradas de maneira fácil e rápida. Alguns dos connectors disponíveis são:

  • Bing Search Connector
  • Bing Translate Connector
  • Biz Talk Connectors
  • Dropbox Connector
  • Facebook Connector
  • File Connector
  • FTP Connector
  • HTTP Listener
  • Office365 Connector
  • OneDrive Connector
  • Salesforce Connector
  • SAP Connector
  • Twilio Connector
  • Twitter Connector

Utilizando alguns dos connectors acima pode-se por exemplo, através da comunicação entre eles, montar em alguns minutos os cenários a seguir sem digitar uma linha de código:

  • Receber uma mensagem de texto quando houver um novo case em seu sistema de CRM;
  • A cada uma semana, capturar tweets e identificar a linguagem dos mesmos. Caso sejam em inglês, traduzi-los e enviá-los como um resumo semanal por e-mail;
  • A cada um hora, consultar dados em uma base SQL Server on-premises e postar notícias com os resultados no Twitter e Facebook;
  • Quando receber um request HTTP, fazer backup de uma pasta FTP em um BLOB storage.

LogicApps1

Figura 1: Exemplo de workflow de um Logic App criado de maneira gráfica, onde 4 connectors ligam-se para, a cada um dia, para backup de uma pasta FTP em um BLOB storage.

Após adicionar um connector no workflow de seu Logic App, pode ser necessário configurá-lo com alguns parâmetros antes de começar a usá-lo propriamente dito. Por exemplo, no connector do Twitter é necessário fornecer um Consumer Key e um Consumer Secret, ao passo que o connector do Office365 solicitará a autenticação de uma conta válida. Após setar tais parâmetros iniciais, pode-se interagir com os campos dos connectors, podendo-se passar a informação entre os connectors (como veremos na demonstração ao final deste post).

Alguns connectors possuem ambas funções de trigger e action, como por exemplo, o connector do Office365. Caso ele seja adicionado no inicio de um workflow este será inserido como um trigger, checando se há novos e-mails na caixa de entrada e os disponibilizando a outros action connectors. Caso já haja um trigger dentro do workflow, o connector Office365 será adicionado como action, tendo a capacidade de manipular e-mails, contatos ou eventos.

LogicApps2Figura 2: A esquerda, o connector Office365 sendo utilizado como um trigger, ao passo que a direita, ele está sendo usado como um action.

Há ainda alguns connectors especiais que somente podem ser utilizados como trigger, onde vale a pena citar o Recurrence, que pode disparar automaticamente o flow da aplicação a cada um período de tempo pré-determinado, sejam segundos, minutos, horas, dias, semanas, meses ou anos.

LogicApps3

Figura 3: Connector Recurrence

O poder dos Logic Apps não concentra-se apenas nos connectors de serviços externos, mas também no poder de nuvem do Azure. Há connectors relacionados a Machine Learning, Websites, Service Bus, WebJobs e o já mencionado BLOB Storage. Aos poucos novos connectors estão sendo adicionados, de modo que a referência atualizada dos mesmos pode ser encontrada aqui.

Caso nenhum dos connectors acima não atenda a suas necessidades ou, por algum motivo, você necessita de um nível de personalização maior, você pode estender os Logic Apps utilizando suas próprias APIs. Você pode, por exemplo, conectar sua lógica de negócio em diferentes ambientes ou sistemas, conectando-a posteriormente com qualquer um dos connectors presentes acima. Uma ótima referência de como utilizar a ASP.NET WebAPI 2 em conjunto com o Swagger para construir um connector é disponibilizada neste link.

Apesar do modo gráfico ser amplamente utilizado durante a criação de Logic Apps, pode-se ver e editar o código do schema associado, bastando clicar no botão Code View ao topo. Tomemos como exemplo o workflow abaixo, que consiste de enviar um POST para um servidor a cada 1 hora:

LogicApps4

Figura 4: Schema de um simples workflow

Tal linguagem descritiva pode ser usada para criar condições lógicas, ações de repetição e outros. A referência completa da linguagem pode ser encontrada neste link e um ótimo passo a passo aqui.

Vamos agora fazer uma pequena demonstração envolvendo o HTTP Listener, Bing Translate e Twitter connectors. A experiência será a seguinte: Após realizar um POST de uma frase em português para a URL do HTTP Listener, o Bing Translate connector irá pegar o corpo desta requisição e traduzirá o texto. Por fim, o Twitter connector postará um tweet com o resultado da tradução. Tudo isso sem qualquer linha de código!

Demonstração

Conforme dito anteriormente, alguns connectors necessitam de uma configuração prévia de parâmetros para funcionar corretamente. Em especial, o Bing Translate necessita que se registre um app, para se obter um client secret e um client id. Para o conector do Twitter, também é necessário que se registre um app no gerenciador de aplicativos, obtendo-se assim o respectivo client secret e client id. Por fim, setou-se a nível de acesso do HTTP Listener como público, para fins de demonstração.

Feitas tais considerações iniciais, temos o seguinte cenário:

LogicApps5Figura 5: Workflow de nosso sistema de tweets e tradução

Clicando duas vezes sobre o HTTP Listener podemos ver informações de configuração adicionais do connector, onde estamos interessados na URL em que deveremos enviar a ação de POST. Ao utilizar esta URL em qualquer programa que possa criar uma requisição de POST (em nosso caso usou-se o Fiddler) e enviar um corpo com um texto em português, acionaremos o flow do app:

LogicApps6

Figura 6: Criação de um POST para o HTTP Listener através do Fiddler

Após alguns segundos temos o seguinte resultado no Twitter:

LogicApps7

Figura 7: Post traduzido no Twitter

Uma das features interessantes dos Logic Apps e que vale muito a pena a ser explorado é o painel de administração dos mesmos. Pode-se obter informações sobre cada vez que o Logic App foi disparado, bem como tempos de execução, inputs e outputs de cada connector, e outras informações, conforme mostra a figura abaixo:

LogicApps8

Figura 8: Painel de administração de um Logic App

Conclusão

Pode-se notar que há um grande potencial envolvendo a flexibilidade de integração presente nos Logic Apps, sejam explorando os vários connectors já presentes na plataforma ou estendendo a experiência com suas próprias APIs. Através de um processo simples de drag e drop consegue-se construir poderosos workflows que podem servir de apoio para uma série de aplicações. O objetivo desta integração de microservices não é substituir o processo de desenvolvimento como um todo, mas sim apoia áreas estratégicas de sua aplicação. Vale a pena comentar que os Logic Apps, até o momento da postagem, estavam em Preview.


Autor: Microsoft Tech