Logic Apps de Azure: ¿El futuro de los flujos de trabajo?

Escrito por José Carlos Rodríguez Avilés - 07/11/2015

Azure es una plataforma en continua expansión, a medida que avanza en su proceso de madurez, el número de servicios aumenta y las posibilidades disponibles son cada vez mayores. Uno de los motivos principales del éxito de Azure, es la capacidad para ofrecer a los desarrolladores servicios que puedan utilizar de una forma sencilla y siguiendo los estándares de la industria. Es por eso que nos encontramos con Azure Search, Service Bus, Azure Media Services o Caché de datos basada en Redis entre ellos.

Dentro de esa gama de servicios disponibles para los desarrolladores, desde Microsoft se quiso dotar a los mismos de herramientas más poderosas para el desarrollo de sitios webs, de ahí surge el servicio Azure App, que permite gestionar de forma independiente pero integrada no solo el portal web de un proyecto, sino la aplicación móvil y la API del mismo, tan necesarios hoy en día.

Además de esto, este servicio incorpora el concepto de Logic Apps, que son el objetivo de este artículo. A lo largo del mismo, se presenta de una forma resumida, en qué consisten, cómo utilizarlas en Azure y como se podrían conectar con SharePoint Online y Office 365. Además también se muestra cómo se podría extender la funcionalidad out-of-the-box de estas Logic Apps, que podrían constituir, en un futuro no muy lejano, un elemento fundamental en el desarrollo de los proyectos de todo tipo.

¿Qué son las Logic Apps?

Las Logic Apps son uno de los cuatro elementos que junto con las Web Apps (los tradicionales sitios web de Azure), Mobile Apps y API Apps forman el nuevo servicio llamado Azure App y que amplía el abanico de posibilidades de los sitios web tradicionales que venía ofreciendo la plataforma.

 Imagen 1.- Nuevo servicio de Azure, Azure App Service. Imagen de ScottGu's Blog.

Las Logic App permiten crear flujos de trabajo y lógicas de negocio, que interactúen con servicios SaaS y componentes On-Premises a través de un sencillo diseñador incorporado en el portal de Azure. Estos flujos se crearán interconectando entre si lo que se conoce como conectores, a lo largo de distintos pasos.

Estos conectores, que constituyen el elemento fundamental de las Logic Apps, proporcionan acceso a los datos y servicios y se pueden combinar, además, con las API Apps, para aumentar las capacidades de integración de los mismos. Además, algunos de éstos, pueden ser utilizados como triggers, de manera que ejecutarán de forma automática la lógica de negocio cuando ocurra un determinado evento sobre el servicio con el que interacciona dicho conector.

Estas Logic Apps se puede entender, como una capa superior, que permite implementar la lógica de negocio entre la gran variedad de tecnologías y servicios que se pueden usar en las soluciones tecnológicas de los proyectos hoy en día.

¿Cómo se puede crear una Logic App?

Para crear una Logic App será necesario acceder al portal de vista previa de Azure. Una vez dentro, se accede al menú de creación de una Logic App a través de las opciones Nuevo à Web y móvil à Logic App.
Imagen 3.- Pantalla de creación de una Logic App. Portal Preview de Azure. 

En este menú, Imagen 2, se indicarán los parámetros de configuración. Tras esto, se pulsa sobre Crear y comienza el aprovisionamiento de la Logic App.

Cuando éste ha concluido, se accederá a la misma para comenzar a trabajar en la definición de la lógica de negocio. Pulsando sobre Triggers and Actions, se ofrece la posibilidad de comenzar desde una plantilla existente o empezar una nueva lógica de negocio con la opción Create from scratch. Al entrar, nos muestra el diseñador para poder definir la lógica, como se ve en la Imagen 3.

Imagen 3.- Diseñador de Logic Apps. Portal Preview de Azure. 

Este diseñador presenta, en la parte derecha todos los conectores que hay disponibles out-of-the-box. Se podrán encontrar conectores para servicios como Facebook, Twitter, Dropbox, para el envío de mails, SQL Server, etc.

Para introducir uno de los conectores, solo es necesario arrastrarlo al elemento central del diseñador. A medida que se van añadiendo conectores, será necesario seleccionar qué acciones de las disponibles para cada uno de ellos se quiere realizar, e indicar los valores de entrada para la misma. Las salidas generadas por un conector, pueden ser utilizados como entrada de datos en los siguientes conectores, de manera que se pueda conformar la lógica de negocio.

