Suivez votre progression
Accueil Trailhead
Accueil Trailhead

Utilisation de Visualforce dans Lightning Experience

Objectifs de formation

Une fois cette unité terminée, vous pourrez :
  • Mentionner au moins cinq fonctionnalités de Visualforce qui n’ont pas évolué dans Lightning Experience.
  • Décrire au moins deux fonctionnalités de Visualforce que vous devez modifier dans votre code Visualforce.
  • Mentionner au moins deux fonctionnalités de Visualforce inutilisables dans Lightning Experience.
  • Décrire comment Lightning Experience affecte l’aspect visuel des pages Visualforce existantes.

Visualforce et Lightning Experience

Lightning Experience est un univers totalement nouveau et nous espérons que vous l'appréciez. Derrière l’interface utilisateur de Lightning Experience se cache une nouvelle façon d’utiliser l’application Salesforce, une façon qui révolutionne le mode d’exécution des applications Visualforce. Dans l’ensemble, vos applications Visualforce devraient simplement fonctionner, mais il y a quelques petites choses que vous devriez savoir avant de passer à Lightning Experience.

Les détails techniques de la conception de Lightning Experience et de la manière dont il exécute les applications Visualforce sont vraiment intéressants et importants pour le travail de développement en cours. Lorsque vous serez prêt pour ces détails, le module Visualforce et Lightning Experience vous montrera la voie à suivre. Nous nous cantonnerons ici à un niveau général et diviserons les différents éléments entre ce qui fonctionne et ce qui ne fonctionne pas, ce que vous voudrez mettre à jour et d'autres questions qui vous aideront à planifier le développement de votre migration vers Lightning Experience.

Ce qui fonctionne

La liste des parties de Visualforce qui fonctionnent dans Lightning Experience est assez longue. Elle est en fait presque aussi longue que la liste des fonctionnalités de Visualforce. Par conséquent, avant de nous arrêter sur les choses qui ne sont pas dans la liste, voyons le côté positif et intéressons-nous aux nombreux éléments sur lesquels vous pourrez compter.
Tout d’abord, les mécanismes fondamentaux du fonctionnement de Visualforce ne changent pas. Que vos pages utilisent un contrôleur standard ou personnalisé, JavaScript Remoting ou des objets distants, votre connexion à Salesforce fonctionne de la même manière.
Remarque

Remarque

Si vous utilisez beaucoup JavaScript ou d'autres API pour accéder à Salesforce, vous aurez sans doute un peu de travail. Nous y viendrons.

Ensuite, le balisage de Visualforce reste inchangé. Seuls quelques balises et attributs fonctionnent différemment dans Lightning Experience, et il y en a encore moins dont nous déconseillons l'utilisation ou qui, simplement, ne fonctionnent pas. À part cela, la manière dont vous écrivez du code pour les pages et composants Visualforce reste la même.

Troisièmement, la plupart des façons dont vous pouvez utiliser Visualforce pour personnaliser votre organisation fonctionnent très bien dans Lightning Experience (même si, comme vous l’imaginez sans doute, ces personnalisations ont changé de place).

Intéressons-nous de plus près à leurs particularités. L'ensemble des éléments suivants fonctionnent très bien dans Lightning Experience, ils ont juste changé de place dans l'interface utilisateur.
  • Création d’onglets et d’applications personnalisés avec les pages Visualforce.
  • Création de liens et de boutons personnalisés renvoyant vers des pages Visualforce.
  • Création d’actions personnalisées s’ouvrant avec une page Visualforce.
  • Remplacement des actions standard avec des pages Visualforce (à une exception près, nous y reviendrons plus tard).
  • Création de flux qui utilisent des pages Visualforce.
  • Packages de pages et composants Visualforce.
Les modifications de l'interface utilisateur peuvent être mineures comme significatives. Les fonctionnalités personnalisées avec Visualforce sont automatiquement déplacées lorsque les utilisateurs jonglent entre Lightning Experience et Salesforce Classic. Vous devrez peut-être guider vos utilisateurs, mais ils seront ensuite ravis.

D’autres fonctionnalités, comme les modèles d’e-mail Visualforce, utilisent du code Visualforce en arrière-plan. Ceux-ci n'étant pas apparents dans l'interface utilisateur, ils ne changent pas.

