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 ? ▾
Couche : Contenu, navigation et accès
Ouvrir la carte d'architecture →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
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
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
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)
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.
- 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.
- 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.
- 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.
- 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.
- 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→crossNavigationdé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.Navigationpropose 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 serviceCrossApplicationNavigationest 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 :
- Relevez l'intent dans la barre d'adresse du navigateur ou dans le message de la console.
- 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.
- 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.
- 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.
- 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 intents | Target mapping | URL codée en dur | |
|---|---|---|---|
| Ce que c'est | Modèle de navigation : demander un intent | Règle qui résout un intent vers une application | Lien direct vers l'adresse d'une application |
| Décidé quand | À l'exécution, par utilisateur et par terminal | À la configuration, appliqué à l'exécution | Au développement |
| Respecte les rôles | Oui, via les catalogues de l'utilisateur | Oui, lorsque son catalogue figure dans les rôles de l'utilisateur | Non, le lien apparaît quel que soit l'accès |
| Changer la cible | Modifier la configuration, pas le code | Modifier ou remplacer le mapping | Modifier 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
- SAP Help Portal: Intent-Based Navigation (SAP Fiori launchpad, ABAP platform)
- SAP Help Portal: Issues with Navigation (SAP Fiori launchpad troubleshooting)
- SAPUI5 SDK: Manifest (descriptor for applications) — crossNavigation inbounds and outbounds
- SAPUI5 SDK: API reference — sap.ushell.services.Navigation
- S'applique à
- SAP S/4HANA on-premise · SAP S/4HANA Cloud Private Edition · SAP S/4HANA Cloud Public Edition · SAP BTP
- Dernière relecture