Es muy probable, que algunos conectores devuelvan un array de datos como resultado. Para estos casos, se podrán configurar los conectores siguientes para que se ejecuten de forma recursiva para los elementos del array. En el menú de opciones del conector es necesario seleccionar la opción "Repeat over a list", como se ve en la Imagen 4. A continuación, será necesario indicar el array sobre el que se quiere realizar la opción del conector.

Imagen 4.- Configuración de un conector para ejecutarse de forma recursiva. 

Otra opción que se puede usar en las Logic Apps son las condiciones. Se puede configurar un conector para que se ejecute cuando se cumple una determinada condición lógica. Para usar estas condiciones, es necesario, pulsar sobre la opción en el menú de opciones del conector “Add a condition to be met”, y en la nueva casilla que aparece en el conector, indicar la función lógica que se tiene que evaluar, Imagen 5.

Figura 5.- Usando condicionales en las Logic Apps. 

Combinando esta opción con la anterior, se puede ejecutar un determinado conector para los elementos de un array que cumplan una condición.

 

Conectando una Logic App con SharePoint Online y Office 365

Dentro de la lista de conectores disponibles, se pueden encontrar conectores para SharePoint Online, SharePoint On-Premises y Office 365. Aunque ofrecen una funcionalidad reducida, éstos conectores nos permiten interaccionar con listas y bibliotecas de un sitio de SharePoint Online, o con algunos de los servicios de Office 365 como el mail o los contactos.

Para conectar la Logic App con SharePoint Online, se incluye el conector correspondiente en la misma. A continuación será necesario indicar el sitio de SharePoint con el que se quiere conectar y la lista o biblioteca con la que se desea operar.

Imagen 6.- Conector de SharePoint Online. 

Tras esto, será necesario autenticarse contra el sitio de SharePoint On-Line. Una vez hecho, el conector mostrará las acciones disponibles que podemos hacer sobre la lista indicada.

El conector de SharePoint Online es, además, uno de los conectores que pueden ser ejecutados con trigger en la Logic App. Para ello, se debe añadir este conector en primer lugar en la lógica de negocio y deshabilitar la opción “Run this logic manually”. De esta forma, se configura el conector para que cada vez que se añada un nuevo elemento en la lista o biblioteca de SharePoint, se ejecute la lógica de negocio que se haya desarrollado.

Si lo que se desea es interactuar con Office 365, también existe un conector disponible para ello. El proceso es muy similar a cuando queremos trabajar con SharePoint Online, en este caso, se añade a la lógica de negocio e inmediatamente solicita la autenticación. Tras esto, aparece la gama de acciones disponibles para utilizar, Imagen 7.

Imagen 7.- Conector de Office 365. 

¿Podemos extender los conectores?

Como ya comentamos en la sección en la que se definieron las Logic Apps, éstas, se pueden combinar con las API Apps para extender las posibilidades de las mismas. Una API App permitirá publicar una API REST para la aplicación que se ha desarrollado y si bien, no es el fin único con el que se puede crear esta API, la misma podrá ser consumida como conector dentro de una Logic App.

El primer paso para hacer esto, será crear en Visual Studio 2013 un proyecto ASP.NET Web Application, indicando la opción Azure API App (Preview).

Imagen 8.- Creación de un nuevo proyecto de tipo Azure Api App. 

El proyecto que se crea, es un proyecto de tipo Web API, que además de una estructura clásica de modelos, controladores, etc. Tiene un fichero apiapp.json que tiene información de la definición de la API App que se utilizará en Azure. Este fichero tiene una estructura como la siguiente:

{
"$schema": "http://json-schema.org/schemas/2014-11-01/apiapp.json#”,
"id": "ExampleAPIApp",
"namespace": "microsoft.com",
"gateway": "2015-01-14",
"version": "1.0.0",
"title": "ExampleAPIApp",
"summary": "",
"author": "",
"endpoints": {
"apiDefinition": "/swagger/docs/v1",
"status": null
}
}​

A modo de ejemplo, se han creado un modelo y un controlador sencillos, tal y como se haría en cualquier aplicación MVC .NET o Web API. El método del controlador, permitirá hacer un filtrado sobre un array de elementos del modelo.

El modelo:

public class Request
    {
        public int id { get; set;
}
        public string title { get;
set; }
        public int quantity { get;
set; }
    }​

