2017-12-19 30 views
2

viewPanelの読み込みに問題がありますが、ページが開きますが、データソースがすべてのドキュメントを一度に読み込んでいて、その時点でリストされているドキュメントを開こうとしています長い時間がかかります。データソースによってロードされるドキュメントの量を制限できるかどうか教えてください。パフォーマンスを向上させます。「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

現時点でのコードスニペットを共有できますか? –

+1

'dataCache =" nodata "'を使って、新しいPOST操作が発生するたびにビューデータを最初から再構築するように指示していることに気付きました。これは、リストされた文書を開くときのパフォーマンスの悪さ、最初にビューを読み込むのと同じくらい遅い理由で、私はあなたを正しく理解しました。 'のどのような理由は? – shillem

+0

@shillem私は本当の理由を知らない、構成はすでにこのようになっていた。しかし、これは文書の読み込みに影響を与えていると思います。何千ものドキュメントを含むビューを読み込むと、ビューにアクセスした時点ですべてがロードされるかどうか教えてください。 このキャッシュ設定を変更するとパフォーマンスが向上する可能性がありますか? –

答えて

0

ロードされた文書の数は、定義された行の数に依存します。 ViewNavigatorの機能は、現在のページに加えていくつかのものだけを表示するように最適化されています。

ページャにalwaysCalculateLasttrueに設定されている場合を除きます。その場合は、最後に表示する必要があるページ番号を調べるために、全体のビューを反復処理する必要があります。

+0

このプロパティが空の場合。偽をマークするのは興味深いでしょうか? –

+0

いいえ、falseはデフォルトです –

4

あなたは

  • のようなあなたのviewPanelでいくつかの非常に "高価" なものを持っている@DbLookup
  • doc.getDocument()。getItemValueString(...)
  • doc.getDocument()。getItemValue( ...)

それらを取り除くようにしてください。

アンダーレイ文書のフィールドにアクセスすると、パフォーマンスが低下します。必要なすべてのデータをビュー列に含める方が良い方法です。

さらに悪いのは@DbLookupです。ビュー内のすべての行に対して別のビューへの呼び出しを実行します。 @DbLookupをボタンまたはマウスオーバーでのみ呼び出すようにしてください。

+0

多くのおかげで、私はどのように見えるようにこれらの改善を行います.... –