10 Replies Latest reply on May 15, 2007 12:09 PM by Magpie

    Document Approval Problem - 2nd Version Cycle

    Magpie

      Possible bug with publication approval of a Wiki Document when the author is the only collaborative member.

       

      I can author and self approve an initial version i.e. submit for approval action will cause it to display a publish or reject within the same screen. However, once published as Version 1, if you go around an edit cycle and then submit for approval, then you are presented with the same ability to approve or reject.

       

      The Your Stuff > Documents awaiting Approvals, does show it awaiting approval, but following this through I'm presented with the Version 1 document, not the next version/draft. In short there does not seem a way of approving it on second cycles.

        • Re: Document Approval Problem - 2nd Version Cycle

          Magpie,

           

          Thanks for reporting this issue. I'm investigating whether this issue was fixed for the 1.1.1 release and will get back to you shortly.

           

           

          Regards,

           

          Bruce Ritchie

          • Re: Document Approval Problem - 2nd Version Cycle

            Magpie,

             

            We believe this issue was fixed for 1.1.1 which was just released. You will likely want to upgrade to this latest version and confirm this issue is resolved.

             

             

            Regards,

             

            Bruce Ritchie

              • Re: Document Approval Problem - 2nd Version Cycle
                Magpie

                Upgraded to v1.1.1 OK, but we still have the same problem.

                 

                To clarify further, the problem occurs with documents with an open Editing Policy with no Community level document approvers set. We tried with these approvers set also, but it made no difference.

                 

                Exploring the functionality further, we tired the closed editing policy. We found that the problems with 2nd cycle did not occur.

                 

                Is there some configuration issue - as it seems very odd that this behavior occurs.

                  • Re: Document Approval Problem - 2nd Version Cycle

                    Hi magpie,

                    I'm afraid I'm having a hard time following your description of the issue. If a document has an open editing policy, there is no approval workflow available unless a community level approver is set. Is your problem actually specific to approval and to which version of the document text an approver sees?

                      • Re: Document Approval Problem - 2nd Version Cycle
                        Magpie

                        Hi,

                         

                        Yes, I expect it's a configuration problem as it is hard to believe that

                        the symptoms would be possible under normal use.

                         

                        I checked that I had set myself as the overall community approver - I

                        assume that this means that I have to approve everything - this explains

                        some other issues that I had.

                         

                        However, in attempting to remove myself from the top level community

                        Document Settings > Approvers, I'm prevented from saving the changes -

                        see error report below.

                         

                        Thanks, Graham

                         

                        Status Code: 500

                        Exception Type: null

                        Error Message:

                        Request URI: /clearspacex/admin/community-doc-approval!approvers.jspa

                        Stack Trace:

                        com.jivesoftware.community.impl.DbCommunity.removeDocumentApprover(DbCom

                        munity.java:1674)

                        com.jivesoftware.community.proxy.CommunityProxy.removeDocumentApprover(C

                        ommunityProxy.java:794)

                        com.jivesoftware.community.action.CommunityDocApprovalAction.doApprovers

                        (CommunityDocApprovalAction.java:87)

                        sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

                        sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav

                        a:39)

                        sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor

                        Impl.java:25)

                        java.lang.reflect.Method.invoke(Method.java:585)

                        com.opensymphony.xwork.DefaultActionInvocation.invokeAction(DefaultActio

                        nInvocation.java:364)

                        com.opensymphony.xwork.DefaultActionInvocation.invokeActionOnly(DefaultA

                        ctionInvocation.java:216)

                        com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc

                        ation.java:190)

                        com.jivesoftware.community.web.webwork.FlashInterceptor.intercept(FlashI

                        nterceptor.java:41)

                        com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc

                        ation.java:188)

                        com.opensymphony.xwork.interceptor.DefaultWorkflowInterceptor.doIntercep

                        t(DefaultWorkflowInterceptor.java:168)

                        com.opensymphony.xwork.interceptor.MethodFilterInterceptor.intercept(Met

                        hodFilterInterceptor.java:86)

                        com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc

                        ation.java:188)

                        com.opensymphony.xwork.validator.ValidationInterceptor.doIntercept(Valid

                        ationInterceptor.java:115)

                        com.opensymphony.xwork.interceptor.MethodFilterInterceptor.intercept(Met

                        hodFilterInterceptor.java:86)

                        com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc

                        ation.java:188)

                        com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInt

                        erceptor.java:31)

                        com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc

                        ation.java:188)

                        com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInt

                        erceptor.java:31)

                        com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc

                        ation.java:188)

                        com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInt

                        erceptor.java:31)

                        com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc

                        ation.java:188)

                        com.opensymphony.webwork.interceptor.FileUploadInterceptor.intercept(Fil

                        eUploadInterceptor.java:171)

                        com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc

                        ation.java:188)

                        com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInt

                        erceptor.java:31)

                        com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc

                        ation.java:188)

                        com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInt

                        erceptor.java:31)

                        com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc

                        ation.java:188)

                        com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInt

                        erceptor.java:31)

                        com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc

                        ation.java:188)

                        com.jivesoftware.community.web.webwork.JiveIOCInterceptor.intercept(Jive

                        IOCInterceptor.java:640)

                        com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc

                        ation.java:188)

                        com.jivesoftware.community.web.webwork.AdminAuthInterceptor.intercept(Ad

                        minAuthInterceptor.java:48)

                        com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc

                        ation.java:188)

                        com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInt

                        erceptor.java:31)

                        com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc

                        ation.java:188)

                        com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInt

                        erceptor.java:31)

                        com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc

                        ation.java:188)

                        com.opensymphony.xwork.interceptor.ExceptionMappingInterceptor.intercept

                        (ExceptionMappingInterceptor.java:186)

                        com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc

                        ation.java:188)

                        com.jivesoftware.community.web.webwork.ModuleCheckInterceptor.intercept(

                        ModuleCheckInterceptor.java:49)

                        com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc

                        ation.java:188)

                        com.jivesoftware.community.action.AdminSecurityInterceptor.intercept(Adm

                        inSecurityInterceptor.java:64)

                        com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvoc

                        ation.java:188)

                        com.opensymphony.xwork.DefaultActionProxy.execute(DefaultActionProxy.jav

                        a:113)

                        com.opensymphony.webwork.dispatcher.DispatcherUtils.serviceAction(Dispat

                        cherUtils.java:225)

                        com.opensymphony.webwork.dispatcher.FilterDispatcher.doFilter(FilterDisp

                        atcher.java:202)

                        com.jivesoftware.community.web.webwork.JiveFilterDispatcher.doFilter(Jiv

                        eFilterDispatcher.java:53)

                        org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica

                        tionFilterChain.java:202)

                        org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt

                        erChain.java:173)

                        com.jivesoftware.community.web.filter.SetResponseCharacterEncodingFilter

                        .doFilter(SetResponseCharacterEncodingFilter.java:62)

                        org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica

                        tionFilterChain.java:202)

                        org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt

                        erChain.java:173)

                        com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.

                        java:118)

                        com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.j

                        ava:52)

                        org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica

                        tionFilterChain.java:202)

                        org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt

                        erChain.java:173)

                        com.jivesoftware.community.web.JiveActionContextCleanUp.doFilter(JiveAct

                        ionContextCleanUp.java:46)

                        org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica

                        tionFilterChain.java:202)

                        org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt

                        erChain.java:173)

                        com.jivesoftware.community.web.filter.SetRequestCharacterEncodingFilter.

                        doFilter(SetRequestCharacterEncodingFilter.java:73)

                        org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica

                        tionFilterChain.java:202)

                        org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt

                        erChain.java:173)

                        org.directwebremoting.servlet.DwrWebContextFilter.doFilter(DwrWebContext

                        Filter.java:91)

                        org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica

                        tionFilterChain.java:202)

                        org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt

                        erChain.java:173)

                        com.jivesoftware.community.upgrade.UpgradeFilter.doFilter(UpgradeFilter.

                        java:43)

                        org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica

                        tionFilterChain.java:202)

                        org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt

                        erChain.java:173)

                        com.jivesoftware.base.plugin.PluginFilter.doFilter(PluginFilter.java:71)

                         

                        org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica

                        tionFilterChain.java:202)

                        org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt

                        erChain.java:173)

                        com.jivesoftware.community.web.filter.ApplicationInitializedFilter.doFil

                        ter(ApplicationInitializedFilter.java:95)

                        org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica

                        tionFilterChain.java:202)

                        org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt

                        erChain.java:173)

                        com.jivesoftware.base.database.dao.DAOContextCleanUpFilter.doFilter(DAOC

                        ontextCleanUpFilter.java:32)

                        org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica

                        tionFilterChain.java:202)

                        org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt

                        erChain.java:173)

                        org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv

                        e.java:213)

                        org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv

                        e.java:178)

                        org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java

                        :126)

                        org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java

                        :105)

                        org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.

                        java:107)

                        org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:1

                        48)

                        org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:86

                        9)

                        org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.proc

                        essConnection(Http11BaseProtocol.java:664)

                        org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint

                        .java:527)

                        org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollow

                        erWorkerThread.java:80)

                        org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool

                        .java:684)

                        java.lang.Thread.run(Thread.java:595)

                        java.lang.NullPointerException

                          • Re: Document Approval Problem - 2nd Version Cycle

                            Couple things - I found and fixed your first issue. It's filed here if you want the details: http://www.jivesoftware.com/issues/browse/CS-1066. Basically there was a bug in the logic which decides which version of a doc to load when no version number is supplied in the url.

                             

                            I was unable to reproduce the error you saw when removing yourself as a community level approver. Upon reading the code I really couldn't see how it was possible to get the system into a state where it would occur. But since we both know it did, I added a null check in there which will protect against that exception being thrown, which is about the best I can do until I can recreate it.

                             

                            These changes will be in Clearspace 1.2, or if you'd like a patch we can get one to you today.

                              • Re: Document Approval Problem - 2nd Version Cycle
                                Magpie

                                OK - glad we got to the bottom of the initial issue on the 2nd version cycle which was particular to open collaboration where an overall community approver was set. The overall exercise has still been useful, as I understand much better the configuration and usage in this whole area.

                                 

                                In regard to the additional problem in clearing the community level approver - it feels like a data/environmental problem. The added protection should enable me to complete the deletion. I do kind of need to do this, as currently I have to approve everything!

                                 

                                Yes - if we could have a patch, I'll be able show that open publication is possible.

                                 

                                Thanks.

                            • Re: Document Approval Problem - 2nd Version Cycle
                              Magpie

                              In response to the second question. The problem is specific to version 2 of the document. Version 1 can be approved for publication OK, but no approval/reject button appears for version 2.

                               

                              Following the Your Stuff > Awaiting approval > list of documents to approve > top section (list of document requiring approval) > document - you get version 1 Published. You can't get to a version 2, even though it clearly knows a non published version needs approving. It is as if the published version is taking preference. I repeated with the version 2 having a different name - interestingly, the version 1 document is listed in the top section of documents awaiting approval - so it looks like it is going wrong at this point.

                               

                              Note: in manage version, version 1 and 2 can be seen and diff'ed.

                               

                              Again to confirm - when set to closed collaboration. Everything works as expected, approvals work fine for version 2 and beyond.