Creación de Azure Logic Apps desde Visual Studio
En posts anteriores hemos visto como crear microservicios mediante código utilizando Azure Functions. Sin embargo esta no es la única opción. En el presente post examinaremos las características de Azure Logic Apps y veremos cómo crear componentes de integración mediante Visual Studio.
¿Qué es Azure Logic Apps?
Azure Logic Apps es un servicio alojado en la nube que permite realizar integración de procesos mediante un diagrama de flujo. Los procesos se interconectan sin utilizar código y la definición del flujo de trabajo se halla en un fichero json, aunque lo más práctico es emplear el diseñador de flujos de trabajo, accesible tanto desde el portal de Azure como desde Visual Studio, como veremos.
La potencia y versatilidad de Azure Logic Apps reside en la gran cantidad de conectores estándar de que dispone. Los conectores se utilizan para dos funciones:
- Crear puntos de entrada o de salida desde y hacia servicios externos: Esto nos permite enlazar nuestra Logic App a información generada por dichos servicios y generar nueva información destinada a algún otro servicio. La lógica del flujo de trabajo se ejecuta como consecuencia de un desencadenador que puede enlazarse a un servicio concreto.
- Realizar acciones: Como parte del proceso podemos emplear conectores para realizar acciones sobre servicios concretos. Estas acciones se configuran también desde código declarativo en json y no es necesario tener ningún tipo de conocimiento de programación para implementarlas.
Hay literalmente cientos de conectores disponibles en Logic Apps que enlazan con multitud de aplicaciones; desde Twitter o Facebook hasta SQL Server pasando por SAP, Outlook 365, Dropbox o One Drive. Los elementos del flujo pueden ramificarse en función de parámetros y de criterios.
En este post crearemos una aplicación Logic App sencilla que detectará ciertos tweets de una cuenta de Twitter y generará correo electrónico.
Creación del proyecto Logic App
A pesar de que la creación de Logic Apps se puede realizar desde el portal de Azure, crearla desde Visual Studio tiene algunas ventajas. Por ejemplo, podemos guardar el proyecto en Azure DevOps y mantener control de versiones; asimismo, también podemos implementar el mismo proyecto en diversos grupos de recursos o incluso suscripciones.
Para crear el proyecto necesitamos tener instaladas algunas herramientas básicas que incluye la instalación de Visual Studio. Se trata de las herramientas de desarrollo en Azure, que incluye el SDK de Azure y también debemos instalar Azure Powershell ya que es el modo en que Visual Studio implementa el proyecto en Azure. Pero esto no es lo único que necesitaremos. En Visual Studio 2019 será necesario instalar también las extensiones para Azure Logic Apps disponibles en el Marketplace de Visual Studio.
Una vez instaladas las extensiones podemos crear un proyecto para Azure de tipo “Grupo de recursos de Azure”. Eso desencadena la ejecución de un asistente en el que podremos escoger el recurso que queremos crear. Como puede comprobarse, cualquier recurso puede crearse desde Visual Studio, lo que nos permite guardar la creación del recursos como proyecto en Azure DevOps y reutilizarlo:
En el momento de la creación podemos seleccionar el grupo de recursos en el que situaremos la Logic App, y asimismo podemos crear uno nuevo. Sin embargo eso puede cambiarse más adelante, durante el proceso de implantación, como veremos:
La configuración inicial del proyecto nos ofrece un fichero llamado LogicApp.json que contiene el flujo de la aplicación. Sin embargo Visual Studio nos ofrece desde el primer momento un conjunto de plantillas de integración ya preparadas y podríamos escoger alguna de ellas:
En nuestro caso vamos a crear un proyecto en blanco e iremos añadiendo pasos.
El primer paso que hemos de añadir es un desencadenador. Al igual que en Azure Functions, un desencadenador es un suceso que activa la ejecución en este caso del flujo de trabajo. Disponemos de muchos tipos de desencadenadores, incluyendo temporizadores, que ejecutarán la lógica de nuestro flujo cuando se dispare la condición.
En este caso vamos a utilizar un desencadenador de Twitter, que se disparará cuando se cree un tweet en una determinada cuenta. Al agregar el paso al diseñador el asistente nos requiere los datos de la cuenta y la autorización para recuperar el contenido de la misma:
Los datos de conexión se encriptan en el fichero JSON. A continuación pasaremos a establecer los criterios de desencadenamiento, que serán distintos para cada tipo de conector. Desde el mismo diseñador podemos crear una ramificación del flujo o simplemente añadir una acción. En este caso escogeremos un enlace a Office 365 Outlook y seleccionaremos una acción predefinida para enviar un correo electrónico:
El paso siguiente es enlazar los elementos del tweet con los elementos del correo. El asistente nos proporciona un interfaz muy manejable para colocar en los diferentes campos del mensaje de correo los datos del tweet que queremos utilizar. También es posible emplear expresiones complejas para manipular o trasformar los elementos del tweet:
No podemos depurar la Logic App desde Visual Studio, así que el siguiente paso será publicarla, ya que nuestro diagrama de flujo ya está terminado, como puede verse en la imagen destacada que encabeza este post.
Publicación y ejecución
La implementación del proyecto se realiza pulsando sobre el fichero de proyecto y escogiendo “Implementar”. Podemos escoger como destino el grupo de recursos que hemos creado al principio o crear un grupo de recursos nuevo, que puede estar situado incluso en otra suscripción. Visual Studio nos ofrece esta facilidad a la hora de implementar proyectos, ya que no existe ninguna relación entre el pryecto y la implementación. podemos implementar los proyectos de Azure en distintas suscripciones.
La implementación se realiza, como hemos comentado, mediante Azure Powershell de forma transparente. El resultado final es nuestro proyecto ya publicado, y desde ese momento podemos acudir al portal de Azure para revisarlo:
Podemos acceder a la Logic App y abrirla con el diseñador. Como veremos, la vista que tenemos del flujo es prácticamente idéntica a lo que podemos ver en Visual Studio. Esto se debe a que las Logic Apps no se compilan en Visual Studio, cosa que no sucede con las Azure Functions, que se compilan como DLL y por lo tanto no pueden editarse desde el portal de Azure. En el caso de la Logic App eso es perfectamente posible:
Si ponemos en marcha la Logic App y la monitorizamos desde el portal veremos que se ejecuta cada minuto, buscando tweets nuevos en la cuenta:
Lo único que tenemos que hacer es crear un nuevo tweet en la cuenta, Eso disparará la Logic App y generará el mensaje de correo electrónico:
La posibilidad de crear lógica compleja de negocios que se relaciona con diversos servicios es una de las características más destacables de Azure y no requiere la contratación de servicios de almacenamiento o de máquinas virtuales.