You understand standard portal navigation, as described in Navigating in the Portal .
You understand the portal's client-side eventing mechanism, as described in Communicating with Other iViews .
You add the following imports:
importjava.util.Iterator; importcom.sap.portal.obn.service.IOBNMetadata; importcom.sap.portal.obn.service.IOBNParameterData; importcom.sap.portal.obn.service.IOBNService; importcom.sap.portal.obn.service.OBNFactory; importcom.sapportals.portal.navigation.IClientNavigationGenerator; importcom.sapportals.portal.navigation.INavigationConstants; importcom.sapportals.portal.navigation.INavigationLink; importcom.sapportals.portal.navigation.INavigationService; importcom.sapportals.portal.navigation.NavigationParameterData; importcom.sapportals.portal.navigation.NavigationParameters; importcom.sapportals.portal.navigation.NavigationSettings; importcom.sapportals.portal.prt.component.IPortalComponentRequest; importcom.sapportals.portal.prt.runtime.PortalRuntime;
This section describes how to create an OBN link in a portal application.
To execute this code, you also need a reference to the tc/ep/navigation/api DC.
Create an instance of the OBNFactory helper class.
IOBNService obnService = (IOBNService)PortalRuntime .getRuntimeResources().getService(IOBNService.KEY); OBNFactory obnFactory = obnService.getObjectsFactory();
You can also obtain an OBNFactory instance by using the static method OBNFactory.getInstance() .
Create an IOBNMetadata object for the business object and operation to which you want to navigate.
IOBNMetadata obnMD = obnFactory .createOBNMetadata("myBO",null,"myOp",request.getUser());
There are many variations on creating an IOBNMetadata object. For example, you can instead specify only a business object, and the portal will navigate to the highest-priority operation for which the user has a valid implementation.
Get the OBN URL for the navigation.
String obnUrl = obnMD.getOBNUrl(false);
Collect all the OBN parameters so you can pass them in the navigation call.
NavigationParameters is a standard navigation object for collecting parameters to be passed to the target iView.
NavigationParameters navParams = new NavigationParameters(); Iterator obnMDParamsIter = obnMD.getParametersNames(true).iterator(); while(obnMDParamsIter.hasNext()) { String paramName = (String)obnMDParamsIter.next(); IOBNParameterData obnParamData = obnMD.getParameter(paramName); navParams.addNavigationParameter( paramName, new NavigationParameterData( obnParamData.getValue(), obnParamData.isPost())); }
Create the JavaScript code for navigating.
// Get instance of helper service IClientNavigationGenerator navGenerator = (IClientNavigationGenerator) PortalRuntime.getRuntimeResources().getService(INavigationService.KEY); // Create navigation settings object NavigationSettings navSettings = new NavigationSettings(); navSettings.setMode(INavigationConstants.SHOW_INPLACE); // Create navigation link object INavigationLink link = navGenerator .createAbsoluteNavigateClientCall(obnUrl , navParams, navSettings);
Create a clickable UI element that triggers the navigation, and trigger the JavaScript code. The following creates a button that, when clicked, triggers the OBN navigation.
response.write("<input value=\"MyOp\" type=button onclick=\"" + link.getOnClick() + "\"><br>");