Launchpad et contenu

Navigation basée sur les intents

La navigation basée sur les intents est le modèle de navigation SAP Fiori dans lequel une tile, un lien ou une application demande un intent, c'est-à-dire un semantic object et une action notés #SemanticObject-action, au lieu d'une application concrète. Le launchpad résout l'intent à l'exécution via les target mappings des rôles de l'utilisateur ; un même lien peut donc ouvrir des applications différentes selon le rôle ou le terminal.

L'essentiel

Type
Concept de navigation (résolution des intents à l'exécution)
Couche
Contenu, navigation et accès
Syntaxe d'un intent
#SemanticObject-action?parameter=value
Résolu par
Target mappings dans les catalogues (launchpad ABAP) ; inbounds de l'app descriptor (SAP BTP)
API développeur
sap.ushell.services.Navigation (remplace CrossApplicationNavigation, obsolète depuis SAPUI5 1.120)
Diagnostic avec
/UI2/FLIA (analyse des intents)
S'applique à
SAP S/4HANA (toutes options de déploiement), SAP BTP et SAP Build Work Zone
Couche : Contenu, navigation et accèsOù se situe-t-il ? ▾
Où se situe-t-il ?: L2 · Contenu, navigation et accèsCouche : Contenu, navigation et accès.L1L2L3L4L5L6BTP

Couche : Contenu, navigation et accès

Ouvrir la carte d'architecture →
Ce qui se passe lorsqu'un utilisateur clique sur une tile
Étape 1 sur 4: L'utilisateur ouvre le launchpadHighlighted: L1 · Point d'entrée et expérience, L2 · Contenu, navigation et accèsL1L2L3L4L5L6BTP
  1. L'utilisateur ouvre le SAP Fiori Launchpad. Le launchpad charge les spaces, les pages et les tiles accordés par les business roles de l'utilisateur. Aucun code applicatif ne s'exécute encore.

    Associés :SAP Fiori Launchpad · Business Role · Spaces et pages

  2. La tile ne contient pas d'application. Elle déclenche un intent — un semantic object associé à une action, par exemple PurchaseOrder-display — avec des paramètres facultatifs.

    Associés :Tile · Semantic Object · Navigation basée sur les intents

  3. Le launchpad recherche les target mappings dans les catalogues des rôles de l'utilisateur et les filtre par type d'appareil et par paramètres. Si rien ne correspond, l'utilisateur voit une erreur de navigation.

    Associés :Target Mapping · Catalogues (technical et business) · /UI2/FLIA

  4. Le target mapping correspondant lance la cible : une application SAPUI5 ou SAP Fiori elements, une transaction SAP GUI for HTML, une application Web Dynpro ABAP ou une URL.

    Associés :Target Mapping · SAP Fiori Elements · SAP GUI for HTML (Web GUI)

Étape 1 sur 7Voir le parcours complet sur la carte d'architecture →

Comment fonctionne la navigation basée sur les intents ?

Dans le SAP Fiori Launchpad, la partie de l'URL située après # est un intent, pas l'adresse d'une application. Un intent typique ressemble à #PurchaseOrder-display?PurchaseOrder=4500000123.

  1. L'utilisateur clique sur une tile ou un lien, ou une application déclenche la navigation dans le code. Chacun ne nomme que le semantic object, l'action et d'éventuels paramètres.
  2. Le launchpad vérifie quels intents l'utilisateur peut utiliser. Sur le launchpad ABAP, ils proviennent des catalogues des rôles PFCG de l'utilisateur.
  3. La résolution de cible du launchpad compare l'intent aux target mappings disponibles, y compris les règles de type de terminal et de paramètres.
  4. Le target mapping retenu fournit l'application : un composant SAPUI5, une transaction SAP GUI for HTML, une application Web Dynpro ABAP ou une URL, ainsi que le système sur lequel elle s'exécute.
  5. Le launchpad lance la cible et transmet les paramètres.

L'appelant ne sait jamais quelle application a répondu. La navigation basée sur les intents est un contrat à liaison tardive entre ce que l'utilisateur veut faire et l'application qui le fait.

Pourquoi SAP Fiori utilise-t-il des intents plutôt que des URL directes ?

Cette indirection résout de vrais problèmes de cycle de vie :

  • Cibles propres à chaque rôle. Le même intent peut ouvrir une vue manager pour un rôle et une vue gestionnaire pour un autre, uniquement par configuration.
  • Cibles propres à chaque terminal. Un utilisateur sur poste de travail et un utilisateur sur téléphone peuvent atteindre des applications différentes par le même lien.
  • Applications remplaçables. Un intent peut pointer aujourd'hui vers une application Web Dynpro ABAP et plus tard vers une nouvelle application SAPUI5, sans modifier les applications qui y renvoient.
  • Déploiement indépendant. Les applications ont des cycles de vie différents ; une application source ne peut pas supposer qu'une application cible est installée. Les intents laissent le launchpad décider de ce qui existe pour cet utilisateur, dans ce système.
  • Extension sans modification. Les clients peuvent rediriger un intent standard vers une application spécifique sans toucher au code SAP.

Ce sont ces propriétés qui expliquent pourquoi les applications SAP Fiori se relient entre elles par des intents plutôt que par des adresses codées en dur. La navigation basée sur les intents échange un léger effort de configuration contre des applications qui peuvent évoluer indépendamment.

Comment les développeurs déclenchent-ils la navigation basée sur les intents ?

  • SAP Fiori elements : les champs annotés avec un semantic object deviennent des smart links, et la navigation sortante est déclarée via des annotations et l'app descriptor. Le framework appelle le launchpad pour le compte du développeur.
  • App descriptor : sap.app → crossNavigation déclare les inbounds (les intents qu'une application accepte, avec des règles de paramètres, par exemple le traitement des paramètres supplémentaires : autorisés, ignorés ou non autorisés) et les outbounds (les intents qu'une application peut déclencher).
  • SAPUI5 freestyle : le service shell sap.ushell.services.Navigation propose des méthodes asynchrones pour naviguer, construire un lien, vérifier si un intent est pris en charge pour l'utilisateur et lister les liens d'un semantic object. L'ancien service CrossApplicationNavigation est obsolète depuis SAPUI5 1.120.

Les développeurs doivent vérifier qu'un intent est pris en charge avant d'afficher un lien, car la prise en charge varie selon l'utilisateur. Dans le code, la navigation basée sur les intents est une requête adressée au launchpad, jamais un appel direct à une autre application.

Où s'arrête la navigation basée sur les intents ?

  • Elle exige un runtime de launchpad ou de site. Les intents sont résolus par le shell. SAP indique que le service Navigation fonctionne dans le périmètre du launchpad courant ; une application ouverte seule, hors du launchpad ou d'un site SAP Build Work Zone, ne dispose donc d'aucun service pour les résoudre.
  • Les erreurs apparaissent à l'exécution. Un target mapping manquant ou un mauvais rôle se manifeste lorsqu'un utilisateur clique, pas lors du transport du contenu ; les tests par rôle sont donc importants.
  • Les paramètres transitent dans l'URL. Les sélections volumineuses nécessitent un app state plutôt que des paramètres d'URL, et les valeurs sensibles ne doivent pas figurer dans un intent.
  • Les cibles inter-systèmes dépendent de la configuration. Une cible dans un autre système repose sur un alias système ou une destination corrects.
  • La navigation n'est pas un état de processus. Un intent ouvre une application avec un contexte ; il n'enregistre pas ce que l'utilisateur fait ensuite, si une tâche est terminée ni ce qui vient après.

Ces limites découlent de la conception : la navigation basée sur les intents détermine où aller, et laisse à l'application cible ce qui s'y passe.

Comment diagnostiquer un intent en échec ?

Sur le launchpad ABAP, suivez les éléments factuels plutôt que de commencer par modifier le contenu :

  1. Relevez l'intent dans la barre d'adresse du navigateur ou dans le message de la console.
  2. Si la console affiche un ID de journal d'application, ouvrez le journal d'application UI2 dans SLG1 ; depuis le message, vous pouvez accéder à l'analyse des intents.
  3. Exécutez /UI2/FLIA avec l'intent, le type de terminal et l'utilisateur concerné. La transaction indique quels rôles et catalogues portent l'intent et quel target mapping lui correspond.
  4. Si le target mapping est correct mais que l'application se charge dans le mauvais système, vérifiez les alias système avec /UI2/FSAC.
  5. Si un composant SAPUI5 ne peut pas être chargé, vérifiez le journal de l'index des applications SAPUI5 avec /UI5/APP_INDEX_CALCULATE.

Sur SAP BTP, comparez l'intent de la tile avec les inbounds de l'app descriptor déployé. Un intent en échec relève généralement d'un problème de contenu ou de rôle, et les outils de la navigation basée sur les intents indiquent lequel avant toute modification.

Comment fonctionne la navigation basée sur les intents sur SAP BTP et SAP Build Work Zone ?

La syntaxe et le principe sont les mêmes ; seule la source des target mappings change. Les applications déployées sur SAP BTP déclarent leurs inbounds dans l'app descriptor, et SAP Build Work Zone traite ces inbounds comme les cibles du site. Les applications de SAP S/4HANA atteignent un site Work Zone via la Federation of Remote Content Providers, qui expose le contenu du launchpad back-end au site. Quelle que soit l'option de déploiement, la navigation basée sur les intents conserve le même contrat : un intent entre, et le contenu de l'utilisateur décide quelle application en sort.

Navigation basée sur les intents, target mapping ou URL codée en dur : quelle différence ?

Navigation basée sur les intentsTarget mappingURL codée en dur
Ce que c'estModèle de navigation : demander un intentRègle qui résout un intent vers une applicationLien direct vers l'adresse d'une application
Décidé quandÀ l'exécution, par utilisateur et par terminalÀ la configuration, appliqué à l'exécutionAu développement
Respecte les rôlesOui, via les catalogues de l'utilisateurOui, lorsque son catalogue figure dans les rôles de l'utilisateurNon, le lien apparaît quel que soit l'accès
Changer la cibleModifier la configuration, pas le codeModifier ou remplacer le mappingModifier et redéployer l'application appelante

La navigation basée sur les intents est le modèle, un target mapping est une règle à l'intérieur de ce modèle, et une URL codée en dur le contourne.

Questions fréquentes

Qu'est-ce qu'un intent dans SAP Fiori ?

Un intent est la combinaison d'un semantic object et d'une action, par exemple PurchaseOrder-display, éventuellement avec des paramètres. Il exprime ce que l'utilisateur veut faire. Le SAP Fiori Launchpad le résout vers une application concrète via les target mappings disponibles dans les rôles de l'utilisateur.

La navigation basée sur les intents est-elle la même chose que la cross-app navigation ?

Dans la pratique SAP Fiori, oui. La navigation cross-app, ou inter-applications, désigne le passage d'une application à l'autre, et la navigation basée sur les intents est le mécanisme qui la rend possible. L'ancien service SAPUI5 s'appelait d'ailleurs CrossApplicationNavigation avant que SAP ne le remplace par le service Navigation.

Pourquoi le même lien ouvre-t-il des applications différentes selon l'utilisateur ?

Parce que le launchpad résout l'intent par rapport aux target mappings propres à chaque utilisateur. Des rôles différents peuvent contenir des target mappings différents pour le même intent, et les target mappings peuvent aussi varier selon le type de terminal ; un même lien peut donc légitimement ouvrir des applications différentes.

CrossApplicationNavigation est-il obsolète ?

Oui. Le service SAPUI5 sap.ushell.services.CrossApplicationNavigation est obsolète depuis la version 1.120. Le code nouveau ou maintenu doit utiliser sap.ushell.services.Navigation, qui propose des méthodes asynchrones pour naviguer, construire des liens et vérifier si un intent est pris en charge.

Comment voir quelle application un intent ouvre pour un utilisateur ?

Sur le launchpad ABAP, exécutez /UI2/FLIA avec l'intent, le type de terminal et l'utilisateur. La transaction liste les rôles et catalogues qui portent l'intent et le target mapping qui lui correspond. Sur SAP BTP, vérifiez les inbounds dans le descriptor de l'application cible.

Sources

S'applique à
SAP S/4HANA on-premise · SAP S/4HANA Cloud Private Edition · SAP S/4HANA Cloud Public Edition · SAP BTP
Dernière relecture

SAP, SAP Fiori, SAPUI5, SAP S/4HANA, SAP BTP et les autres produits et services SAP mentionnés sont des marques commerciales ou des marques déposées de SAP SE (ou d'une société affiliée à SAP) en Allemagne et dans d'autres pays. Ce guide est indépendant ; il n'est ni affilié à SAP SE, ni sponsorisé, ni approuvé par SAP SE.