2017-12-19 3 views
2

Ich habe ein schlampiges Problem beim Laden eines ViewPanel, die Seite öffnet, aber es sieht aus wie die Datenquelle lädt alle Dokumente gleichzeitig, an diesem Punkt versucht, ein aufgeführtes Dokument zu öffnen es dauert lange. Können Sie mir sagen, ob Sie die Anzahl der Dokumente begrenzen können, die von der Datenquelle geladen werden? um die Leistung zu verbessern.langsam zu öffnen 'viewPanel' (Xpages)

<?xml version="1.0" encoding="UTF-8"?> 
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" 
xmlns:xc="http://www.ibm.com/xsp/custom" 
xmlns:xe="http://www.ibm.com/xsp/coreex"> 
<xp:this.data> 
    <xp:dominoView var="viewProposta" keysExactMatch="true" 
     dataCache="nodata"> 

     <xp:this.categoryFilter><![CDATA[#{javascript:var filtro=[]; 
       if(viewScope.statusVoltar!=null){ 
        viewScope.status=viewScope.statusVoltar; 
        sessionScope.remove("statusVoltar"); 
       } 
       if(compositeData.filtraUsuario){ 
        filtro.push(sessionScope.usuarioLogado.nome); 
       } 
       if(compositeData.filtraEntidade){ 
        filtro.push(sessionScope.usuarioLogado.fk_entidade_funcional); 
       } 
       return filtro.join("\\");}]]> 
     </xp:this.categoryFilter> 

     <xp:this.viewName><![CDATA[#{javascript:if(!viewScope.minhasPendencias){ 
      if(compositeData.filtraEntidade){ 
       switch(viewScope.status) { 
        case "Solicitado": 
         var vw = "vw_parecer_solicitado_entidade" 
         break; 
        ... 
       } 
      } 
      if(compositeData.filtraUsuario){ 
       switch(viewScope.status) { 
        case "Solicitado": 
         var vw = "vw_parecer_solicitado_usuario" 
         break; 
        .... 
        } 
       } 
      }else 
      var vw= "vw_parecer_minhas_pendencias"; 

      return vw;}]]> 
     </xp:this.viewName> 
    </xp:dominoView> 

</xp:this.data> 


