Show TOC

Intent-based NavigationLocate this document in the navigation structure

Intent-based navigation allows you to decouple the navigation triggers from the actual navigation targets, which can be flexibly configured for different roles and device types.

Rather than directly encoding the name of the target app into the URL fragment, app developers provide a navigation intent. An intent expresses what you want to do next (rather than how to do it). The following example shows an intent consisting of a combination of a semantic object and an action:

Example:

http://<server>:<port>/<path>/FioriLaunchpad.html#Employee-display

This approach allows you to decouple the intent, which is coded into the source app, from the actual navigation target, see the figure below. The target app can be defined using configuration in a so-called target mapping that maps an intent to a concrete app. This approach has several benefits:

  • You can develop and roll out new apps quickly, and adapt navigation targets later using configuration only.

    Example: You develop a new app to display employee data. For displaying employee data, we assume that you already have a Web Dynpro application available, but you are planning to replace it by an SAPUI5 application in the future.

    With the decoupling you can develop and roll out your new app now independently from the employee-display app. In your source app, you just code the navigation intent (rather than a concrete navigation target). In the configuration, you map this intent to your existing Web Dynpro application. When your new SAPUI5 app for displaying employee data is ready, you can simply map the same intent to the new SAPUI5 app in the configuration, without changing any line of code.

  • You can start different apps depending on the device type.

    Example: If a user clicks on a link in your app in a desktop environment, you can start a desktop application to display employee data. If the same user taps on the same link in your app on a mobile device, you can start a lightweight mobile app that displays the same data in a different way. You can do this by simple configuration, without changing any line of code in your source app.

  • You can start different apps depending on the role of the user.

    Example: A manager in your organization gets a different view on employee data than regular employees. You have created two views for this in your employee data app. Again, no modification is required in the code of the source app. For one intent, you can configure different navigation targets for different roles: With the same URL, the user's role determines which of the two different apps will be started.

  • You can extend and customize SAP Fiori scenarios without modifying any SAP Fiori app code, just by configuration.

The following graphic shows an example for an intent coded into a source app. The intent expresses what you want to do next on an abstract level.

Depending on the device type where the navigation is triggered as well as the user’s role, the same intent is resolved to different target apps. The target apps express how the intent can be achieved.