Cómo no romper los límites, cómo crear una buena arquitectura y cómo hacer un buen mantenimiento

Azure IoT y Project Online (parte II): Generar una “Issue” en Project Online

Nos habíamos quedado revisando las métricas de la cola en el “Service Bus” y comprobando que llegaban peticiones a la misma. Pues bien,  partir de este punto, podríamos interactuar con Project Online mediante una LogicApp que se disparara al recibir un elemento en la cola.

Sin embargo, no se dispone actualmente de suficiente funcionalidad para el ejemplo que estamos planteando. Sí se podría crear un proyecto nuevo o una tarea en un proyecto, por ejemplo.

Azure Functions

En nuestro caso, vamos a crear una “Azure Function”, que se ejecute cada vez que entre un elemento nuevo en la cola “windalerts”. Partiendo de que tenemos configurado el servicio “Azure Functions”, para añadir una nueva función pulsaremos  el botón “+” y, de los diferentes tipos de triggers que ofrece el sistema, se debe localizar “Service Bus Queue trigger”, tal y como se muestra en la imagen:

En nuestro caso, vamos a utilizar c#, así que pulsaremos en el enlace a dicho lenguaje y se mostrará el formulario para crear la nueva función.

Además del nombre que se le va a dar a la función, lo importante es seleccionar la conexión al service bus. Si no apareciera en el desplegable correspondiente, se debe pulsar en el enlace “nuevo” y se mostrará un formulario parecido a este

Aquí se debe seleccionar el espacio de nombres del service bus y la directiva (no debería aparecer otra que la que se muestra en la imagen).

Finalmente, se debe seleccionar el nivel de permisos y el nombre de la cola que va a disparar la función (“windalerts”, no nos confundamos).

Ya solo nos queda añadir las dll’s de CSOM para SharePoint y Project Online en la carpeta bin de la aplicación y referenciarlas. A partir de este momento, podemos hacer uso de estas apis.

No voy a entrar al detalle del código, simplemente indicar que deserializa el JSON del mensaje que recibe como parámetro para obtener sus propiedades y, a partir de ahí, se obtiene el contexto de la instancia de pwa que se va a utilizar.

A continuación, se accede al proyecto que gestiona los dispositivos, se obtiene la url de su sitio de SharePoint y se crea un nuevo elemento en la lista de “Issues” con los datos recibidos. Puesto que se trata de una demostración, los valores de la instancia de pwa, GUID del proyecto, usuarios y contraseñas están directamente en el código, aunque por seguridad no sería la opción más recomendable.

El resultado es el siguiente

Y este sería el código completo de la función:

 

mm

Sobre José Rafael García Rodrigo

Llevo unos catorce años trabajando en el negocio de IT, los últimos doce dedicados a tecnologías Microsoft, especialmente SharePoint y Office 365, BPM (Nintex y K2) y gestión de proyectos (Project Server). Durante todo este tiempo he realizado diferentes funciones (desarrollador, analista, arquitecto, consultor, Team Leader…) hasta llegar a mi puesto actual como Project Manager en ENCAMINA. No tengo muy claro el por qué, pero cuando nació mi hijo mayor nació también en mí la necesidad del emprendimiento. De repente, mi cabeza trataba de solucionar los problemas de negocio que iba advirtiendo tanto en mi vida profesional como personal, buscando oportunidades en los nuevos avances tecnológicos. Aprendí muchísimo durante el camino y creo que todo ese conocimiento me ayudará a hablar en este blog de cómo aprovechar la tecnología para descubrir propuestas disruptivas que ni siquiera nos hubiésemos planteado hace poco tiempo y que cambiarán nuestra organización y la relación con los clientes de manera inimaginable.
Esta entrada ha sido publicada en Azure, IoT. Enlace permanente.
ENCAMINA, piensa en colores