Pour un aperçu à base de captures d'écran du nouvel emplacement des différentes fonctionnalités, consultez l'unité Utilisation de Visualforce dans Lightning Experience dans le module Visualforce et Lightning Experience

Ce qui fonctionne, mais qui doit être mis à jour et testé

L’environnement dans lequel une page Visualforce est exécutée lorsque Lightning Experience est activée est différent d’une requête Visualforce standard. Les détails techniques sont assez complexes mais pour simplifier, dans Lightning Experience, les pages Visualforce sont incorporées dans un iframe HTML affiché dans l’application Lightning Experience.

Cette modification entraîne un certain nombre de conséquences qui concernent essentiellement JavaScript et l'accès à des applications externes. Vous aurez besoin de corriger votre code et de vérifier certains éléments avant de certifier vos pages Visualforce pour une utilisation dans Lightning Experience. Nous laissons de côté les détails plus poussés qui seront évoqués dans le module Visualforce et Lightning Experience. Dans l'immédiat, contentons-nous de quelques vérifications générales afin que vous puissiez débuter vos corrections.

Pour commencer, si des pages ou des applications utilisent JavaScript, vous devrez vérifier la manière dont réagit le code. Ainsi, votre code ne peut accéder directement à l'objet global window. Vous pouvez arriver à vos fins en modifiant légèrement le code si vous en avez vraiment besoin, mais il existe probablement de meilleurs moyens d’accomplir ces tâches en utilisant les API de l’application Lightning Experience. Plus particulièrement, un code qui définit directement window.location doit absolument être révisé pour être intégré à la pile de navigation Lightning Experience.

De la même manière, un code qui assure avoir accès à la totalité de l'environnement risque d'être surpris. Il a toujours accès à la partie Visualforce du document, mais pas à toute l’application Lightning Experience. Cela conviendra à de nombreuses applications, mais vous aurez un peu de travail à faire pour celles qui veulent tout contrôler.

Si vos pages utilisent elles-mêmes des iframes, que ce soit avec <apex:iframe> ou en HTML statique, le fait qu'elles soient imbriquées dans un autre iframe pourrait engendrer des problèmes. Bien souvent, c'est un peu l'histoire de l'œuf et de la poule. Assurez-vous seulement de faire quelques tests supplémentaires.

Si vos pages contiennent une application de zone de dessin, notamment si vous avez utilisé les API Canvas pour intégrer l’application à Salesforce, prévoyez là aussi du temps pour réaliser des tests approfondis. Les applications Canvas utilisent un iframe, et alors que du code agissant de manière normale devrait fonctionner correctement, nous savons tous ce qu'il en est en réalité.

Les pages qui utilisent des objets distants et JavaScript Remoting fonctionnent sans demander l’actualisation du code d’authentification. Cependant, si vos pages utilisent d'autres API Salesforce, vous devrez peut-être adapter votre code d'authentification afin de formuler la bonne requête inter-domaines ou de l'ajuster au nouvel environnement.

Toutes les actions ci-dessus paraissent vagues et difficiles à effectuer mais, en réalité, vous ne devrez modifier que peu de code. Pour rappel, les détails à l'attention des développeurs sont disponibles dans le module Visualforce et Lightning Experience.

Ce qui ne fonctionne pas

Nous voici arrivés à ce qui est peut-être la partie la moins agréable de notre discussion. Heureusement, la liste des choses qui ne fonctionnent pas dans Visualforce pour Lightning Experience est courte et nous arriverons rapidement à son terme.

Le changement le plus important qui pourrait être difficile à contourner serait la manière dont Visualforce remplace les actions standard dans Lightning Experience, qui diffère légèrement par rapport à Salesforce Classic. Tout remplacement de l'action de liste d'objets ne sera pas accessible dans Lightning Experience.

Il y a six actions standard que vous pouvez remplacer pour la plupart des objets standard et tous les objets personnalisés dans Salesforce Classic :
  • Onglet d'objet
  • Liste d'objets
  • Vue d'enregistrement
  • Modification d'enregistrement
  • Création d'enregistrement
  • Suppression d'enregistrement
