4 Replies Latest reply on Jul 10, 2019 10:38 AM by 4015860

    panel tab persistence issue in webcenter portal

    4015860

      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.

        • 1. Re: panel tab persistence issue in webcenter portal
          Daniel Merchán

          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.

          1 person found this helpful
          • 2. Re: panel tab persistence issue in webcenter portal
            4015860

            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.

            • 3. Re: panel tab persistence issue in webcenter portal
              Daniel Merchán

              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.

              • 4. Re: panel tab persistence issue in webcenter portal
                4015860

                Hi Daniel,

                 

                Thanks for the suggestion.

                 

                i will follow the same.