Sur PowerApps, le mode offline (ou mode déconnecté) est encore en cours de développement par Microsoft. Il fait partie des demandes ayant reçu le plus de votes sur le uservoice PowerApps. Cette fonctionnalité permet aux utilisateurs n’ayant pas de connexion internet, de pouvoir continuer à travailler sur PowerApps, sans être bloqué par des messages d’erreur et des multiples tentatives de connexion.

En attendant que cette fonctionnalité voit officiellement le jour, il est possible d’implémenter le mode offline pour certains cas et nous allons le voir dans cet article.

 

Présentation générale de PowerApps

Lancé fin 2015, Microsoft PowerApps est un produit SaaS, intégré dans l’offre Office 365. Il permet de créer rapidement une application web et mobile d’entreprise sans avoir à installer un environnement de développement. Si le designer de formulaire ne répond pas aux besoins de personnalisation, il est toutefois possible de saisir des formules comme sur Excel.

 

Le mode offline sur une application PowerApps

 

Pour faciliter la création d’application, PowerApps propose de démarrer à partir d’une source de données existante (Dynamics 365, OneDrive, SharePoint, SQL Server, …) ou d’un modèle PowerApps (basé sur Common Data Service).

La multitude de connecteurs disponibles simplifie l’accès aux données d’entreprise (Azure, Office 365 …) ou encore à des services externes (Salesforce par exemple).

PowerApps correspond à une des briques de l’offre Power platform de Microsoft :

  • Power BI : pour l’analyse et la visualisation de données.
  • Flow : pour l’automatisation.
  • PowerApps : pour créer des applications afin d’interagir avec les données de votre entreprise.

 

Le mode offline sur une application PowerApps

 

Une application PowerApps peut s’ouvrir de différentes manières :

  • Via un navigateur web moderne,
  • Via un smartphone ou une tablette Android ou iOS,
  • Ou encore, via l’application PowerApps du Windows Store.

 

Les formules PowerApps pour le mode offline

Afin de pouvoir implémenter le mode offline dans PowerApps, vous aurez besoin de 4 actions :

  • Détecter le statut de la connexion.
  • Sauvegarder les données dans le cache de PowerApps.
  • Charger les données du cache de PowerApps.
  • Mettre en place un timer pour exécuter des actions lorsque l’appareil est connecté.

 

Statut de la connexion de l’appareil

Il existe deux formules qui permettent de vérifier l’état de la connexion. Elles retournent un booléen toutes les deux.

  • Connected: vérifie si le smartphone est connecté. Si true, l’appareil est connecté.
  • Metered: retourne true si la connexion est limitée. Utile pour réduire le nombre d’éléments à récupérer d’une source de données.

 

ℹ Lors du développement de l’application, vous serez toujours avec le statut « Connected ».

Pour vos tests, vous devez passer par un appareil mobile (en mode avion, par exemple) ou simuler une déconnexion.

 

Gestion du cache PowerApps

PowerApps permet de créer des collections de données qui seront stockées sur l’appareil mobile. Cela permet notamment de garder une copie des données en cache lorsque l’appareil est déconnecté.

Les formules utiles sont :

  • Collect: créer une collection de données à partir d’une source.
  • ClearCollect: supprime toutes les données existantes de la collection avant d’ajouter de nouvelles données.
  • SaveData : enregistrer localement les données.
  • LoadData : charger les données du cache PowerApps.

ℹ Lors de la conception de l’application, PowerApps indique bien qu’on ne peut pas stocker de données en cache dans un navigateur web avec la formule SaveData.

 

Le mode offline sur une application PowerApps

 

Synchronisation des données

Le contrôle Timer permet d’exécuter une formule après un certain laps de temps.

Dans le cas de l’offline, cela permet vérifier le statut de la connexion à un intervalle régulier et effectuer les actions souhaitées une fois la connexion de nouveau établie.

 

Exemple d’application : une liste de tâches

Nous avons vu précédemment les moyens pour implémenter le mode offline sur PowerApps. Ci-après, une illustration de cette implémentation pour une application PowerApps permettant de gérer une liste de tâches. L’application aura une liste SharePoint comme source de données.

