Forum Stats

  • 3,874,885 Users
  • 2,266,782 Discussions
  • 7,911,993 Comments

Discussions

panel tab persistence issue in webcenter portal

User_112YD
User_112YD Member Posts: 12 Green Ribbon
edited Jul 10, 2019 6:38AM in WebCenter Portal

Hi Experts,

Im using webcenter  Version 12.2.1.3.0.

we are integrating ADF(12.2.1.3.0) Taskflows in webcenter portal. these taskflows contains panel accordians and panel tabs, after integrating these taskflows in  webcenter portal its persisting the tab state(last visited state.)  and panel tabed disclosed property also not working as expected( by using scoped variables we are opening showdetail items conditionally this is working in adf not working portal).

To resolve this issue should i do change any persistence parameters or code change. Please help me to resolve this issue.

thanks in advance.

Answers

  • Daniel Merchán
    Daniel Merchán Enterprise Achitect Member Posts: 2,192 Gold Trophy
    edited Jun 11, 2019 9:33AM

    Hi,

    Oracle WebCenter Portal 12c uses the following Persistence Manager

    <context-param>    <param-name> org.apache.myfaces.trinidad.CHANGE_PERSISTENCE </param-name>    <param-value> oracle.adf.view.rich.change.MDSDocumentChangeManager </param-value>  </context-param>

    In the past I fixed this issue in Framework Portal (11g) I alwaways overrided the class for adding my own extra logic on it.

    public class CustomComposerChangeManager extends ComposerChangeManager      {      /**     * adf-config.xml still persist in session,      * @see FilteredPersistenceChangeManager     * We don't want this for the showDetailItem in the RichPanaelAccordion.     * @param context the FacesContext.     * @param component the UIComponent.     * @param change the ComponentChange.     */      @Override      public void addComponentChange(FacesContext context, UIComponent component, ComponentChange change) {          if (component instanceof RichPanelAccordion && ((RichShowDetailItem) component).getParent() instanceof RichPanelAccordion && change instanceof AttributeComponentChange          && "disclosed".equals(((AttributeComponentChange) change).getAttributeName())) {          // LOG a message using a logger          //System.out.println("ComponentChange; disclosed event on showDetailItem in a RichPanelAccordion, we don¿t persist.");              return;          }          super.addComponentChange(context, component, change);      }      }  

    I do not know if in 12c the following approach will work (also I think is not supported by Oracle doing this, I would suggest opening an Oracle SR to get an official supported way or workaround):

    1. Create your own class extending MDSDocumentChangeManager
    2. Override the method addComponentChange implementation to avoid persisting what you do not want to persist.
    3. Register this in the web.xml of your Portal Extension project (the one of the shared lib, remember that this web.xml should only contain the things you want to override).
    4. Test if your custom MDS class is being invoked and works as required.

    My workaround probably will work, but I strongly recommend you open an Oracle SR and follow a supported way.

    User_112YD
  • User_112YD
    User_112YD Member Posts: 12 Green Ribbon
    edited Jul 10, 2019 2:55AM

    Hi Daniel,

    Thanks for the reply,

    As a workaround i tried below approach:

    I extracted webcenter.ear inside that web.xml i commented the below context param and i changed the panel accordion component id then its working as needed.    

    <context-param>

        <param-name> org.apache.myfaces.trinidad.CHANGE_PERSISTENCE </param-name>

        <param-value> oracle.adf.view.rich.change.MDSDocumentChangeManager </param-value>

      </context-param>

    but i don't know the impact by commenting this context param, suggestions are welcome.

    Thanks again.

  • Daniel Merchán
    Daniel Merchán Enterprise Achitect Member Posts: 2,192 Gold Trophy
    edited Jul 10, 2019 3:07AM

    Hi,


    You should not change the web.xml of the webcenter.ear directly, this web.xml is overrided by patches quite often and it is not a supported way of doing this changes in 12c.

    In addition, do not commend the MDSDocumentChangeManager as you are literally destroying the MDS Persistance.

    My suggestion is to use the PortalExtension Application (extend.spaces.webapp.war). In the PortalSharedLib you should have a weblogic.xml where you register your custom shared libraries and a web.xml with ONLY those context-param or things you want to override.

    • Create your own extended persistance manager class (extending the previous class) and ignore persisting RichPanelTabbed. This Java Class should be in PortalExtension Project
    • Create a Java EE Deployment Descriptor (web.xml) if you do not have it in PortalSharedLibrary and add the context param you want to override. MAKE SURE YOU DO NOT INCLUDE OTHER THINGS HERE OR WEBCENTER WILL NOT START PROPERLY.

    By trying this way, any patch applied in webcenter.ear will not un-register your change. In 11g was a supported way to change some things in the EAR, but in 12c is completily un-recommended and not supported if there is not a reason for doing it.

    Kind regards.

  • User_112YD
    User_112YD Member Posts: 12 Green Ribbon
    edited Jul 10, 2019 6:38AM

    Hi Daniel,

    Thanks for the suggestion.

    i will follow the same.