Muy buenas a todos,
En la entrada anterior os mostré mis primeros pasos con las Logic Apps de Azure, y cómo se estaban presentando como una nueva alternativa para implementar flujos de trabajo y procesos de negocio que requirieran y usaran distintos servicios, y además lo hacían de una forma sencilla por medio de un diseñador.
Azure Logic Apps I: Primeros Pasos
Obviamente, en esta primera entrada, creé un proceso de negocio secuencial y sencillo, ejecutado manualmente que poca utilidad real tenía. En la entrada de hoy os quiero enseñar algunas de las opciones que nos ofrecen las Logic Apps y como pueden hacerlas muy interesantes, ya que nos permiten crear triggers en determinados conectores, implementar recursión, trabajar con arrays de datos, etc. Vamos a intentar ver todo esto en la entrada de hoy, para profundizar en el conocimiento de las Logic Apps y en lo que podemos hacer.
Usando Triggers en una Logic App
Una de las opciones de que disponemos a la hora de crear una Logic App, es asociar su ejecución a un Trigger de uno de los conectores, estos triggers pueden actuar de dos formas:
- Por un lado, chequear de forma recurrente en busca de nueva información, y en caso de que exista, ejecutar el resto de pasos del proceso de negocio. Para evitar que la misma información sea consumida en varias ocasiones, se borrará del origen una vez pasada a la Logic App para su consumo (Poll triggers).
- Por otro lado, se puede estar escuchando en un destino en busca de que ocurra un determinado evento (Push triggers).
No todos los conectores pueden actuar como triggers. En el siguiente enlace podréis acceder a la información que nos permite saber cuáles de los conectores pueden ser usados de esta manera y ampliar los conocimientos sobre los tipo de triggers, etc.
https://azure.microsoft.com/en-us/documentation/articles/app-service-logic-connectors-list/
A modo de ejemplo se va a crear una Logic App que conecta una lista de peticiones de SharePoint con un proceso de negocio que añade las peticiones a una cola (Service Bus de Azure) y envía un mail cuando se recibe una nueva petición.
En la Logic App que hay en la imagen anterior, podemos ver como se usa el conector de SharePoint Online como trigger. Este conector es de tipo (Poll triggers) por lo que su funcionamiento, en este caso, será el de buscar cada minuto, si hay nuevas peticiones y en su caso, añadir un mensaje en la cola del service bus de azure y mandar un mail al equipo de soporte.
Una vez configurados todos los conectores, salvamos y podemos probar la Logic App.
En la prueba se puede ver cómo una vez creada la petición, cuando se ejecuta la Logic App, el service bus recibe el mensaje correctamente.
Recursión en las Logic Apps
Para los siguientes apartados, se va a usar la misma Logic App. En este caso, cada cierto tiempo se recorren todas las peticiones y si alguna de ellas tiene la palabra ‘Test’ se envía un mail.
Las Logic Apps nos permiten crear procesos de negocio que se ejecuten de forma recursiva con una programación preestablecida. Para ello, como se ve en la Logic App que hemos creado para este ejemplo, se usa el conector «Recurrence» al principio de la misma. Una vez insertado en el diseñador tenemos que indicar la planificación y validarla, y habremos preestablecido la perioricidad con la que queremos que se ejecute nuestra Logic App.
Trabajando con Arrays en nuestras Logic Apps
Los conectores pueden trabajar con arrays de datos. Un conector podría devolver un array y se podría ejecutar el siguiente conector en un bucle para cada uno de los elementos de dicho valor devuelto.
En el ejemplo anterior, esto se puede ver con los dos conectores de SharePoint OnLine que se han utilizado, uno de ellos, devuelve una lista con los Id de las peticiones que hay registradas, y el otro, para cada id devuelve la información completa de la petición.
Como podemos ver, además el segundo conector, devuelve un array con toda la información de las peticiones. Si queremos configurar un conector para trabajar con un array, debemos hacer click sobre la opción de menú superior derecha del conector y pulsar sobre «Repeat over a list».
A continuación, indicamos el array sobre el que queremos ejecutar dicho conector.
Usando condicionales
Por último, otra de las opciones que nos permiten las Logic App es ejecutar un conector bajo unas determinadas condiciones. En la Logic App que hemos creado anteriormente y que estamos usando como ejemplo, se ha usado en el conector de Office 365.
En este caso además, vamos a evaluar la condición para todos los elementos del array devueltos por el conector anterior. Para insertar una condición tenemos que hacer click en el menú superior derecho del conector y en «Add a condition to be met».
Esto nos abre un recuadro, como el que se en la imagen inicial donde podremos añadir la condición que queramos. Las condiciones pueden resultar algo complejas al principio. Pueden ser simples como la que se ha creado en el ejemplo, o combinar or, and, etc. Como en cualquier operación lógica. Os dejo algunos enlaces de donde podéis sacar información de cómo hacer estas condiciones y todos los operadores que tenéis disponibles. Los dos primeros son ejemplos de cómo hacer condiciones que he usado para entender la forma de trabajar, y el último es la web de referencia de la msdn con todas las opciones de operadores que tenemos para usar.
http://devslice.net/2015/05/azure-logic-app-conditions-success-and-failure/
https://msdn.microsoft.com/en-US/library/azure/dn948512.aspx
Y esto es todo por hoy, he podido profundizar mucho más en las opciones que permiten usar las Logic Apps, con lo que se ha podido ver el abanico de oportunidades que tenemos disponible, y seguro que empezar a tenerlas en cuenta como solución a nuestros Flujos de Trabajo y procesos de negocio.
¿Esto es todo?, si le habéis echado un vistazo a los conectores, seguro que os habéis planteado que estos pueden ser limitados a la hora de implementar un proceso de negocio en nuestros sistemas. Y puede ser cierto, así que en próximas entradas veremos cómo crear nuestros propios conectores, para lo que tendremos que adentrarnos en el concepto de API Apps.
Un saludo a todos.