Nouvelle Release d’Azure Logic Apps

Conformément à sa Road Map sur l’intégration, Microsoft a publié une nouvelle version Azure Logic Apps il y a quelques temps; en attendant la General Availability (lancement officiel) qui est annoncée pour Avril 2016.
Pour les curieux, voici cette Road Map avec les principaux jalons pour Azure Logic Apps et BizTalk Server.
Pour rappel, Logic Apps est la brique d’Azure App Services qui vous permet d’automatiser vos processus métier et de mettre en place des solutions d’intégration. Si vous avez loupé l’événement Cellenza sur App Services, je vous conseille de lire l’article Développez des Microservices sur Azure avec App Services.
Cette nouvelle version apporte des modifications et des nouvelles fonctionnalités que nous avons vécues en direct car nous étions en pleine expérimentation de la solution chez un de nos clients.
Les nouveautés touchent la façon de créer les workflows avec une meilleure expérience utilisateur mais simplifient également le scripting des workflows à des fins d’automatisation des déploiements.
Nous allons voir dans cet article les quelques changements apportés avec cette nouvelle version.
Création de Logic Apps dans le portail Azure
Design
Si vous avez déjà testé Logic Apps dans sa version initiale, vous remarquerez tout de suite la nouveauté ! Les workflows ne sont plus présentés de façon horizontale mais verticale. Les développeurs BizTalk qui veulent tester Logic Apps seront plus habitués à cette présentation.
Au-delà de l’orientation de la présentation, ce que vous remarquerez sans doute si vous avez déjà testé Logic Apps c’est le format des « briques » qui composent votre workflow. Elles sont beaucoup moins imposantes que dans la version précédente. Ce format combiné à l’orientation verticale facilite, selon nous, la lecture des workflows.
Conditions
L’ajout de condition dans le workflow, via le designer du portail Azure, est plus explicite. Après chaque action, on vous propose d’ajouter une action ou une condition. Cette possibilité n’est plus « cachée » comme dans la version précédente.
Réorganisation des actions
Contrairement à la version initiale, il est désormais possible de déplacer une « brique » à une autre étape de votre workflow directement dans le designer en glissant votre « brique » simplement.
Connecteurs
Pour ceux qui ont déjà utilisé Logic Apps et ses connecteurs (API App), vous remarquerez dans cette nouvelle version que les connecteurs ont été modifiés : la liste des connecteurs disponibles n’est plus la même et les connecteurs eux-mêmes ont évolué. Ceci s’explique par le fait que les connecteurs sont désormais gérés par Microsoft. Les connecteurs disponibles sont donc ceux qui ont déjà été migrés par Microsoft. Cela vous permet d’utiliser un connecteur beaucoup plus rapidement que dans la version précédente. En effet, auparavant l’ajout d’un connecteur déclenchait la création d’une API App dans votre groupe de ressources pour gérer ce connecteur. Notons que cela facilite également l’écriture de vos scripts de déploiement puisque vous n’avez plus à vous soucier de la déclaration d’API App dans votre script.
Attention : Tous les connecteurs disponibles dans la version précédente ne sont pas encore disponibles dans cette nouvelle release; notamment les connecteurs BizTalk : JSON encoder, Transform Service… Nous nous sommes entretenus à ce sujet avec l’équipe-produit Microsoft qui nous a indiqué qu’ils seront progressivement migrés vers le nouveau modèle. Espérons qu’ils seront disponibles pour la General Availability, annoncée pour avril.
De même, vos propres connecteurs déployés sous forme d’API App ne vous seront pas proposés tels quels dans le designer (cf. article Prise en main des Azure API Apps au coeur de l’architecture Microservices).
Il vous est cependant possible d’utiliser les connecteurs v1 en utilisant le connecteur v2 « Http + Swagger ». Cependant, dans ce cas, vous ne pouvez pas vous affranchir de la création d’une API App. Pour plus de détails à ce sujet vous trouverez un article sur le blog MSDN.
Script de déploiement
L’évolution des connecteurs dans cette nouvelle version de Logic Apps impacte nécessairement le template ARM (Azure Resource Manager) qui vous permet de déployer votre Logic App.
En créant un projet « Azure Resource Group » dans Visual Studio, vous pourrez choisir un template « Logic App and API App » qui correspond à la version précédente de Logic Apps puisqu’on y retrouve :
- Un service plan
- Un site pour la gateway
- Une gateway
- Un site pour l’API – pour chaque connecteur utilisé
- Une API – pour chaque connecteur utilisé
- Une Logic App avec le workflow qui fait appel à l’API
Il n’y a pas encore de template disponible pour la nouvelle version de Logic Apps, mais vous pouvez créer votre template ARM en déclarant uniquement :
Un service plan
- Une connexion – pour chaque connecteur utilisé
- Une Logic App avec le workflow qui fait appel aux connexions
Un nouveau type d’objet est donc utilisé : « Microsoft.Web/connections ».
Voici par exemple la déclaration de la connexion pour un connecteur de type « Azure Blob » :
{ "type": "Microsoft.Web/connections", "apiVersion": "2015-08-01-preview", "name": "[variables('blobconnection')]", "location": "[resourceGroup().location]", "dependsOn": [ ], "tags": { "displayName": "blobconnection" }, "properties": { "api": { "id": "[concat('subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Web/locations/', resourceGroup().location, '/managedApis/azureblob')]" }, "displayName": "variables('blobconnection')]", "parameterValues": { "accountName": "[parameters('blobAccountName')]", "accessKey": "[parameters('blobAccessKey')]" } } }
-
- L’identifiant de l’API est comme ci-dessous avec {api} le nom du type de connecteur souhaité :
concat('subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Web/locations/', resourceGroup().location, '/managedApis/{api}')
- Pour savoir quels paramètres indiquer dans la partie « parameterValues », vous pouvez faire un appel GET à l’URL ci-dessous. Les paramètres seront indiqués dans la section « connectionParameters » :
https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Web/locations/{region}/managedApis/{api}?api-version=2015-08-01-preview
- L’identifiant de l’API est comme ci-dessous avec {api} le nom du type de connecteur souhaité :
Dans le workflow, pour utiliser les connexions déclarées, il faut ajouter des actions de type « ApiConnection ». Voici un exemple ci-dessous :
"Create_file": { "type": "ApiConnection", "inputs": { "body": "@decodeDataUri(concat('data:application/octet-stream,',encodeURIComponent(string(triggerBody()['ContentData']))))", "host": { "api": { "runtimeUrl": "[concat('https://logic-apis-', resourceGroup().location, '.azure-apim.net/apim/azureblob')]" }, "connection": { "name": "@parameters('$connections')['azureblob']['connectionId']" } }, "method": "post", "path": "/datasets/default/files", "queries": { "folderPath": "[variables('blobFolderPath')]", "name": "@concat(utcnow(),'.xml')" } }, "conditions": [ ] }
Vous trouverez le template complet sur GitHub.
Conclusion
Cette nouvelle version d’Azure Logic Apps apporte des améliorations en termes expérience de développement et de déploiements et notamment leur automatisation. Afin de pouvoir automatiser le déploiement de workflows plus complexes, il faut également automatiser l’authentification pour certains connecteurs (SalesForce par exemple). Enfin, vivement la migration des connecteurs BizTalk dans la nouvelle version !
Ecrit à quatre mains par Manon Pernin et Radoine Douhou.