Dans Lightning Experience, les deux premières actions ont été regroupées dans une page : la page d'accueil d'objet. La page d’accueil d’objet, ainsi que certains éléments de l’onglet d’objet, comme les éléments récents, est similaire à la liste d’objets. D’autres éléments, comme les rapports ou les outils, ont été déplacés dans d’autres parties de l’interface utilisateur.

Indépendamment des réglages de l'interface utilisateur de votre organisation, aussi bien l'onglet que la liste d'objets acceptent les remplacements dans Configuration. Le fait de remplacer l'action de l'onglet d'objet remplace la page d'accueil d'objet dans Lightning Experience, comme attendu.

Cependant, dans Lightning Experience, l'action de .liste d'objets n'est pas accessible dans l'interface utilisateur, il n'y a donc pas de possibilité de la déclencher. Si votre organisation a remplacé l'action de liste d'objets pour tous les objets, cette fonctionnalité ne sera pas disponible lors de l'utilisation de Lightning Experience. Si ce remplacement comporte des fonctionnalités essentielles, vous devrez trouver un autre moyen de les rendre disponibles.

À plus petite échelle, les attributs showHeader et sidebar de <apex:page> n’ont aucun effet sur les pages Visualforce lorsqu’elles sont affichées dans Lightning Experience. L'en-tête et la barre latérale standard de Salesforce Classic sont toujours supprimés et il n'existe aucun moyen de supprimer ceux de Lightning Experience.

De nombreuses listes associées disponibles dans Salesforce Classic ne sont pas prises en charge dans Lightning Experience. Le composant <apex:relatedList> ne permet pas de contourner cette limitation. Bien essayé !

Concernant les problèmes vraiment mineurs, convertir des pages Visualforce en PDF fonctionne exactement de la même manière que dans Salesforce Classic, sans aucune des caractéristiques visuelles de Lightning Experience. C'est probablement ce que vous souhaitiez, mais si vous voulez convertir des pages en PDF avec le visuel Lightning Experience, c'est à ce jour impossible.

Une bien jolie présentation

La première chose que vous remarquerez dans Lightning Experience est sa superbe nouvelle apparence. Et si vous développez des pages Visualforce depuis longtemps, vous allez ensuite vous demander : « à quoi ressembleront mes pages Visualforce avec Lightning Experience ? » Nous allons vous répondre rapidement… bon, pour cette partie, asseyons-nous, OK ?

La réponse rapide est : à l’exception de la suppression de l’en-tête et de la barre latérale Salesforce Classic et de l’interface utilisateur qui a pris l’apparence de Lightning Experience, les pages Visualforce sont restées les mêmes dans Lightning Experience.

Plus particulièrement, le code HTML obtenu avec les composants Visualforce intégrés ne change pas lorsque la page est affichée avec Lightning Experience. De plus, les feuilles de style Salesforce Classic utilisées par ces composants sont par défaut chargées par la page. Par conséquent, les pages qui utilisent les composants <apex:inputField>, <apex:outputField>, <apex:pageBlock>, ainsi que d’autres composants à granularité fine et élevée qui respectent le style de Salesforce Classic, continuent à respecter ce style. Vous avez une petite touche de Salesforce Classic dans votre Lightning Experience.

Si toutefois vous avez utilisé des composants Visualforce sans véritable style, ou si vous avez préféré votre balisage et vos composants et si vous avez développé vos propres feuilles de style au lieu d’utiliser les styles Salesforce par défaut, vos pages ne changeront pas et conserveront le style que vous avez pris tellement de temps à développer.

En d’autres termes, dans la version de Visualforce pour Lightning Experience, nous avons privilégié la stabilité de l’apparence visuelle des pages existantes plutôt que d’essayer de les adapter de manière dynamique à Lightning Experience.

Cela dit, si la nouvelle apparence visuelle vous plaît autant qu'à nous, il existe des moyens de l'adopter à un degré plus ou moins important, selon le temps que vous souhaitez y consacrer. Nous n'en parlerons pas ici, mais une unité entière, Compréhension d'importantes considérations relatives à l'apparence visuelle, vous montre l'ensemble des possibilités et des techniques à employer pour les appliquer.

Ressources