Resoumettre facilement avec les logic apps Azure

Oguzhan Yigit
Publié par Oguzhan
Catégorie : Azure / Logic Apps
04/04/2018

Qu’est-ce que la resoumisson ?

Que ce soit en utilisant Microsoft Biztalk ou encore les logics Apps Azure, la possibilité de resoumettre une requête est une fonction très intéressante et utile. C’est le genre de fonctionnalité qui, pour sûr, fait des clients heureux. Il s’agit simplement de la possibilité de relancer un process. Il est vrai qu’on pense à ce type de contexte pour pouvoir rejouer des flux qui se sont terminés en erreur. Mais il peut être parfois intéressant de pouvoir rejouer un processus qui s’est bien déroulé.

Il est vrai, c’est une fonctionnalité très très intéressante, mais au combien complexe à mettre en place !

Où est la magie avec les logic apps ?

Parce que chaque flux que nous concevons est spécifique : au niveau des règles métiers, des contraintes techniques ou encore des besoins en terme de réactivité il n’y a pas de règle universelle ou magique qui fonctionne pour chaque cas. C’est réalisable, cependant cela demande un effort certain.

Qu’est ce qui est différent avec les logics apps Azure ? Pour faire simple, les logic Apps Azure proposent une fonction de resoumission native. Il est clair que cela ne sera pas adapté à tous les cas d’usage, cependant, c’est une fonctionnalité vraiment utile dans beaucoup de contextes.

Aperçu de la fonction de resoumission des logic Apps

Tout d’abord, comment resoumettre ?

Chaque exécution d’une logic Apps Azure peut être rejouée en utilisant la fonction de resoumission depuis le portail Azure. Retrouvez le bouton de resoumission dans l’écran qui permet de consulter l’exécution d’une instance d’une logic app.

Azure logic app bouton resoumission

Si vous avez besoin de donner la main aux utilisateurs finaux pour la resoumission, j’admets volontiers que cette interface est peu adaptée. Vous pouvez utiliser les API des logics app Azure, en intégrant par exemple une fonction de resoumission dans votre propre portail ou outil. Azure propose via ses APIs, l’accès à de nombreuses fonctionnalités. Si vous souhaitez plus d’informations sur les APIs de resoumission des logics App Azure, suivez ce lien : API de resoumission des logic apps.

Comment cela fonctionne ?

Si vous êtes familier avec le portail web Azure, vous avez déjà certainement remarqué que chaque exécution des logic apps est disponible. Cela signifie que pour chaque exécution d’une logic app, un grand nombre d’informations, incluant l’ensemble des entées et des sorties sont sauvegardés quelque part. En ce qui concerne la fonction de resoumission, l’élément important et que la sortie de du déclencheur est réutilisé pour rejouer le flux : en soi, le déclencheur n’est pas rejoué ! Donc, par exemple, si vous avez un flux avec un déclencheur de type “FTP – Lorsqu’un fichier est ajouté”, et bien l’action de resoumission ne va pas enclencher une nouvelle lecture du répertoire FTP, mais va simplement utiliser le résultat de la première lecture pour relancer tout le processus.

Eléments à prendre en compte à propos de la fonctionnalité de resoumission

Cette fonctionnalité est vraiment intéressante, notamment lors de la phase de développement. Cependant, cette fonctionnalité ne peut probablement pas répondre à tous vos cas d’usage. Mais cela reste une excellente fonctionnalité. Rapidement, quelques éléments en plus à avoir en tête lorsqu’on utilise la resoumission des logic apps :

  • A ma connaissance, il n’existe aucun moyen natif de savoir si une exécution est réalisée dans un contexte de resoumission. Si vous avez ce besoin, vous devrez implémenter votre propre moyen d’identification d’un contexte de resoumission ;
  • Le délai de rétention par défaut est de 90 jours (sauf si vous avez négocié des conditions particulières avec Microsoft). Passé ce délai, la trace de l’exécution n’est plus disponible, vous ne pouvez donc plus la rejouer ;
  • Si vous avez implémenté le pattern singleton, soyez vigilant, la fonction de resoumission n’est pas contrainte par cette règle. Si vous resoumettez une instance, elle s’exécutera quoi qu’il arrive.