Si hablamos de integración en un ámbito de tecnología Microsoft, uno de los primeros productos que nos viene a la cabeza es BizTalk Server. Este es un producto muy potente pero que necesita de un periodo de aprendizaje considerable antes de que se pueda empezar a ser productivo. Una vez que aprendes lo suficiente sobre BizTalk te das cuenta de las enormes posibilidades que este producto tiene, así como de todo el ecosistema de adaptadores creados en torno a el, que nos permite integrarnos con la mayoría de los servicios o aplicaciones de línea de negocio existentes, pero debido al coste del producto y de la formación o contratación de un consultor especializado, las empresas suelen optar en ciertos casos por realizar desarrollos a medida para llevar a cabo la integración entre sus sistemas.
Dependiendo del tipo de integración, estos desarrollos a medida muchas veces resultan más caros y difíciles de mantener que lo estimado inicialmente. Aquí es donde surge iPaaS (Integration Platform as a Service), que no es otra cosa que una serie de servicios en la nube que nos facilitan las tareas de integración con otros servicios en la nube u on-premises. Si nos centramos en Azure, Microsoft utiliza Bizalk Services como base de su plataforma de integración.
Logic Apps
Microsoft en un intento de democratizar la integración de aplicaciones y permitir que de una forma fácil podamos automatizar nuestros procesos de negocio, ha creado Logic Apps apoyándose en los servicios que proporciona BizTalk Services.
Con Logic Apps podemos, de forma gráfica y sencilla, diseñar nuestros procesos de negocio aprovechando el gran número de conectores que forman parte de la plataforma, aparte de crear los nuestros propios si fuera necesario. A continuación podemos ver un listado de los conectores que podemos encontrar out of the box:
Logic Apps nos permite implementar flujos de trabajo que se ejecuten de forma recurrente o que se inicien como resultado de un evento como por ejemplo la llegada de un correo, un nuevo archivo o un nuevo registro en una tabla de Azure Storage.
Cada uno de los pasos del flujo de trabajo recibe el nombre de Acción y cada acción suele ser una operación de un conector o de una API App (hablaremos de esto más adelante).
Entre la lista de conectores podemos encontrar a BizTalk Services para casos de integración avanzados, donde necesitemos transformaciones de esquemas, validaciones o procesamiento de reglas de negocio.
Un ejemplo podría ser la implementación de un flujo de trabajo que realice una búsqueda cada x minutos en Twitter, sobre un nuevo producto que acabamos de lanzar par ver la opinión de la gente. Cada uno de los Tweets los podemos guardar en una tabla de Azure Storage para analizarlos posteriormente.
Ejemplo de proceso de negocio impementado con Logic apps
En nuestro caso vamos a implementar un flujo de trabajo para la gestión automatizada de peticiones de vacaciones. Monitorizaremos el buzón de correo de solicitud de vacaciones y por cada una de las peticiones recibidas se desencadenará un flujo de aprobación.
Flujo de Aprobación
- Cuando creamos una nueva Logic App en caso de que no hayamos creado aun un nuevo plan de servicio podremos realizarlo en el mismo paso.
En esta pantalla deberemos introducir el nombre de la Logic App que estamos creando, así como del App Service Plan. Para el App Service Plan debemos seleccionar el tipo (Standard, Basic, Premium), el Grupo de Recursos, y la Localización del datacenter de Azure donde queremos crearlo. El Grupo de Recursos que seleccionemos es importante porque en el caso de que creemos nuevos conectores debemos desplegarlos en este Grupo de Recursos para que estén disponibles. Además todos los conectores dentro del mismo Grupo de Recursos compartirán la misma configuración.
- Una vez creada la Logic App podremos empezar a trabajar con el diseñador para crear nuestro flujo de aprobación:
- En la lista de conectores seleccionamos el conector POP3, el cual configuraremos con los parámetros de la cuenta a monitorizar (nombre de usuario, password, servidor pop3 y puerto).
- Una vez configurado el conector podemos seleccionar la operación que más nos interesa, en nuestro caso seleccionaremos la operación Get Email, ya que lo que nos interesa es obtener cada uno de los correos que lleguen a la cuenta de solicitudes (por ejemplo vacaciones@miempresa.com) para que se inicie el flujo de trabajo. Get Email recibe como parámetro la frecuencia con la que queremos que se ejecute, en este caso para propósitos de depuración podemos seleccionar como frecuencia 1 Minuto.
- Debemos ver el flujo de trabajo de las Logic Apps como una tubería donde la salida de un conector es la entrada del siguiente y donde hasta que no finaliza el conector anterior no se ejecuta el siguiente.
- A continuación añadimos un nuevo conector al que pasaremos como parámetro la información del correo recibido por el conector POP3. En este caso vamos a guardar la solicitud recibida en una lista de O365, que usaremos como repositorio de solicitud de vacaciones. Para ello hacemos click en SharePoint Online Connector.
En este conector especificamos la url del sitio donde se encuentra la lista en la que queremos almacenar la solicitud y la URL relativa de la lista. Si nuestra lista se llama PeticionVacaciones el formato de la url relativa es Lists/PeticionVacaciones. Como antes, una vez que hemos configurado el conector ya podemos seleccionar de la lista de operaciones disponibles aquella que más nos interese. En este caso selecionamos Insert Into peticionvacaciones.
Si hacemos click en el botón “…” en el campo Título, obtendremos un listado de los campos que nos proporciona el conector de correo. El campo título del elemento de la lista queremos que contenga lo que el solicitante haya escrito en el Subject del correo, asi que en este caso seleccionamos Get Email Subject. Para el campo Solicitante seleccionamos Get Email From. En nuestro caso hemos creado un campo en la lista PeticionVacaciones al que hemos llamado Body, donde vamos a almacenar el contenido del email de la solicitud, así que seleccionaremos Get Email Body para insertar el contenido de la petición en dicho campo.Ya por último especificamos el estado de la solicitud, en nuestro caso será la cadena Denegado provisionalmente como estado inicial y en posteriores pasos del flujo de trabajo iremos modificando este estado dependiendo de ciertas reglas de negocio.
Si todo ha ido bien debemos tener el conector configurado de la siguiente forma:
Una vez que grabemos nuestro flujo de trabajo, este empezará a ejecutarse y podremos comprobar como cada minuto se obtendrá la lista de solicitudes del buzón de correo y se insertarán en la lista de SharePoint para un posterior procesamiento.
Continuará …
En un posterior post veremos como crear un conector personalizado con un API App que recibirá como parámetro el solicitante de las vacaciones así como la información de la solicitud. El conector personalizado después de aplicar las reglas de negocio necesarias devolverá como parámetros el estado de la solicitud (es decir si aprobamos o denegamos esta) y el responsable encargado de validar la petición. Con esta información actualizaremos la información en la lista de solicitud de vacaciones y enviaremos un email al responsable con un enlace al elemento de la lista como recordatorio de que tiene que aprobar dicha solicitud.