Syntax for the deep linking URL

The basic deep linking URL contains the path to the specific Studio page. The URL can also contain parameters to set the state of the application data, and display a specific tab on a Tabbed Component Container.

Basic deep linking URL format

The general form of the URL is:
http://<portalhost>:<port>/<pathtopage>
Where:
  • <portalhost> is the Studio server name.
  • <port> is the Studio port.
  • <pathToPage> is the path from Studio to the specific page.

    For a simple configuration, the path is web/<application friendly URL>/<internalPageName>.

    The application friendly URL is by default the initial application name with spaces and special characters removed. For example, for an application named Sales Discovery Dashboard, the friendly URL is sales-discovery-dashboard.

    You can view and edit the application friendly URL from the Application Configuration page.

For example:

http://localhost:8080/web/sales-discovery-dashboard/data-results

Specifying the locale to use

To specify the locale to use for Studio, add the doAsUserLanguageId parameter to the URL:

http://localhost:8080/web/sales-discovery-dashboard/data-results?doAsUserLanguageId=<localeID>

Where <localeID> is the Java locale ID for the locale. For example, to display Studio in simplified Chinese:

http://localhost:8080/web/sales-discovery-dashboard/data-results?doAsUserLanguageId=zh_CN

Adding the deeplink parameter to set the data source state

If you want to set the initial state of the data as part of the deep linking URL, then you add the deeplink parameter:
http://<portalhost>:<port>/<pathtopage>?deeplink=[<dataSourceStates>]

Where <dataSourceStates> is the data source with the corresponding filters to apply:

deeplink=[
  {"<dataSourceId1>":
    {
      "queryFunctions": [<queryFunctionDefinitions>],
      "navByValue": {
        "<attribute1>":"<attributevalue1>",
        "<attribute2>":["<attributevalue2>","<attributevalue2>","<attributevalue3>"]
      }
    }
  }
]

Deep linking URLs support the query functions that are supported by the data source JSON, such as DataSourceFilter and RefinementFilter. For details on the filter syntax, see Adding filters to a data source.

For example:

"queryFunctions":[
{
"class":"DataSourceFilter",
"filterString":"Region='Sonoma'"
}
{
"class":"RangeFilter",
"property":"P_Price",
"rangeOperator":"BTWN",
"rangeType":"INTEGER",
"value1":"50",
"value2":"100"
},
{
"class":"RefinementFilter",
"attributeValue":"1997",
"attributeKey":"Vintage"
}]

You can also use SelectionFilter. SelectionFilter uses the same syntax as DataSourceFilter. Also like DataSourceFilter, SelectionFilter is a permanent filter, and is not added to the Breadcrumbs component. For example:

"queryFunctions":[
{
"class":"SelectionFilter",
"filterString":"WineType='White'"
}]

Deep linking URLS also support navByValue filters, which are similar to RefinementFilter in that they refine the data based on attribute values. However, navByValue uses the attribute display name instead of the attribute key.

For example:

"navByValue":{
			"Wine Type":"Red",
			"Region":"Other France",
			"Body":["Fresh","Full","Rich","Ripe"]

In most cases, it is preferable to use a RefinementFilter, because it is usually faster and more reliable.

The one case where you might need to use navByValue is for a managed attribute value for which you do not know the attribute key. For example, if your data source includes a State managed attribute, and you have added values (Northeast, South, Midwest, West Coast) to create a hierarchy for grouping the State attribute values, then to filter by the value "Northeast", you might need to use navByValue.

Restoring a data source to its default state

To make sure that the data source is in its default state when the link is used, with no refinements or searches applied, you pass it an empty filter.

http://<portalhost>:<port>/<pathtopage>?deeplink=[{"<datasourcename>":{}}]

Navigating to a specific tab on a Tabbed Component Container

If the page you are navigating to includes a Tabbed Component Container, then you use the pageTransitionTabState parameter to direct the user to a specific tab.

The basic format for a deep linking URL that specifies a Tabbed Component Container tab is:

http://<portalhost>:<port>/<pathtopage>?com.endeca.discovery.
pageTransitionTabState=<tabcomponentname>[<tabnumber>]&deeplink=[<dataSourceStates>]
Where:
  • <tabcomponentname> is the name of the component.
  • <tabnumber> is the number of the tab.

For example, to display the second tab on a component named ChartTabs, the value of pageTransitionTabState would be:

pageTransitionTabState=ChartTabs[2]

Notes on the length of deep linking URLs

When creating a deep linking URL with a large number of filters, you need to be aware of any limits to the request size for your application server.

Encoding also can add to the size of the original request.

For example, for Tomcat, the default maximum size of the request HTTP header is 8192.

If you need to support longer URLs, you may need to update the relevant settings on your application server.

In addition to any application server limits, note that Microsoft Internet Explorer cannot process URLs longer than 2083 characters.