With the component interfaces described below, you can access and configure different components in your custom runtime views. You can also configure the events they raise at runtime.
To be able to work with runtime content, you have to instantiate the runtime content manager first.
Instantiating RTContentManager |
import com.sap.caf.eu.gp.rtcontent.api.GPRTContentFactory; import com.sap.caf.eu.gp.rtcontent.api.IGPRTContentManager;
// instantiate the content manager IGPRTContentManager rtContentManager = GPRTContentFactory.getContentManager();
|
You use this interface to access the instances of content components attached to your custom runtime views. A content component instance is automatically created by the GP framework whenever you select a view switch from the contextual panel, or fire a contextual panel event to which a start component is assigned. The content component is bound to the corresponding Web Dynpro content component using the setContentComponent() method.
For more information, see Interface Methods for Component Initialization.
Consequently, you can use the instance in your implementation to retrieve the current process instance, phase and activity, as well as the contextual panel event that called the content component.
Retrieving Instance, Phase and Activity |
import com.sap.caf.eu.gp.process.api.IGPProcessInstance; import com.sap.caf.eu.gp.process.api.IGPActivityInstance; import com.sap.caf.eu.gp.process.api.IGPBlockInstance; import com.sap.caf.eu.gp.rtcontent.api.IGRTContentComponent;
// retrieve current instance, phase and activity IGPProcessInstance instance = contentComponent.getProcessInstance(); IGPBlockInstance currentPhase = contentComponent.getCurrentPhase(); IGPActivityInstance currentActivity = contentComponent.getCurrentActivity(); // get the contextual panel event from the content component IGPRTCPEvent event = contentComponent.getRTCPEvent();
|
The content component can raise the following events:
● Complete Activity
This event is raised at activity completion to reload the process and refresh all components with the updated information.
● Refresh View
This event is raised to refresh the contextual panel components that hold information about the current process, phase and activity.
Creating Content Component Events |
import com.sap.caf.eu.gp.rtcontent.api.IGRTContentComponentEvent;
// create a Complete Activity event IGPRTContentComponentEvent completeActivityEvent = rtContentManager.createCompleteActivityEvent(); // create a Refresh View event IGPRTContentComponentEvent refreshEvent = rtContentManager.createRefreshEvent(); // fire an event wdThis.wdFireRuntimeEvent(refreshEvent);
|
You use this interface to access the contextual panel components of your custom runtime view.
Contextual panel component instances are automatically created by the GP runtime framework when you choose a particular runtime view using the view switch in the contextual panel. They are bound to the corresponding Web Dynpro components using the setCtxPanelComponent() method.
For more information, see Interface Methods for Component Initialization.
Through the contextual panel component, you can set or retrieve the current process instance, phase and activity.
Retrieving Process Instance, Phase and Activity of the Contextual Panel Component |
// set attributes ctxPanelComponent.setProcessInstance(instance); ctxPanelComponent.setSelectedPhase(currentPhase); ctxPanelComponent.setSelectedActivity(currentActivity); // retrieve attributes IGPProcessInstance instance = ctxPanelComponent.getProcessInstance(); IGPBlockInstance currentPhase = ctxPanelComponent.getSelectedPhase(); IGPActivityInstance currentActivity = ctxPanelComponent.getSelectedActivity();
|
Contextual panel components can raise runtime events which you can create using the GP API. You can also configure these events so that they are related to, for example, a particular activity, info callable object and so on.
Creating and Configuring A Contextual Panel Component Event |
// create a contextual panel component event IGPRTCPEvent event = ctxPanelComponent.createRTCPEvent(eventId); // set the activity for which the event will be available event.addParameter(IGPRTCPEvent.PARAM_CURRENT_ACTIVITY, currentActivity); // set info callable object event.addParameter(IGPRTCPEvent.PARAM_CURRENT_INFO_CO, "sap.com/caf~eu~gp~ui~rt"); // fire the event wdThis.wdFireCtxPanelEvent(event);
|
Events raised by the contextual panel components are caught by the GP runtime and handed over to the content components. Having the event itself, the content component can retrieve the contextual panel component that raised the event, as well as all information related to it (such as current phase, activity and so on).
Retrieving a Contextual Panel Component from an Event |
// get the contextual panel component from the event IGPRTCPComponent ctxPanelComponent = event.getRTCtxPanelComponent();
|
For each contextual panel event, you can set a content component, called a start component, which is displayed in the content area once the user chooses an option from the corresponding contextual panel component. This is a way of having more than one content component in one runtime view configuration.
Adding a Start Component to an Event |
import com.sap.caf.eu.gp.wdcomponent.api.IGPWDComponent;
String applName = "com.sap.caf.eu.gp.runtime.view.Pane"; String dcName = "sap.com/caf~eu~gp~runtime~view"; event.setStartComponent(applName, dcName);
IGPWDComponent startComponent = event.getStartComponent();
|