<xp:viewPanel value="#{viewProposta}" rows="20" id="viewPanel1" 
    pageName="/xsp_parecer.xsp" viewStyleClass="bloco" var="doc"> 

    <xp:viewColumn columnName="ds_status" id="viewColumn8" 
     style=""> 
     <xp:this.facets> 
      <xp:viewColumnHeader value="" xp:key="header" 
       id="viewColumnHeader8" style="text-align:center"> 
      </xp:viewColumnHeader> 
     </xp:this.facets> 
     <xp:this.rendered><![CDATA[#{javascript:viewScope.statusVector.length>0}]]></xp:this.rendered> 
    </xp:viewColumn> 


    <xp:viewColumn columnName="ds_parecer" displayAs="link" 
     style="width:18.0%"> 
     <xp:this.openDocAsReadonly><![CDATA[#{javascript:var valores:java.util.Vector =doc.getDocument().getItemValue("no_destinatarios"); 
      valores.addAll(doc.getDocument().getItemValue("no_emitente")); 
      return !valores.contains(sessionScope.usuarioLogado.nome);}]]></xp:this.openDocAsReadonly> 
     <xp:viewColumnHeader style="text-align:center" 
      value="Ds_parecer"> 
     </xp:viewColumnHeader> 

     <xp:eventHandler event="onclick" submit="true" 
      refreshMode="complete"> 
      <xp:this.action> 
       <xp:actionGroup> 
        <xp:executeScript> 
         <xp:this.script><![CDATA[#{javascript:if(compositeData.filtraEntidade) 
           return sessionScope.retornarPara="/xsp_lista_propostas_unidade.xsp"; 
          else 
           return sessionScope.retornarPara="/xsp_lista_propostas.xsp";}]]> 
         </xp:this.script> 
        </xp:executeScript> 
        <xp:openPage target="editDocument" 
         documentId="#{javascript:doc.getDocument().getUniversalID()}"> 
         <xp:this.name><![CDATA[#{javascript:return "/xsp_"+doc.getDocument().getItemValueString("form").split("_")[1]+".xsp"}]]></xp:this.name> 
        </xp:openPage> 
       </xp:actionGroup> 
      </xp:this.action> 
     </xp:eventHandler> 

    </xp:viewColumn> 

    <xp:viewColumn id="viewColumn2" style="width:13%"> 
     <xp:this.value><![CDATA[#{javascript: 
     if(!doc.isCategory()){ 
      var fk=doc.getDocument().getItemValueString("fk_proposta"); 
      if(fk == null || fk == "") 
       fk = doc.getDocument().getItemValueString("fk_proposta_aux"); 
      return @DbLookup("","vw_proposta_pesquisa",fk,"ds_proposta");}}]]></xp:this.value> 
     <xp:viewColumnHeader id="viewColumnHeader2" value="Proposta" 
      style="text-align:center"> 
     </xp:viewColumnHeader> 
    </xp:viewColumn> 

    <xp:viewColumn columnName="no_processo_adm" id="viewColumn10" 
     style=""> 
     <xp:this.facets> 
      <xp:viewColumnHeader value="No_processo_adm" 
       xp:key="header" id="viewColumnHeader10" 
       style="text-align:center"> 
      </xp:viewColumnHeader> 
     </xp:this.facets> 
    </xp:viewColumn> 

    <xp:viewColumn columnName="ds_assunto"> 
     <xp:this.facets> 
      <xp:viewColumnHeader value="Ds_assunto" xp:key="header" 
       style="text-align:center"> 
      </xp:viewColumnHeader> 
     </xp:this.facets> 
    </xp:viewColumn> 
    <xp:viewColumn columnName="unidade_solicitante" 
     style="width:8%"> 
     <xp:viewColumnHeader value="Unidade_solicitante" 
      style="text-align:center"> 
     </xp:viewColumnHeader> 
    </xp:viewColumn> 
    <xp:viewColumn columnName="no_remetente" id="viewColumn4" 
     style="text-align:left"> 
     <xp:viewColumnHeader value="No_remetente" 
      id="viewColumnHeader4" style="text-align:center"> 
     </xp:viewColumnHeader> 
    </xp:viewColumn> 

    <xp:viewColumn columnName="ct_posicao_parecer" id="viewColumn3" 
     styleClass="centro"> 

     <xp:this.rendered><![CDATA[#{javascript:viewScope.status=="Concluído"}]]></xp:this.rendered> 
     <xp:viewColumnHeader value="Ct_posicao_parecer" 
      id="viewColumnHeader3" style="text-align:center"> 
     </xp:viewColumnHeader> 
    </xp:viewColumn> 

    <xp:viewColumn columnName="dt_envio" id="viewColumn5" 
     styleClass="centro"> 
     <xp:this.rendered><![CDATA[#{javascript:viewScope.status!="Concluído"}]]></xp:this.rendered> 
     <xp:viewColumnHeader value="Dt_envio" id="viewColumnHeader5" 
      style="text-align:center"> 
     </xp:viewColumnHeader> 
    </xp:viewColumn> 

    <xp:viewColumn columnName="dt_conclusao" id="viewColumn1" 
     styleClass="centro"> 

     <xp:this.rendered><![CDATA[#{javascript:viewScope.status=="Concluído"}]]></xp:this.rendered> 
     <xp:viewColumnHeader value="Dt_conclusao" 
      id="viewColumnHeader1" style="text-align:center"> 
     </xp:viewColumnHeader> 
    </xp:viewColumn> 

    <xp:viewColumn id="viewColumn7" rendered="false"> 
     <xp:this.value><![CDATA[#{javascript:return ""}]]></xp:this.value> 
     <xp:button value="Remover" id="killdoc"> 
      <xp:eventHandler event="onclick" submit="true" 
       refreshMode="partial" refreshId="viewPanel1" id="eventHandler1"> 

       <xp:this.script> 
        <xp:executeClientScript> 
         <xp:this.script><![CDATA[return window.confirm("Confirma a exclusão?")]]></xp:this.script> 
        </xp:executeClientScript> 
       </xp:this.script> 

       <xp:this.action><![CDATA[#{javascript:var d:NotesDocument=doc.getDocument(); 
        apagarProposta(d);}]]> 
       </xp:this.action> 
      </xp:eventHandler> 
     </xp:button> 
     <xp:viewColumnHeader value="" id="viewColumnHeader7" 
      rendered="false"> 
     </xp:viewColumnHeader> 
    </xp:viewColumn> 
    <xp:this.facets> 
     <xp:pager partialRefresh="true" xp:key="headerPager" 
      id="pager1" rendered="true" layout="Previous Group Next"> 
     </xp:pager> 
     <xp:pager partialRefresh="true" layout="Previous Group Next" 
      xp:key="footerPager" id="pager2"> 
     </xp:pager> 

    </xp:this.facets> 
</xp:viewPanel> 

+1

können Sie ein Code-Snippet von dem, was Sie gerade haben, teilen? –

+1

Ich bemerke, dass Sie 'dataCache =" nodata "' verwenden, die die Seite anweisen, die Ansichtsdaten von Grund auf neu aufzubauen, wenn eine neue POST - Operation stattfindet - wahrscheinlich ist dies der Grund für Ihre schlechte Leistung beim Öffnen eines gelisteten Dokuments oder zumindest der Grund dafür, dass es so langsam ist, wie zum ersten Mal die Sicht zu laden, vorausgesetzt, ich habe dich richtig verstanden. Irgendein besonderer Grund, warum "nodata"? – shillem

+0

@shillem Ich weiß nicht den wahren Grund, die Konfiguration war schon so. Aber ich denke, das beeinflusst das Laden von Dokumenten. Können Sie mir sagen, ob beim Laden einer Ansicht mit mehr als tausend Dokumenten beim Laden der Ansicht alles geladen wird? Wenn die Änderung dieser Cache-Einstellung die Leistung verbessern kann? –

Antwort

0

Die Anzahl der Dokumente auf die Anzahl der Zeilen definiert geladen abhängt. Die ViewNavigator-Funktionalität ist so optimiert, dass nur die für die aktuelle Seite und einige mehr angezeigt werden.

Die Ausnahme ist, wenn ein Pager alwaysCalculateLast auf true eingestellt hat. In diesem Fall muss die gesamte Ansicht durchlaufen werden, um die Seitennummer zu ermitteln, die als letzte angezeigt werden soll.

+0

Falls diese Eigenschaft leer ist. wäre es interessant, falsch zu markieren? –

+0

Nein, falsch ist die Standardeinstellung –

4

Sie haben einige sehr "teuer" Dinge in Ihrem Viewpanel wie

  • @DbLookup
  • doc.getDocument(). GetItemValueString (...)
  • doc.getDocument(). GetItemValue (...)

Versuchen Sie, sie loszuwerden.

Es ist ein Performance-Killer, wenn Sie auf Felder in unterlegenden Dokumenten zugreifen. Es ist viel besser, alle benötigten Daten in Ansichtsspalten aufzunehmen.

Noch schlimmer ist @DbLookup. Es führt für jede Zeile in der Ansicht einen Aufruf für eine andere Ansicht aus. Versuchen Sie, @DbLookup nur über eine Schaltfläche oder nur über Mouseover aufzurufen.

+0

Vielen Dank, ich werde diese Verbesserungen vornehmen, um zu sehen, wie es aussieht .... –