📌 Si vous souhaitez reproduire et tester vous-même ce qui va suivre, toutes les informations sont dans le repository Github.

Nous allons tout d’abord tester l’application pour identifier les écrans qui doivent être revus puis nous allons reprendre les concepts décrits dans la partie précédente.

 

Premier lancement de l’application PowerApps

L’activation du mode offline modifie le statut de la connexion affiché en bas de l’écran.

 

Le mode offline sur une application PowerApps

 

En mode avion, une action nécessitant une connexion à une source de données, fait apparaitre un message d’erreur.

 

Le mode offline sur une application PowerApps

 

Intégration du mode Offline

Pour pouvoir utiliser l’application quel que soit l’état de la connexion, il va falloir :

  • Stocker une copie de la liste SharePoint dans le cache PowerApps
  • Garder temporairement les mises à jour si l’appareil n’est pas connecté

 

Mise en place du cache PowerApps

Au chargement de l’application via l’événément OnStart de l’application, il est possible de récupérer notre liste de tâches et de la stocker dans le cache PowerApps. Dans ce cache, on va créer une collection « LocalTasksList ».

  • OnStart :

 

 

Le mode offline sur une application PowerApps

 

Au niveau du contrôle galerie, on va remplacer la source TasksList (SharePoint) par la collection LocalTasksList (cache PowerApps).

 

Mise à jour d’une source de données avec le mode offline

Dans cet article, nous allons aborder uniquement le cas de l’ajout d’une nouvelle tâche. Le principe est le même pour les opérations d’édition et suppression.

Au niveau du formulaire d’ajout (EditScreen1), pour la propriété OnSelect de la coche, nous allons remplacer l’action SubmitForm par la formule suivante.

 

 

La collection TasksQueue contiendra toutes les actions à synchroniser avec la source de données.

Dans l’écran contenant la liste des tâches (BrowseScreen1), nous allons ajouter un timer avec la propriété autostart et repeat à « true » et modifier la propriété duration à « 10000 » (pour 10 secondes).

Nous allons ajouter la formule suivante pour l’évènement OnTimerEnd :

 

Le mode offline sur une application PowerApps

 

Retours d’expérience sur l’utilisation de PowerApps

Durant mes tests sur cette fonctionnalité, voici ce que j’ai pu remarqué :

  • Pour la synchronisation, vous devez garder l’écran avec le timer pour que la mise à jour se fasse. Si jamais vous basculez sur une autre application, ou que votre appareil se met en veille, la synchronisation ne pourra pas alors être effectuée. L’utilisateur peut aussi revenir plus tard sur l’application une fois qu’il aura accès à une connexion internet.
  • Le test Connected permet de vérifier si l’appareil mobile est connecté en wifi ou s’il est connecté en 4G. Cependant, cela ne garantit pas d’avoir accès à internet.
  • Selon la taille de votre application et de ce que vous souhaitez mettre en cache, l’application PowerApps peut ne plus s’ouvrir en mode offline. Cela dépend donc du stockage disponible sur votre appareil mobile. Pour plus d’informations, vous pouvez vous référer à cet article : SaveData and LoadData Unleashed.
  • Seul un appareil mobile permet de tester le mode offline. Les messages d’erreur ne s’affichent pas toujours à l’écran ou ne sont pas très explicites. Dans ce cas, il faudra revenir sur l’éditeur et vérifier s’il n’y a pas d’erreurs dans les formules ou dans la logique de l’application.

 

Pour conclure cet article sur PowerApps et le mode hors ligne

Comme vous pouvez le constater, il est simple de gérer le statut de la connexion internet sur l’appareil mobile et la synchronisation des mises à jour. Une fois que vous avez compris le principe, vous pouvez le reproduire pour d’autres formulaires et d’autres applications PowerApps.

Si je dois vous partager une recommandation sur le mode offline, c’est de le tester et voir s’il peut répondre à votre besoin. Il est possible que certains points soient corrigés prochainement et le mode offline devrait également évoluer.

Source : Github