Y el controlador:

 public
class RequestController : ApiController
    {
        private readonly Request[]
_requests = {
                    new Request {
id = 0, quantity = 6, title = "Example1" },
                    new Request {
id = 1, quantity = 4, title = "Example2"},
                    new Request {
id = 2, quantity = 7, title = "Example3"}
                };
        [HttpGet]
        public
IEnumerable<Request> FilterRequest(int quantity)
        {
            List<Request>
response = _requests.Where<Request>(r => r.quantity >
quantity).ToList<Request>();
            return response;
        }
    }​

La API App que se ha creado, se puede probar fácilmente por medio de Swagger, un marco para la detección y documentación de API RESTful usado de forma predeterminada en las API Apps de Azure. Esto proporcionará una interfaz gráfica para probar la API que se ha desarrollado antes de publicarla, Imagen 9.

Imagen 9.- UI de swagger para testear una Api App. 

La opción UI, se habilitará a través del fichero de configuración de Swagger que se encuentra en la carpeta App_Start del proyecto, descomentando las siguientes líneas de código.

})
    .EnableSwaggerUi(c
=>
{​

Para publicar la API App una vez testeada, se pulsa botón derecho sobre la solución y la opción Publish. Esto mostrará una ventana como la que se ve a continuación y que pide seleccionar el tipo de publicación que se quiere realizar.

Imagen 10.- Publicación de una Api App, paso 1. 

Tras pulsar sobre Publish, se solicitarán las credenciales de la cuenta de Azure donde se desea publicar la API App. Será necesario indicar todos los parámetros para crearla: Plan de Servicio, Grupo de Recursos, Nivel de Acceso y Región de Publicación y pulsar sobre Ok para continuar con el proceso.

Imagen 11.- Configurando los parámetros de la Api App en Azure. 

Antes de finalizar el proceso de publicación, se deberá volver a usar la opción de publicación de la solución para desplegar el código en la nueva API App que se ha creado. Una vez terminado, aparecerá una pantalla como la que se ve en la Imagen 12.

Imagen 12.- Confirmación de la publicación de la API App. 

Con la API App creada, si se accede al diseñador de Logic Apps en el portal de Azure, un nuevo conector para la API App que se acaba de publicar aparece disponible y podrá ser incluido en la lógica de negocio. De esta forma, se pueden extender las opciones de las Logic Apps, conectándolas con nuevos servicios o extendiendo las operaciones sobre servicios como SharePoint Online u Office 365.

Conclusiones

¿Son una alternativa real a los flujos de trabajo?. Las Logic Apps están todavía en Preview, por lo que aún es un servicio en período de maduración, que todavía presenta algunos bugs y aspectos a mejorar. No obstante, la idea de disponer de un servicio que nos permite implementar lógicas de negocio de una forma sencilla y que además permite conectar fácilmente distintas tecnologías es muy interesante. También tenemos la oportunidad de extenderlas de una forma sencilla, ya que los conectores se basan, en el estándar de facto actual para los servicios web, la API REST y en otra de las opciones que existen dentro del abanico de servicios disponibles en las aplicaciones web de Azure, las API App.

Es posible que utilizar las Logic Apps para implementar lógicas de negocio de carácter crítico en los proyectos actualmente, sea muy arriesgado y presente algunas dificultades. Sin embargo, para determinadas automatizaciones en conexiones con servicios como Facebook, Twitter, etc. Podrían ser una solución interesante desde este mismo momento. Sin duda alguna, es un servicio a tener en cuenta y resultará interesante seguir su evolución para considerarlo en un futuro próximo. Quizá en breve, podremos estar creando flujos de trabajo para SharePoint OnLine, OnPremises, Office 365, etc. por medio de este servicio de Azure.

Bibliografía

·       https://azure.microsoft.com/en-us/services/app-service/logic/
·       http://weblogs.asp.net/scottgu/announcing-the-new-azure-app-service
·       http://blogs.biztalk360.com/first-look-azure-api-apps-logic-apps/
·       https://elblogdelprogramador.wordpress.com/
·       https://azure.microsoft.com/es-es/documentation/articles/app-service-logic-connectors-list/

 

José Carlos Rodríguez Avilés

Analista programador en soluciones de SharePoint en UCI y colaborador de MadPoint

josecarlos.rodriguez@uci.com

http://elblogdelprogramador.wordpress.com

***