Reto #4: 😵‍💫 Dale la vuelta a los paréntesis con Power Automate

Hola a tod@s!! En esta ocasión, quiero compartir como realizar en Power Automate, uno de los retos de programación que propone el youtuber 'Miguel Ángel Durán' en su sitio web 'Advent JS', con el fin de que todos podamos mejorar nuestra lógica de programación. El reto seleccionado es 'Dale la vuelta a los paréntesis'

Mis principales objetivos al enfrentar este reto son:

  • Demostrar las capacidades de Power Automate: Aunque Power Automate no es uno de los lenguajes de programación más ampliamente reconocidos, este desafío es una excelente oportunidad para mostrar cómo esta herramienta, a pesar de ser considerada minoritaria, puede abordar con éxito problemas de programación complejos como este.
  • Utilizar funciones básicas del producto: Es importante destacar que abordaré este desafío utilizando únicamente las funciones básicas que ofrece Power Automate en su entorno en la nube. Esto significa que no recurriré a conectores premium o de terceras empresas, demostrando así la versatilidad y eficacia del producto en su estado más fundamental.
  • Descomponer la complejidad del reto, en flujos más sencillos y específicos, para una mejor compresión y gestión al cambio si hubiera que hacer evolutivos.
  • Aprender a implementar flujos recursivos: Además de resolver el desafío en sí mismo, aprovecharé la oportunidad para profundizar en el concepto de flujos recursivos en Power Automate.

Abordando el reto

El reto 'Dale la vuelta a los paréntesis' consiste en formatear correctamente unos mensajes navideños peculiares, donde el contenido de los paréntesis en el mensaje original, se deben leer al revés.

Para abordar este desafío de manera efectiva y mantener la claridad y la gestión óptima del proceso, se ha optado por una aproximación basada en flujos más pequeños y específicos en Power Automate. Con esta decisión no solo mejora la comprensión del proceso, sino que también facilita cualquier cambio o evolución futura que pueda ser necesario.

A continuación, se detalla los flujos específicos que se ha creado para llevar a cabo este desafío:

  • Flujo 'Reto04-Laucher': Este flujo está diseñado para iniciar el proceso de formateo del mensaje navideño de manera correcta. Se puede ejecutar desde otros flujos o incluso desde una aplicación de Power App.
  • Flujo 'Reto04-00': Destinado a formatear el mensaje peculiar en cada iteración del proceso.
  • Flujo 'Reto04-00-Recursive': Este flujo permite la recursividad del flujo 'Reto04-00'.
  • Flujo 'Reto04-01-Reverse': Su función principal es invertir el texto del mensaje proporcionado.
  • Flujo 'Reto04-02-Parenthesis': Diseñado para identificar y localizar todos los paréntesis presentes en el mensaje peculiar.
  • Flujo 'Reto04-03-CutPointParenthesis': Su tarea es generar todos los puntos de corte del mensaje peculiar, tanto dentro como fuera de los paréntesis, para cada nivel de iteración.

Recursividad de flujos en la nube

La recursividad es una técnica fundamental en programación donde un método se llama a sí mismo con nuevos parámetros desde dentro de su propio código.

Sin embargo, al implementar este comportamiento en flujos en la nube de Microsoft 365 a través de Power Automate, nos encontramos con limitaciones impuestas por la herramienta.

El sistema de validación integrado en Power Automate indica que los flujos no pueden invocarse a sí mismos como flujos secundarios directamente. Para superar esta restricción, se ha adoptado una solución alternativa: implementar otro flujo con los mismos parámetros de entrada y salida que el principal, actuando como intermediario para volver a llamar al flujo principal y controlar así la recursividad.

Sin embargo, al implementar estas arquitecturas en flujos de Power Automate, es crucial considerar algunos aspectos importantes:

  • Costo adicional y tiempo de ejecución: Cualquier intermediario añadido al proceso implica un costo adicional en términos de tiempo y recursos. La recursividad en Power Automate consume mucho tiempo, lo que puede resultar en una experiencia de usuario deficiente, especialmente en situaciones críticas. Por ejemplo, en un escenario simple de recursividad, el flujo principal puede tardar 3 segundos en completarse, mientras que en otros sistemas de programación más demandados se hace en milisegundos.

  • Limitaciones en ejecuciones: Es fundamental tener en cuenta que las ejecuciones de flujos en Power Automate no son ilimitadas y que existen colas de espera para su ejecución. Si se llama varias veces al método principal con un alto nivel de recursividad, esto puede provocar largas colas de espera y, en el peor de los casos, bloquear los flujos activados al agotar los recursos disponibles.

Otras consideraciones clave en la implementación del reto

Además de abordar el desafío de implementar métodos recursivos en Power Automate para resolver el reto propuesto, es crucial tener en cuenta ciertos conceptos clave que contribuyen al logro de los objetivos establecidos:

  • Manejo de componentes de tipo matriz: La gestión de las secciones de cada paréntesis del mensaje navideño peculiar requiere el uso eficaz de componentes de tipo matriz. Estos componentes son fundamentales tanto para agregar nuevos elementos como para obtener su contenido mediante procedimientos de filtrado.
  • Estructuración clara de la información: Es importante estructurar claramente la información contenida en los componentes tipo matriz utilizando estructuras de información en formato JSON.
  • Selección adecuada de conectores: Se debe elegir cuidadosamente los conectores más adecuados en cada momento para la búsqueda y manipulación de la información de los componentes de tipo matriz.
  • Conocimiento de las funciones disponibles: Es crucial tener un conocimiento profundo de las funciones que ofrece Power Automate para llevar a cabo las operaciones internas necesarias. En el contexto de este desafío, descubrí la función chunk, ya que permite transformar el mensaje navideño peculiar en una matriz de caracteres y combinado con la función reverse me facilitó la inversión del mensaje navideño.

Para aquellos interesados en explorar más a fondo, la solución completa del desafío en Power Platform está disponible para su descarga en el siguiente enlace: Reto #4: 😵‍💫 Dale la vuelta a los paréntesis.

Reflexiones el reto en Power Automate

La implementación de este tipo de retos ha sido un desafío personal, especialmente teniendo en cuenta las limitaciones inherentes de Power Automate, para cubrir los requisitos solicitados.

Agradecer sobre todo a Miguel Ángel Durán, por los retos que nos propone y las aportaciones que hace a diariamente a la comunidad de habla hispana, para sacarnos de nuestra zona de confort y seamos mejores profesionales día a día.

Entradas populares de este blog

Cargar archivos desde PowerApps a bibliotecas de SharePoint

Menús desplegables relacionados en SharePoint Online

Gestionar excepciones en Power Automate