Mudanças entre as edições de "Biblioteca 1.45.0.0"

De MSTECH wiki
Ir para: navegação, pesquisa
(Criou página com '== Sistemas Verificados == *Biblioteca, versão 1.45.0.0 == Verificação de Segurança == Em verificação. == Verificação de Desempenho == === Observação do teste =...')
 
(TOP 10 querrys mais lentas)
 
(7 revisões intermediárias por 2 usuários não estão sendo mostradas)
Linha 10: Linha 10:
  
 
=== Observação do teste ===
 
=== Observação do teste ===
 +
 +
Para a execução dos testes foram utilizados:
 +
 +
* 1 Servidor de banco de dados.
 +
* 2 Servidores web.
 +
* 2 Test Agent
  
 
Durante os testes foi observada a necessidade da execução de uma bateria de testes funcionais no sistema, devido a bugs encontrados na construção do cenários de testes, sendo que alguns deles impediam a utilização do sistema.
 
Durante os testes foi observada a necessidade da execução de uma bateria de testes funcionais no sistema, devido a bugs encontrados na construção do cenários de testes, sendo que alguns deles impediam a utilização do sistema.
Linha 17: Linha 23:
 
=== Análise do teste ===
 
=== Análise do teste ===
  
Em verificação.
+
O sistema realiza um série que requisições que ficam salvas no log do ARR, consumindo assim uma grande quantidade do disco, chegando a utilizar mais de 50% do disco com menos de 550 usuários. Devido a quantidade de resquest, em geral muitos gets para um post, resultam em um arquivo muito grande não possibilitando a leitura do mesmo.
 +
 
 +
A média de fila em disco entra-se dentro do aconselhado. O tempo médio de resposta das requisições manteve-se no limite estabelecido, exceto ao ser utilizado por 350 usuários e o request para incluir um novo exemplar.
 +
 
 +
Durante os testes ocorreram erros na 'ddlBiblioteca', tblAuxiliar, deadlock nas movimentações e timeout. O timeout ocorre durante as movimentações do sistema e na tela de reserva, os requests relacionados a mesma não ficam presos em loop no ARR e nos servidores web. Devido a quantidade de erros não foi possível continuar a realizar os teste.
 +
 
 +
Abaixo seguem alguns dos logs de erros:
 +
 
 +
* Deadlock
 +
''Exception Type: System.Data.SqlClient.SqlException
 +
''Exception: Transaction (Process ID 207) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
 +
''Source: .Net SqlClient Data Provider
 +
''Stack Trace:
 +
  at MSTech.Data.Common.TalkDBTransaction.setError(Exception err)
 +
  at MSTech.Data.Common.TalkDBTransaction.QuerySelect(DbCommand cmd)
 +
  at MSTech.Data.Common.QuerySelect.Execute()
 +
  at MSTech.Biblioteca.DAL.BIB_MovimentacaoDAO.GetSelectDataSuspensaoByLeitor(Guid pes_id, Int32 bib_id, Int32 valorParametro, Int32& totalRecords) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\MSTech.GestaoEscolar.DAL\BIB_MovimentacaoDAO.cs:line 854
 +
  at MSTech.Biblioteca.BLL.BIB_MovimentacaoBO.GetSelectDataSuspensaoByLeitor(Guid pes_id, Int32 bib_id) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\MSTech.GestaoEscolar.BLL\BIB_MovimentacaoBO.cs:line 1946
 +
  at Movimentacao_Devolucao_Cadastro.CarregaGrid() in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\Biblioteca\Movimentacao\Devolucao\Cadastro.aspx.cs:line 792
 +
  at Movimentacao_Devolucao_Cadastro.UCComboBiblioteca__IndexChanged() in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\Biblioteca\Movimentacao\Devolucao\Cadastro.aspx.cs:line 1497
 +
''\r\n
 +
 
 +
 
 +
* Erro dllBiblioteca
 +
''Exception Type: System.ArgumentOutOfRangeException
 +
''Exception: 'ddlBiblioteca' has a SelectedValue which is invalid because it does not exist in the list of items.
 +
''Parameter name: value
 +
''Source: System.Web
 +
''Stack Trace:
 +
  at System.Web.UI.WebControls.ListControl.set_SelectedValue(String value)
 +
  at Movimentacao_Devolucao_Cadastro._RetornaMatricula(Guid pes_id) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\Biblioteca\Movimentacao\Devolucao\Cadastro.aspx.cs:line 1556
 +
''\r\n
 +
 
 +
 
 +
* Erro tblAuxiliar
 +
''Exception Type: System.Data.SqlClient.SqlException
 +
''Exception: Cannot drop the table '#tblAuxiliar', because it does not exist or you do not have permission.
 +
''Source: .Net SqlClient Data Provider
 +
''Stack Trace:
 +
  at MSTech.Data.Common.TalkDBTransaction.setError(Exception err)
 +
  at MSTech.Data.Common.TalkDBTransaction.QuerySelect(DbCommand cmd)
 +
  at MSTech.Data.Common.QuerySelect.Execute()
 +
  at MSTech.Biblioteca.DAL.BIB_MovimentacaoDAO.GetSelectDataSuspensaoByLeitor_lista(Guid pes_id, Int32 bib_id, Int32 valorParametro, Int32& totalRecords) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\MSTech.GestaoEscolar.DAL\BIB_MovimentacaoDAO.cs:line 2294
 +
  at MSTech.Biblioteca.BLL.BIB_MovimentacaoBO.GetSelectDataSuspensaoByLeitor_lista(Guid pes_id, Int32 bib_id, Guid ent_id) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\MSTech.GestaoEscolar.BLL\BIB_MovimentacaoBO.cs:line 1980
 +
  at MSTech.Biblioteca.BLL.BIB_MovimentacaoBO.usuarioSuspensoBiblioteca(Int32 bib_id, Guid pes_id, DateTime data, Guid ent_id) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\MSTech.GestaoEscolar.BLL\BIB_MovimentacaoBO.cs:line 1921
 +
  at Movimentacao_Devolucao_Cadastro.validaSuspensaoAutomatica(Int32 bib_id, Guid pes_id) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\Biblioteca\Movimentacao\Devolucao\Cadastro.aspx.cs:line 1656
 +
  at Movimentacao_Devolucao_Cadastro.CarregaGrid() in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\Biblioteca\Movimentacao\Devolucao\Cadastro.aspx.cs:line 861
 +
  at Movimentacao_Devolucao_Cadastro.UCComboBiblioteca__IndexChanged() in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\Biblioteca\Movimentacao\Devolucao\Cadastro.aspx.cs:line 1497
 +
''\r\n
 +
 
 +
 
 +
* Timeout
 +
''Inner Exception Type: System.ComponentModel.Win32Exception
 +
''Inner Exception: The wait operation timed out
 +
''Inner Source:
 +
''Exception Type: System.Data.SqlClient.SqlException
 +
''Exception: Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.
 +
''Source: .Net SqlClient Data Provider
 +
''Stack Trace:
 +
  at MSTech.Data.Common.TalkDBTransaction.setError(Exception err)
 +
  at MSTech.Data.Common.TalkDBTransaction.QuerySelect(DbCommand cmd)
 +
  at MSTech.Data.Common.QuerySelect.Execute()
 +
  at MSTech.Biblioteca.DAL.BIB_ListaReservaDAO.Busca_ReservasAcervo(Int32 bib_id, String ace_titulo, Int16 ace_tipoBusca, String exm_tombo, DateTime data, Byte lre_situacao, Int32& totalRecords) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\MSTech.GestaoEscolar.DAL\BIB_ListaReservaDAO.cs:line 371
 +
  at MSTech.Biblioteca.BLL.BIB_ListaReservaBO.Busca_ReservasAcervo(Int32 bib_id, Int16 ace_tipoBusca, String ace_titulo, String exm_tombo, DateTime data, Byte lre_situacao) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\MSTech.GestaoEscolar.BLL\BIB_ListaReservaBO.cs:line 165
 +
  at Movimentacao_Devolucao_Cadastro.Salvar() in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\Biblioteca\Movimentacao\Devolucao\Cadastro.aspx.cs:line 590
 +
''\r\n
 +
 
 +
 
 +
=== TOP 10 queries mais lentas ===
 +
 
 +
* Item 1
 +
 
 +
<syntaxhighlight lang="sql" line="1" >
 +
SELECT  DISTINCT
 +
A.ace_titulo
 +
, A.ace_subTitulo
 +
, dbo.FN_ConcatenaTuplas_ClassificacaoLiteraria(A.ace_id) AS cll_nome
 +
, aut_nomePadrao
 +
, aut_nome
 +
, edt.edt_nome
 +
, tpo.tor_nome
 +
, a.ace_id
 +
, O.obr_volume
 +
, A.ace_isbnIssn
 +
, A.ace_cdd
 +
, A.ace_phaCutter
 +
, O.obr_edicao
 +
, O.obr_anoEdicao
 +
, aut.oat_descricao
 +
, A.ace_linkDominio
 +
FROM    BIB_Acervo A WITH ( NOLOCK )
 +
INNER JOIN BIB_Exemplar E WITH ( NOLOCK ) ON A.ace_id = E.ace_id
 +
        INNER JOIN BIB_ExemplarLocalizacao EL WITH ( NOLOCK ) ON A.ace_id = EL.ace_id AND E.exm_id = EL.exm_id
 +
INNER JOIN BIB_Biblioteca bib WITH ( NOLOCK ) ON bib.bib_id = EL.bib_id
 +
INNER JOIN Synonym_SYS_UnidadeAdministrativa uad WITH(NOLOCK) ON uad.uad_id = BIB.uad_id AND uad.ent_id = BIB.ent_id
 +
        INNER JOIN BIB_ObraAutor oa WITH (NOLOCK) ON A.ace_id = oa.ace_id
 +
        INNER JOIN BIB_Obra O WITH (NOLOCK) ON A.ace_id = O.ace_id
 +
INNER JOIN BIB_TipoObra tpo WITH ( NOLOCK ) ON A.tor_id = tpo.tor_id               
 +
        INNER JOIN BIB_ObraClassificacao CLO WITH (NOLOCK) ON A.ace_id = CLO.ace_id
 +
        INNER JOIN BIB_ClassificacaoLiteraria cl WITH (NOLOCK) ON cl.cll_id = CLO.cll_id
 +
             
 +
        LEFT JOIN BIB_Editora edt WITH(NOLOCK) ON A.edt_id = edt.edt_id
 +
        LEFT JOIN BIB_GrupoAssunto ga WITH (NOLOCK) on A.gra_id = ga.gra_id               
 +
LEFT JOIN BIB_GeneroAssunto gs WITH (NOLOCK) ON cl.cll_id = gs.cll_id AND (gs.gnr_situacao = 1 OR gs.gnr_situacao IS NULL)
 +
        LEFT JOIN INT_ObraAutor aut WITH (NOLOCK) ON a.ace_id = aut.ace_id               
 +
       
 +
WHERE
 +
((A.ace_situacao = 1 OR A.ace_situacao = 5)
 +
AND E.exm_situacao NOT IN ( 3, 4)
 +
AND E.ace_id IS NOT NULL
 +
AND (edt.edt_situacao = 1 OR edt.edt_situacao IS NULL)
 +
AND (tor_situacao = 1 OR tor_situacao IS NULL)
 +
AND (ga.gra_situacao = 1 OR ga.gra_situacao IS NULL)
 +
AND (cl.cll_situacao = 1 OR cl.cll_situacao IS NULL)
 +
AND (bib.bib_situacao <> 3  AND uad.uad_situacao <> 3))
 +
--AND (gs.gnr_situacao = 1 OR gs.gnr_situacao IS NULL))
 +
AND (
 +
A.ace_titulo LIKE '%' + @texto + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
 +
OR A.ace_isbnIssn LIKE '%' + @texto + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
 +
                OR edt.edt_nome LIKE '%' + @texto + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
 +
                OR O.obr_anoEdicao LIKE '%' + @texto + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
 +
                OR O.obr_serieColecao LIKE '%' + @texto + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
 +
                OR ga.gra_nome LIKE '%' + @texto + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
 +
                OR cl.cll_nome LIKE '%' + @texto + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
 +
                OR gs.gnr_nome LIKE '%' + @texto + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
 +
                OR aut.aut_nomePadrao LIKE '%' + @texto + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
 +
OR aut.aut_nome LIKE '%' + @texto + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
 +
)
 +
AND
 +
(
 +
EL.bib_id IN
 +
(
 +
SELECT bib_id
 +
FROM BIB_ParametroBiblioteca pb
 +
WHERE pbi_permitiConsultaExterna = 0 -- permite consulta do acervo
 +
)
 +
OR EL.bib_id IS NULL
 +
)
 +
        ORDER BY A.ace_titulo
 +
</syntaxhighlight>
 +
 
 +
 
 +
* Item 2
 +
<syntaxhighlight lang="sql" line="1" >
 +
WITH ExemplaresSemGrupo AS (
 +
SELECT 
 +
EXM.ace_id,
 +
EXM.exm_id,
 +
BIB.bib_id,
 +
ACE.gra_id
 +
   
 +
        FROM  BIB_Exemplar AS EXM WITH ( NOLOCK )
 +
           
 +
              INNER JOIN BIB_ExemplarLocalizacao AS EXL WITH ( NOLOCK )
 +
ON EXM.ace_id = EXL.ace_id
 +
              AND EXM.exm_id = EXL.exm_id
 +
                             
 +
              INNER JOIN dbo.BIB_Biblioteca AS BIB WITH (NOLOCK)
 +
ON BIB.bib_id = EXL.bib_id
 +
 +
      INNER JOIN dbo.BIB_Acervo AS ACE WITH(NOLOCK)
 +
ON ACE.ace_id = EXM.ace_id
 +
 +
      LEFT JOIN dbo.BIB_GrupoAssunto AS GRA WITH (NOLOCK)
 +
ON GRA.gra_id = ACE.gra_id
 +
AND GRA.gra_situacao <> 3
 +
              WHERE 
 +
                exm_situacao <> 3 AND
 +
                bib_situacao <> 3 AND
 +
                ACE.gra_id IS NULL
 +
              ),
 +
             
 +
      AcervosSemGrupo AS (
 +
     
 +
            SELECT
 +
ace_id,
 +
bib_id,
 +
gra_id
 +
    FROM ExemplaresSemGrupo
 +
 +
    GROUP BY ace_id,
 +
bib_id,
 +
gra_id
 +
                ),
 +
             
 +
      Exemplares AS (
 +
     
 +
              SELECT 
 +
EXM.exm_id,
 +
gra_id,
 +
ACE.ace_id,
 +
ACE.ace_situacao,
 +
BIB.bib_id
 +
   
 +
              FROM BIB_Acervo AS ACE WITH (NOLOCK)
 +
             
 +
                INNER JOIN BIB_Exemplar AS EXM WITH (NOLOCK)
 +
                ON EXM.ace_id = ACE.ace_id
 +
                       
 +
                INNER JOIN BIB_ExemplarLocalizacao AS EXL WITH (NOLOCK)
 +
                ON EXL.ace_id = ACE.ace_id
 +
AND EXL.exm_id = EXM.exm_id
 +
                       
 +
                INNER JOIN BIB_Biblioteca AS BIB WITH (NOLOCK)
 +
                ON BIB.bib_id = EXL.bib_id
 +
 +
              WHERE   
 +
exm_situacao <> 3 AND
 +
bib_situacao <> 3
 +
),
 +
             
 +
      Acervos AS (
 +
             
 +
              SELECT
 +
ce_id,
 +
gra_id,
 +
bib_id
 +
 +
      FROM Exemplares WITH (NOLOCK)
 +
 +
      GROUP BY
 +
ace_id,
 +
gra_id,
 +
bib_id
 +
)
 +
 +
    SELECT  gra_id ,
 +
            cor_hexadecimal ,
 +
            cor_nome ,
 +
            gra_nome ,
 +
    gra_numeroGrupo,
 +
            (
 +
            SELECT COUNT(exm_id) FROM Exemplares  AS EXE WHERE EXE.gra_id = GRA.gra_id
 +
            ) qtdExemplares ,
 +
            (
 +
            SELECT COUNT(ace_id) FROM Acervos AS ACE WHERE ACE.gra_id = GRA.gra_id
 +
                     
 +
            ) qtdAcervo
 +
           
 +
    FROM   
 +
BIB_GrupoAssunto AS GRA WITH (NOLOCK)
 +
 +
        LEFT JOIN BIB_Cor AS COR WITH (NOLOCK)
 +
ON GRA.cor_id = COR.cor_id
 +
WHERE GRA.gra_situacao <> 3
 +
    UNION ALL
 +
   
 +
    SELECT  -1 ,
 +
            NULL ,
 +
            NULL ,
 +
            'Sem grupo de assunto' ,
 +
NULL,
 +
            (
 +
            SELECT COUNT(exm_id) FROM ExemplaresSemGrupo WHERE gra_id IS NULL
 +
            ) qtdExemplares ,
 +
           
 +
            ( SELECT COUNT(ace_id) FROM  AcervosSemGrupo WHERE gra_id IS NULL
 +
                       
 +
            ) qtdAcervo
 +
            order by gra_nome
 +
</syntaxhighlight>
 +
 
 +
 
 +
* Item 3
 +
<syntaxhighlight lang="sql" line="1" >
 +
SELECT
 +
MAX(CAST(LTRIM(RTRIM(EXM.exm_tombo)) AS BIGINT)) AS tombo
 +
FROM
 +
BIB_Exemplar as EXM WITH(NOLOCK)
 +
INNER JOIN BIB_ExemplarLocalizacao AS EL WITH(NOLOCK)
 +
ON EL.ace_id = EXM.ace_id
 +
AND EL.exm_id = EXM.exm_id
 +
WHERE
 +
exm_situacao <> 3
 +
AND (EL.bib_id = @bib_id OR @bib_id IS NULL)
 +
AND (ISNUMERIC(EXM.exm_tombo) = 1 AND EXM.exm_tombo NOT LIKE '%[.]%'  AND EXM.exm_tombo NOT LIKE '%[,]%')
 +
AND EXM.exm_tombo NOT LIKE '%e%'
 +
</syntaxhighlight>
 +
 
 +
 
 +
* Item 4
 +
<syntaxhighlight lang="sql" line="1" >
 +
FROM    BIB_Acervo WITH ( NOLOCK )
 +
                INNER JOIN BIB_Exemplar WITH ( NOLOCK ) ON BIB_Acervo.ace_id = BIB_Exemplar.ace_id
 +
        --LEFT JOIN BIB_ExemplarObra WITH ( NOLOCK ) ON BIB_Exemplar.ace_id = BIB_ExemplarObra.ace_id
 +
        --                              AND BIB_Exemplar.exm_id = BIB_ExemplarObra.exm_id
 +
        --LEFT JOIN BIB_Periodico WITH ( NOLOCK ) ON BIB_ExemplarObra.ace_id = BIB_Periodico.ace_id
 +
        --LEFT JOIN BIB_ExemplarVideo WITH ( NOLOCK ) ON  BIB_ExemplarVideo.ace_id  = BIB_Acervo.ace_id
 +
        WHERE  @bib_id IN (
 +
                SELECT  bib_id
 +
                FROM    BIB_ExemplarObra WITH ( NOLOCK )
 +
                WHERE  ace_id = @ace_id
 +
                        AND BIB_ExemplarObra.exm_id = BIB_Exemplar.exm_id
 +
                UNION ALL
 +
                SELECT  bib_id
 +
                FROM    BIB_ExemplarVideo WITH ( NOLOCK )
 +
                WHERE  ace_id = @ace_id
 +
                        AND BIB_ExemplarVideo.exm_id = BIB_Exemplar.exm_id
 +
                UNION ALL
 +
                SELECT  bib_id
 +
                FROM    BIB_Periodico WITH ( NOLOCK )
 +
                WHERE  ace_id = @ace_id )
 +
  --( BIB_ExemplarObra.bib_id = @bib_id
 +
  --      OR BIB_Periodico.bib_id = @bib_id
 +
  --      OR BIB_ExemplarVideo.bib_id = @bib_id
 +
  --    )
 +
                AND BIB_Acervo.ace_id = @ace_id
 +
</syntaxhighlight>
 +
 
 +
 
 +
* Item 5
 +
<syntaxhighlight lang="sql" line="1" >
 +
ELECT 
 +
                BIB_Exemplar.exm_id ,
 +
                BIB_Acervo.ace_id ,
 +
                ace_titulo ,
 +
                ISNULL(exm_tombo, exm_codigoBarras) tombo ,
 +
                aut_nome autor ,
 +
                bib_nome ,
 +
                edt_nome ,
 +
                obr_volume ,
 +
                ISNULL(exp_edicao, obr_edicao) edicao ,
 +
                obr_anoEdicao ,
 +
                ace_isbnIssn ,
 +
                CASE WHEN PBL.pbc_liberadoEmprestimo = 2
 +
                    THEN 'Categoria bloqueada'
 +
                    WHEN exm_situacao = 2 THEN 'Exemplar bloqueado'
 +
                    ELSE ISNULL(situacao, 'Disponível')
 +
                END AS situacao ,
 +
                CASE WHEN ace_bloqueadoReserva = 1 THEN '--'
 +
WHEN ace_bloqueadoReserva = 0 THEN '--'
 +
                END AS ace_bloqueadoReserva ,
 +
                --CASE WHEN situacao IS NOT NULL THEN situacao
 +
                --    ELSE CASE WHEN PBL.pbc_liberadoEmprestimo = 2
 +
                --              THEN 'Categoria bloqueada'
 +
                --              WHEN exm_situacao = 2 THEN 'Exemplar bloqueado'
 +
                --              ELSE ISNULL(situacao, 'Disponível')
 +
                --          END
 +
                --END AS situacao ,
 +
                epr_dataPrevistaDevolucao dtPrevDev ,
 +
               
 +
                --ISNULL(CASE WHEN ( SELECT  COUNT(lre_id)
 +
                --                  FROM    BIB_ListaReserva a2
 +
                --                  WHERE    a2.ace_id = BIB_Exemplar.ace_id
 +
                --                            AND a2.exm_id = BIB_Exemplar.exm_id
 +
                --                            AND lre_situacao = 1
 +
                --                ) > 0 THEN 'Existem solicitações pendentes. '
 +
                --      END, '')
 +
                --+ ISNULL(CASE WHEN ( SELECT COUNT(lre_id)
 +
                --                    FROM  BIB_ListaReserva a2
 +
                --                    WHERE  a2.ace_id = BIB_Exemplar.ace_id
 +
                --                            AND a2.exm_id = BIB_Exemplar.exm_id
 +
                --                            AND lre_situacao = 2
 +
                --                  ) > 0 THEN 'Existe lista de reserva. '
 +
                --        END, '')
 +
                --+ ISNULL(CASE WHEN ( SELECT a.mbw_acao
 +
                --                    FROM  FN_UltimaMovimentacaoBibliotecaAcao(BIB_Exemplar.ace_id,
 +
                --                                              BIB_Exemplar.exm_id) a
 +
                --                  ) = 2 THEN 'Reserva para biblioteca. '
 +
                --        END, '') obs ,
 +
                CASE WHEN ISNUMERIC(RTRIM(LTRIM(ISNULL(exm_tombo,
 +
                                                      exm_codigoBarras)))) <> 0
 +
                    THEN REPLICATE('0',
 +
                                    ( 19
 +
                                      - LEN(CAST(RTRIM(LTRIM(ISNULL(exm_tombo,
 +
                                                              exm_codigoBarras))) AS VARCHAR)) ))
 +
                          + CAST(RTRIM(LTRIM(ISNULL(exm_tombo,
 +
                                                    exm_codigoBarras))) AS VARCHAR)
 +
                    ELSE RTRIM(LTRIM(ISNULL(exm_tombo, exm_codigoBarras)))
 +
                END ordenaTombo
 +
        FROM    BIB_Exemplar WITH ( NOLOCK )
 +
                INNER JOIN BIB_Acervo WITH ( NOLOCK ) ON BIB_Exemplar.ace_id = BIB_Acervo.ace_id
 +
                INNER JOIN BIB_ExemplarLocalizacao WITH ( NOLOCK ) ON BIB_Acervo.ace_id = BIB_ExemplarLocalizacao.ace_id
 +
                                                              AND BIB_Exemplar.exm_id = BIB_ExemplarLocalizacao.exm_id
 +
                INNER JOIN BIB_Biblioteca WITH ( NOLOCK ) ON BIB_ExemplarLocalizacao.bib_id = BIB_Biblioteca.bib_id
 +
                LEFT JOIN BIB_ExemplarPeriodico WITH ( NOLOCK ) ON BIB_ExemplarPeriodico.exm_id = BIB_Exemplar.exm_id
 +
                                                              AND BIB_ExemplarPeriodico.ace_id = BIB_Exemplar.ace_id
 +
                LEFT JOIN BIB_Editora WITH ( NOLOCK ) ON BIB_Acervo.edt_id = BIB_Editora.edt_id
 +
                LEFT JOIN BIB_Obra WITH ( NOLOCK ) ON BIB_Acervo.ace_id = BIB_Obra.ace_id
 +
                LEFT JOIN FN_UltimaMovimentacao() um ON um.ace_id = bib_exemplar.ace_id
 +
                                                        AND um.exm_id = bib_exemplar.exm_id
 +
                LEFT JOIN INT_ObraAutor WITH ( NOLOCK ) ON BIB_Exemplar.ace_id = INT_ObraAutor.ace_id
 +
                LEFT JOIN BIB_ParametroBibliotecaLeitor PBL WITH ( NOLOCK ) ON PBL.tor_id = BIB_Exemplar.tor_id
 +
                                                              AND PBL.toc_id = BIB_Exemplar.toc_id
 +
                                                              AND PBL.bib_id = BIB_Biblioteca.bib_id
 +
        WHERE  ace_situacao = 1
 +
                AND exm_situacao NOT IN ( 3, 4, 5 )
 +
                AND ( BIB_Exemplar.tor_id = @tor_id
 +
                      OR @tor_id IS NULL
 +
                    )
 +
                AND ( exm_tombo IN (
 +
                      SELECT    valor
 +
                      FROM      FN_StringToArrayStr(@exm_tombo, ';') )
 +
                      OR @exm_tombo IS NULL
 +
                      OR exm_codigoBarras IN (
 +
                      SELECT    valor
 +
                      FROM      FN_StringToArrayStr(@exm_tombo, ';') )
 +
                    )
 +
                AND (
 +
                -- 1 : Começa por
 +
                      ( @ace_tipoBusca = 1
 +
                        AND ( @ace_titulo IS NULL
 +
                              OR ace_titulo LIKE @ace_titulo + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
 +
                             
 +
                            )
 +
                      )
 +
                      OR
 +
 +
-- 2 : Contém
 +
                      ( @ace_tipoBusca = 2
 +
                        AND ( @ace_titulo IS NULL
 +
                              OR ace_titulo LIKE '%' + @ace_titulo + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
 +
                             
 +
                            )
 +
                      )
 +
                      OR
 +
 +
-- 3 : Fonética
 +
                      ( @ace_tipoBusca = 3
 +
                        AND ( @ace_titulo IS NULL
 +
                              OR dbo.SoundsLike(ace_titulo) LIKE '%'
 +
                              + dbo.SoundsLike(@ace_titulo) + '%'
 +
                            )
 +
                      )
 +
                    )
 +
                AND ( edt_nome LIKE '%' + @edt_nome + '%'
 +
                      OR @edt_nome IS NULL
 +
                    )
 +
                AND ent_id = @ent_id
 +
                AND ( @bib_id = BIB_Biblioteca.bib_id
 +
                      OR @bib_id IS NULL
 +
                    )
 +
                AND (  @aut_id IS NULL
 +
                              OR ( SELECT  COUNT(ace_id)
 +
                                  FROM    BIB_ObraAutor oa WITH ( NOLOCK )
 +
                                  WHERE    oa.ace_id = BIB_Exemplar.ace_id
 +
                                            AND oa.aut_id IN (
 +
                                            SELECT  CONVERT(INT, valor)
 +
                                            FROM    dbo.FN_StringToArrayStr(@aut_id,
 +
                                                              ';') )
 +
                                ) > 0
 +
                    )
 +
                     
 +
                AND ( @obr_volume IS NULL
 +
                      OR obr_volume LIKE '%' + @obr_volume + '%'
 +
                    )
 +
                AND ( @obr_anoEdicao IS NULL
 +
                      OR obr_anoEdicao LIKE '%' + @obr_anoEdicao + '%'
 +
                    )
 +
                AND ( @obr_edicao IS NULL
 +
                      OR obr_edicao LIKE '%' + @obr_edicao + '%'
 +
                    )
 +
                AND @ent_id = BIB_Biblioteca.ent_id
 +
                AND BIB_Biblioteca.uad_id IN ( ( SELECT uad_id
 +
                                                FROM  Synonym_FN_Select_UAs_By_PermissaoUsuario(@usu_id,
 +
                                                              @gru_id)
 +
                                              )
 +
                                          )
 +
                                          -- Filtra disponível
 +
                AND ( ( @exm_disponivel = 1
 +
                        AND epw_id IS NULL
 +
                        AND ace_situacao = 1
 +
                        AND exm_situacao NOT IN (3, 2)
 +
                      )
 +
                      OR @exm_disponivel = 0
 +
                    )
 +
                --Deverá aparecer todos os exemplares, independente da situação (Comentado por Rafael Neto)
 +
                --AND ( ISNULL(( SELECT  CASE WHEN epw_acao = 3 THEN 1
 +
                --                            WHEN epw_acao = 5 THEN 1
 +
                --                            ELSE 2
 +
                --                        END
 +
                --              FROM    FN_UltimaMovimentacaoAcao(BIB_Exemplar.ace_id,
 +
                --                                              BIB_Exemplar.exm_id)
 +
                --            ), 1) = 1 )
 +
                --AND ( ISNULL(( SELECT  CASE WHEN mbw_acao <> 2 THEN 1
 +
                --                            ELSE 2
 +
                --                        END
 +
                --              FROM    FN_UltimaMovimentacaoBibliotecaAcao(BIB_Exemplar.ace_id,
 +
                --                                              BIB_Exemplar.exm_id)
 +
                --            ), 1) = 1 )
 +
        ORDER BY bib_nome ,
 +
                ace_titulo
 +
</syntaxhighlight>
 +
 
 +
 
 +
* Item 6
 +
<syntaxhighlight lang="sql" line="1" >
 +
WITH    Acervo
 +
                  AS ( SELECT  ace_id ,
 +
                                ace_isbnIssn ,
 +
                                ace_titulo ,
 +
                                edt_id ,
 +
                                tor_id ,
 +
                                ace_bloqueadoReserva ,
 +
                                ace_situacao
 +
                      FROM    BIB_Acervo WITH ( NOLOCK )
 +
                      WHERE    ace_situacao = 1
 +
                    ),
 +
                Exemplar
 +
                  AS ( SELECT  exm_id ,
 +
                                ace_id ,
 +
                                toc_id ,
 +
                                tor_id ,
 +
                                exm_tombo ,
 +
                                exm_codigoBarras ,
 +
                                exm_situacao
 +
                      FROM    BIB_Exemplar WITH ( NOLOCK )
 +
                      WHERE    exm_situacao NOT IN ( 3, 4 , 5)
 +
                    ),
 +
                Biblioteca
 +
                  AS ( SELECT  bib_id ,
 +
                                bib_nome
 +
                      FROM    BIB_Biblioteca WITH ( NOLOCK )
 +
                      WHERE    ent_id = @ent_id
 +
                    )
 +
            SELECT  e.exm_id ,
 +
                    a.ace_id ,
 +
                    ace_titulo ,
 +
                    ISNULL(exm_tombo, exm_codigoBarras) tombo ,
 +
                    aut_nome autor ,
 +
                    bib_nome ,
 +
                    edt_nome ,
 +
                    tor_nome ,
 +
                    ace_isbnIssn ,
 +
                    obr_volume ,
 +
                    obr_edicao edicao ,
 +
                    obr_anoEdicao ,
 +
                    CASE WHEN PBL.pbc_liberadoEmprestimo = 2 THEN 'Categoria bloqueada'
 +
                        WHEN e.exm_situacao = 2 THEN 'Exemplar bloqueado'
 +
                        WHEN e.exm_situacao = 5 THEN 'Exemplar retido'
 +
                        ELSE ISNULL(situacao, 'Disponível')
 +
                    END AS situacao ,
 +
CASE WHEN ace_bloqueadoReserva = 1 THEN 'Bloqueado para reserva'
 +
WHEN ace_bloqueadoReserva = 0 THEN '--'
 +
END AS ace_bloqueadoReserva ,                   
 +
epr_dataPrevistaDevolucao dtPrevDev ,
 +
                    --ISNULL(CASE WHEN ( SELECT  COUNT(lre_id)
 +
                    --                  FROM    BIB_ListaReserva a2
 +
                    --                  WHERE    a2.ace_id = e.ace_id
 +
                    --                            AND a2.exm_id = e.exm_id
 +
                    --                            AND lre_situacao = 1
 +
                    --                ) > 0
 +
                    --            THEN 'Existem solicitações pendentes. '
 +
                    --      END, '')
 +
                    --+ ISNULL(CASE WHEN ( SELECT COUNT(lre_id)
 +
                    --                    FROM  BIB_ListaReserva a2
 +
                    --                    WHERE  a2.ace_id = e.ace_id
 +
                    --                            AND a2.exm_id = e.exm_id
 +
                    --                            AND lre_situacao = 2
 +
                    --                  ) > 0 THEN 'Existe lista de reserva. '
 +
                    --        END, '')
 +
                    --+ ISNULL(CASE WHEN ( SELECT a.mbw_acao
 +
                    --                    FROM  FN_UltimaMovimentacaoBibliotecaAcao(e.ace_id,
 +
                    --                                          e.exm_id) a
 +
                    --                  ) = 2 THEN 'Reserva para biblioteca. '
 +
                    --        END, '') obs ,
 +
                    CASE WHEN ISNUMERIC(RTRIM(LTRIM(ISNULL(exm_tombo,
 +
                                                          exm_codigoBarras)))) <> 0
 +
                        THEN REPLICATE('0',
 +
                                        ( 19
 +
                                          - LEN(CAST(RTRIM(LTRIM(ISNULL(exm_tombo,
 +
                                                              exm_codigoBarras))) AS VARCHAR)) ))
 +
                              + CAST(RTRIM(LTRIM(ISNULL(exm_tombo,
 +
                                                        exm_codigoBarras))) AS VARCHAR)
 +
                        ELSE RTRIM(LTRIM(ISNULL(exm_tombo, exm_codigoBarras)))
 +
                    END ordenaTombo
 +
            FROM    Acervo a
 +
                    INNER JOIN Exemplar e ON a.ace_id = e.ace_id
 +
                    INNER JOIN BIB_ExemplarLocalizacao WITH ( NOLOCK ) ON e.ace_id = BIB_ExemplarLocalizacao.ace_id
 +
                                                              AND e.exm_id = BIB_ExemplarLocalizacao.exm_id
 +
                    INNER JOIN Biblioteca b ON BIB_ExemplarLocalizacao.bib_id = b.bib_id
 +
                    LEFT JOIN BIB_Obra WITH ( NOLOCK ) ON a.ace_id = BIB_Obra.ace_id
 +
                    LEFT JOIN BIB_Editora WITH ( NOLOCK ) ON a.edt_id = BIB_Editora.edt_id
 +
                    LEFT JOIN BIB_TipoObra WITH ( NOLOCK ) ON a.tor_id = BIB_TipoObra.tor_id
 +
                    LEFT JOIN FN_UltimaMovimentacao() um ON um.ace_id = e.ace_id
 +
                                                            AND um.exm_id = e.exm_id
 +
                    LEFT JOIN INT_ObraAutor WITH ( NOLOCK ) ON e.ace_id = INT_ObraAutor.ace_id
 +
                    LEFT JOIN BIB_ParametroBibliotecaLeitor PBL WITH ( NOLOCK ) ON PBL.tor_id = e.tor_id
 +
                                                              AND PBL.toc_id = e.toc_id
 +
                                                              AND PBL.bib_id = b.bib_id
 +
            WHERE  ( ( @somenteDisponivies = 1
 +
                        AND epw_id IS NOT NULL
 +
                      )
 +
                      OR @somenteDisponivies = 0
 +
                    )
 +
                    AND ( @bib_id = b.bib_id
 +
                          OR @bib_id IS NULL
 +
                        )
 +
                    AND ( a.tor_id = @tor_id
 +
                          OR @tor_id IS NULL
 +
                        )
 +
                    AND ( exm_tombo IN (
 +
                          SELECT    valor
 +
                          FROM      FN_StringToArrayStr(@exm_tombo, ';') )
 +
                          OR @exm_tombo IS NULL
 +
                          OR exm_codigoBarras IN (
 +
                          SELECT    valor
 +
                          FROM      FN_StringToArrayStr(@exm_tombo, ';') )
 +
                        )
 +
                    AND (
 +
                -- 1 : Começa por
 +
                          ( @ace_tipoBusca = 1
 +
                            AND ( @ace_titulo IS NULL
 +
                                  OR ace_titulo LIKE @ace_titulo + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
 +
                                 
 +
                                )
 +
                          )
 +
                          OR
 +
 +
-- 2 : Contém
 +
                          ( @ace_tipoBusca = 2
 +
                            AND ( @ace_titulo IS NULL
 +
                                  OR ace_titulo LIKE '%' + @ace_titulo + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
 +
                                 
 +
                                )
 +
                          )
 +
                          OR
 +
 +
-- 3 : Fonética
 +
                          ( @ace_tipoBusca = 3
 +
                            AND ( @ace_titulo IS NULL
 +
                                  OR dbo.SoundsLike(ace_titulo) LIKE '%'
 +
                                  + dbo.SoundsLike(@ace_titulo) + '%'
 +
                                )
 +
                          )
 +
                        )
 +
                    AND ( edt_nome LIKE '%' + @edt_nome + '%'
 +
                          OR @edt_nome IS NULL
 +
                        )
 +
                    AND (  @aut_id IS NULL
 +
                                  OR ( SELECT  COUNT(ace_id)
 +
                                      FROM    BIB_ObraAutor oa WITH ( NOLOCK )
 +
                                      WHERE    oa.ace_id = e.ace_id
 +
                                                AND oa.aut_id IN (
 +
                                                SELECT  CONVERT(INT, valor)
 +
                                                FROM    dbo.FN_StringToArrayStr(@aut_id,
 +
                                                              ';') )
 +
                                    ) > 0
 +
                                )
 +
                       
 +
                    AND ( @obr_volume IS NULL
 +
                          OR obr_volume LIKE '%' + @obr_volume + '%'
 +
                        )
 +
                    AND ( @obr_anoEdicao IS NULL
 +
                          OR obr_anoEdicao LIKE '%' + @obr_anoEdicao + '%'
 +
                        )
 +
                    AND ( @obr_edicao IS NULL
 +
                          OR obr_edicao LIKE '%' + @obr_edicao + '%'
 +
                        )
 +
                    AND ( ISNULL(( SELECT  CASE WHEN mbw_acao <> 2 THEN 1
 +
                                                ELSE 2
 +
                                            END
 +
                                  FROM    FN_UltimaMovimentacaoBibliotecaAcao(e.ace_id,
 +
                                                              e.exm_id)
 +
                                ), 1) = 1 )
 +
               
 +
                -- Filtra disponível
 +
                    AND ( ( @exm_disponivel = 1
 +
                            AND um.epw_id IS NULL
 +
                            AND a.ace_situacao = 1
 +
AND exm_situacao NOT IN (3, 2)
 +
                          )
 +
                          OR @exm_disponivel = 0
 +
                        )
 +
            ORDER BY bib_nome ,
 +
                    ace_titulo
 +
</syntaxhighlight>
 +
 
 +
 
 +
* Item 7
 +
<syntaxhighlight lang="sql" line="1" >
 +
SELECT  lei.pes_id ,
 +
                pes_nome ,
 +
                lei_codigo ,
 +
                lei_cargo ,
 +
                lei_funcao ,
 +
                tpl_nome lei_tipo ,
 +
                psd_numero ,
 +
                ( CASE WHEN lei.mbl_id > 0 THEN 4 --Bloqueado
 +
                      WHEN BIB_TipoLeitor.mbl_id > 0
 +
                            AND lei_ultimaAtualizacao < GETDATE() THEN 4 -- Bloqueado
 +
                      WHEN ( SELECT    SUM(dbo.FN_diasAtraso(m.ace_id,
 +
                                                              m.exm_id, 0, @considerarApenasDiasUteis))
 +
                              FROM      FN_UltimaMovimentacao() m
 +
                              WHERE    m.pes_id = lei.pes_id
 +
                            ) > 0 THEN 2 --Empréstimo em atraso
 +
                      WHEN CAST(( SELECT  dbo.FN_ValorDividaTotal(lei.pes_id, NULL, @considerarApenasDiasUteis)
 +
                                ) AS DECIMAL(18, 2)) > 0 THEN 3 -- multa
 +
                      ELSE 1 -- Liberado para Empréstimo
 +
                  END ) situacao
 +
        FROM    dbo.BIB_Leitor AS lei WITH ( NOLOCK )
 +
                INNER JOIN BIB_TipoLeitor WITH ( NOLOCK ) ON lei.tpl_id = BIB_TipoLeitor.tpl_id
 +
                INNER JOIN Synonym_PES_Pessoa AS pes WITH ( NOLOCK )
 +
                ON pes.pes_id = lei.pes_id
 +
                AND pes.pes_situacao <> 3
 +
                LEFT JOIN Synonym_PES_PessoaDocumento AS PES_PessoaDocumento
 +
                WITH ( NOLOCK )
 +
                ON lei.pes_id = PES_PessoaDocumento.pes_id
 +
                AND psd_situacao <> 3
 +
                AND PES_PessoaDocumento.tdo_id = @tdo_id
 +
        WHERE 
 +
(
 +
CASE @var_tipobuscaNome
 +
WHEN 3 -- Fonética.
 +
THEN dbo.SoundsLike(pes.pes_nome COLLATE Latin1_General_CI_AI)
 +
ELSE pes.pes_nome COLLATE Latin1_General_CI_AI
 +
END
 +
)
 +
LIKE @var_pes_nome + '%'
 +
                AND ( @lei_codigo IS NULL
 +
                      OR lei_codigo = @lei_codigo
 +
                    )
 +
                AND ( @psd_numero IS NULL
 +
                      OR PES_PessoaDocumento.psd_numero = @psd_numero
 +
                    )
 +
                --AND tdo_id=@tdo_id
 +
                AND lei.lei_situacao <> 3
 +
        ORDER BY pes_nome
 +
</syntaxhighlight>
 +
 
 +
 
 +
* Item 8
 +
<syntaxhighlight lang="sql" line="1" >
 +
SELECT  lei.pes_id ,
 +
                pes_nome ,
 +
                lei_codigo ,
 +
                lei_cargo ,
 +
                lei_funcao ,
 +
                tpl_nome lei_tipo ,
 +
                psd_numero ,
 +
                ( CASE WHEN lei.mbl_id > 0 THEN 4 --Bloqueado
 +
                      WHEN BIB_TipoLeitor.mbl_id > 0
 +
                            AND lei_ultimaAtualizacao < GETDATE() THEN 4 -- Bloqueado
 +
                      WHEN ( SELECT    SUM(dbo.FN_diasAtraso(m.ace_id,
 +
                                                              m.exm_id, 0, @considerarApenasDiasUteis))
 +
                              FROM      FN_UltimaMovimentacao() m
 +
                              WHERE    m.pes_id = lei.pes_id
 +
                            ) > 0 THEN 2 --Empréstimo em atraso
 +
                      WHEN CAST(( SELECT  dbo.FN_ValorDividaTotal(lei.pes_id, NULL, @considerarApenasDiasUteis)
 +
                                ) AS DECIMAL(18, 2)) > 0 THEN 3 -- multa
 +
                      ELSE 1 -- Liberado para Empréstimo
 +
                  END ) situacao
 +
        FROM    dbo.BIB_Leitor AS lei WITH ( NOLOCK )
 +
                INNER JOIN BIB_TipoLeitor WITH ( NOLOCK ) ON lei.tpl_id = BIB_TipoLeitor.tpl_id
 +
                INNER JOIN Synonym_PES_Pessoa AS pes WITH ( NOLOCK )
 +
                ON pes.pes_id = lei.pes_id
 +
                AND pes.pes_situacao <> 3
 +
                LEFT JOIN Synonym_PES_PessoaDocumento AS PES_PessoaDocumento
 +
                WITH ( NOLOCK )
 +
                ON lei.pes_id = PES_PessoaDocumento.pes_id
 +
                AND psd_situacao <> 3
 +
                AND PES_PessoaDocumento.tdo_id = @tdo_id
 +
        WHERE 
 +
(
 +
CASE @var_tipobuscaNome
 +
WHEN 3 -- Fonética.
 +
THEN dbo.SoundsLike(pes.pes_nome COLLATE Latin1_General_CI_AI)
 +
ELSE pes.pes_nome COLLATE Latin1_General_CI_AI
 +
END
 +
)
 +
LIKE @var_pes_nome + '%'
 +
                AND ( @lei_codigo IS NULL
 +
                      OR lei_codigo = @lei_codigo
 +
                    )
 +
                AND ( @psd_numero IS NULL
 +
                      OR PES_PessoaDocumento.psd_numero = @psd_numero
 +
                    )
 +
                --AND tdo_id=@tdo_id
 +
                AND lei.lei_situacao <> 3
 +
        ORDER BY pes_nome
 +
</syntaxhighlight>
 +
 
 +
 
 +
* Item 9
 +
<syntaxhighlight lang="sql" line="1" >
 +
INSERT INTO
 +
BIB_ListaReserva
 +
(
 +
ace_id
 +
, exm_id
 +
, lre_id
 +
, pes_id
 +
, lre_motivoCancelamento
 +
, lre_dataAprovacao
 +
, lre_dataCancelamento
 +
, lre_dataLiberacao
 +
, lre_situacao
 +
, lre_dataCriacao
 +
, lre_dataAlteracao
 +
 +
)
 +
VALUES
 +
(
 +
@ace_id
 +
, @exm_id
 +
, @lre_id
 +
, @pes_id
 +
, @lre_motivoCancelamento
 +
, @lre_dataAprovacao
 +
, @lre_dataCancelamento
 +
, @lre_dataLiberacao
 +
, @lre_situacao
 +
, @lre_dataCriacao
 +
, @lre_dataAlteracao
 +
 +
)
 +
</syntaxhighlight>
 +
 
 +
 
 +
* Item 10
 +
<syntaxhighlight lang="sql" line="1" >
 +
WITH    ListaReserva
 +
                  AS ( SELECT  lr.ace_id ,
 +
                                lr.exm_id ,
 +
                                ace_titulo ,
 +
                                exm_tombo ,
 +
                                bib_nome ,
 +
                                tor_nome ,
 +
                                COUNT(lre_id) qtd
 +
                      FROM    BIB_ListaReserva lr WITH ( NOLOCK )
 +
                                INNER JOIN BIB_Acervo a WITH ( NOLOCK ) ON lr.ace_id = a.ace_id
 +
                                INNER JOIN BIB_Exemplar ex WITH ( NOLOCK ) ON a.ace_id = ex.ace_id
 +
                                                              AND ex.exm_id = lr.exm_id
 +
                                INNER JOIN BIB_ExemplarLocalizacao el WITH ( NOLOCK ) ON ex.ace_id = el.ace_id
 +
                                                              AND ex.exm_id = el.exm_id
 +
                                INNER JOIN BIB_Biblioteca b WITH ( NOLOCK ) ON el.bib_id = b.bib_id
 +
                                LEFT JOIN BIB_TipoObra ON a.tor_id = BIB_TipoObra.tor_id
 +
                      WHERE    ace_situacao <> 3
 +
                                AND ( exm_tombo LIKE '%' + @exm_tombo + '%'
 +
                                      OR @exm_tombo IS NULL
 +
                                    )
 +
                                AND (
 +
                -- 1 : Começa por
 +
                                      ( @ace_tipoBusca = 1
 +
                                        AND ( @ace_titulo IS NULL
 +
                                              OR ace_titulo LIKE @ace_titulo
 +
                                              + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
 +
                                             
 +
                                            )
 +
                                      )
 +
                                      OR
 +
 +
-- 2 : Contém
 +
                                      ( @ace_tipoBusca = 2
 +
                                        AND ( @ace_titulo IS NULL
 +
                                              OR ace_titulo LIKE '%'
 +
                                              + @ace_titulo + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
 +
                                             
 +
                                            )
 +
                                      )
 +
                                      OR
 +
 +
-- 3 : Fonética
 +
                                      ( @ace_tipoBusca = 3
 +
                                        AND ( @ace_titulo IS NULL
 +
                                              OR dbo.SoundsLike(ace_titulo) LIKE '%'
 +
                                              + dbo.SoundsLike(@ace_titulo)
 +
                                              + '%'
 +
                                            )
 +
                                      )
 +
                                    )
 +
                                AND ( @bib_id IS NULL
 +
                                      OR el.bib_id = @bib_id
 +
                                    )
 +
                                AND ( @data IS NULL
 +
                                      OR CONVERT(DATE, lre_dataCriacao) = @data
 +
                                    )
 +
                                AND lre_situacao = @lre_situacao
 +
                      GROUP BY lr.ace_id ,
 +
                                lr.exm_id ,
 +
                                ace_titulo ,
 +
                                exm_tombo ,
 +
                                bib_nome ,
 +
                                tor_nome
 +
                    ),
 +
                AcervosReserva
 +
                  AS ( SELECT  MOV.ace_id ,
 +
                                MOV.exm_id ,
 +
                                ace_titulo ,
 +
                                exm_tombo ,
 +
                                bib_nome ,
 +
                                tor_nome ,
 +
                                '1' qtd
 +
                      FROM    BIB_Movimentacao MOV WITH ( NOLOCK )
 +
                                INNER JOIN BIB_MovimentacaoWorkFlow MWF WITH ( NOLOCK ) ON MOV.ace_id = MWF.ace_id
 +
                                                              AND MOV.exm_id = MWF.exm_id
 +
                                                              AND MOV.epr_id = MWF.epr_id
 +
                                INNER JOIN BIB_Acervo ACE WITH ( NOLOCK ) ON MOV.ace_id = ACE.ace_id
 +
                                INNER JOIN BIB_Exemplar EXM WITH ( NOLOCK ) ON ACE.ace_id = EXM.ace_id
 +
                                                              AND EXM.exm_id = MOV.exm_id
 +
                                INNER JOIN dbo.BIB_ExemplarLocalizacao EXL
 +
                                WITH ( NOLOCK ) ON MOV.ace_id = EXL.ace_id
 +
                                                  AND MOV.exm_id = EXL.exm_id
 +
                                INNER JOIN BIB_Biblioteca BIB WITH ( NOLOCK ) ON BIB.bib_id = EXL.bib_id
 +
                                LEFT JOIN BIB_TipoObra TOR ON ACE.tor_id = TOR.tor_id
 +
                      WHERE    MOV.epr_id = ( SELECT  MAX(epr_id)
 +
                                              FROM    BIB_MovimentacaoWorkFlow MWF2
 +
                                                        WITH ( NOLOCK )
 +
                                              WHERE    MWF.ace_id = MWF2.ace_id
 +
                                                        AND MWF.exm_id = MWF2.exm_id
 +
                                            )
 +
                                AND MWF.epw_id = ( SELECT  MAX(epw_id)
 +
                                                  FROM    BIB_MovimentacaoWorkFlow MWF2
 +
                                                            WITH ( NOLOCK )
 +
                                                  WHERE    MWF.ace_id = MWF2.ace_id
 +
                                                            AND MWF.exm_id = MWF2.exm_id
 +
                                                            AND MWF.epr_id = MWF2.epr_id
 +
                                                )
 +
                                AND MWF.epw_acao = 1 --Reservado
 +
                                AND ace_situacao <> 3
 +
                                AND ( exm_tombo = @exm_tombo
 +
                                      OR @exm_tombo IS NULL
 +
                                    )
 +
                                AND (
 +
                -- 1 : Começa por
 +
                                      ( @ace_tipoBusca = 1
 +
                                        AND ( @ace_titulo IS NULL
 +
                                              OR ace_titulo LIKE @ace_titulo
 +
                                              + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
 +
                                             
 +
                                            )
 +
                                      )
 +
                                      OR
 +
 +
-- 2 : Contém
 +
                                      ( @ace_tipoBusca = 2
 +
                                        AND ( @ace_titulo IS NULL
 +
                                              OR ace_titulo LIKE '%'
 +
                                              + @ace_titulo + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
 +
                                             
 +
                                            )
 +
                                      )
 +
                                      OR
 +
 +
-- 3 : Fonética
 +
                                      ( @ace_tipoBusca = 3
 +
                                        AND ( @ace_titulo IS NULL
 +
                                              OR dbo.SoundsLike(ace_titulo) LIKE '%'
 +
                                              + dbo.SoundsLike(@ace_titulo)
 +
                                              + '%'
 +
                                            )
 +
                                      )
 +
                                    )
 +
                                AND ( @bib_id IS NULL
 +
                                      OR BIB.bib_id = @bib_id
 +
                                    )
 +
                                AND ( @data IS NULL
 +
                                      OR CONVERT(DATE, MOV.epr_dataReserva) = @data
 +
                                    )
 +
                                AND @lre_situacao = 2 --Reserva aprovada
 +
                      GROUP BY MOV.ace_id ,
 +
                                MOV.exm_id ,
 +
                                ace_titulo ,
 +
                                exm_tombo ,
 +
                                bib_nome ,
 +
                                tor_nome
 +
                    ),
 +
                Total
 +
                  AS ( SELECT  ace_id ,
 +
                                exm_id ,
 +
                                ace_titulo ,
 +
                                exm_tombo ,
 +
                                bib_nome ,
 +
                                ( qtd + ( SELECT    COUNT(ace_id)
 +
                                          FROM      AcervosReserva AR
 +
                                          WHERE    AR.ace_id = LR.ace_id
 +
                                                    AND AR.exm_id = LR.exm_id
 +
                                        ) ) AS qtd ,
 +
                                tor_nome
 +
                      FROM    ListaReserva LR
 +
                      UNION
 +
                      SELECT  ace_id ,
 +
                                exm_id ,
 +
                                ace_titulo ,
 +
                                exm_tombo ,
 +
                                bib_nome ,
 +
                                ( SELECT    COUNT(ace_id)
 +
                                  FROM      AcervosReserva AR
 +
                                  WHERE    AR.ace_id = AR2.ace_id
 +
                                            AND AR.exm_id = AR2.exm_id
 +
                                ) qtd ,
 +
                                tor_nome
 +
                      FROM    AcervosReserva AR2
 +
                    )
 +
            SELECT  ace_id ,
 +
                    exm_id ,
 +
                    ace_titulo ,
 +
                    exm_tombo ,
 +
                    bib_nome ,
 +
                    MAX(qtd) AS qtd ,
 +
                    tor_nome
 +
            FROM    Total
 +
            GROUP BY ace_id ,
 +
                    exm_id ,
 +
                    ace_titulo ,
 +
                    exm_tombo ,
 +
                    bib_nome ,
 +
                    tor_nome
 +
</syntaxhighlight>
  
 
=== Cenários de uso ===
 
=== Cenários de uso ===
Linha 43: Linha 1 047:
 
|-
 
|-
 
|colspan="2"|2 - Clicar em "Incluir título" || style="text-align: center; | 3
 
|colspan="2"|2 - Clicar em "Incluir título" || style="text-align: center; | 3
|-
 
|colspan="2"|2 - Preencher "Tipo" || style="text-align: center; | 3
 
 
|-
 
|-
 
|colspan="2"|2 - Preencher campo "Autor" || style="text-align: center; | 4
 
|colspan="2"|2 - Preencher campo "Autor" || style="text-align: center; | 4
Linha 294: Linha 1 296:
 
|-
 
|-
 
|}
 
|}
 
  
 
=== Resultado dos testes ===
 
=== Resultado dos testes ===
Linha 302: Linha 1 303:
 
: Descrição: Mede a saturação do processador e mostra a quantidade de tempo despendida para processar as threads por todas as CPUs.
 
: Descrição: Mede a saturação do processador e mostra a quantidade de tempo despendida para processar as threads por todas as CPUs.
 
: Limite recomendado: Abaixo de 75 %.
 
: Limite recomendado: Abaixo de 75 %.
: Análise: A aplicação demonstrou desempenho esperado.
+
: Análise: A aplicação demonstrou desempenho esperado até atingir 550 usuários simultâneos, onde apenas o servidor WEB01 sofre um pico e os demais servidores não utilizam tanto processamento. Este comportamento esta relacionado a quantidade de erros gerados pela aplicação.
  
:::::: [[Em verificação]]
+
:::::: [[Arquivo:2016-07-19 Biblioteca TempoProcessador.png]]
  
  
Linha 310: Linha 1 311:
 
: Descrição: Indica a porcentagem de memória utilizada para uso dos processos.
 
: Descrição: Indica a porcentagem de memória utilizada para uso dos processos.
 
: Limite recomendado: Abaixo de 75 %.
 
: Limite recomendado: Abaixo de 75 %.
: Análise: A aplicação utiliza utiliza uma quantidade significativa de memória.
+
: Análise: Em dois momentos o WEB01 sofreu uma queda na utilização da memória. Os demais servidores mantiveram-se estáveis quanto a utilização de memória.
  
:::::: [[Em verificação]]
+
:::::: [[Arquivo:2016-07-19 Biblioteca MemoriaUtilizada.png]]
  
  
Linha 318: Linha 1 319:
 
: Descrição: Indica quantos Kbytes foram enviados e recebidos a cada segundo pela interface de rede.
 
: Descrição: Indica quantos Kbytes foram enviados e recebidos a cada segundo pela interface de rede.
 
: Limite recomendado: Menor que 5 Mbytes para uma rede de 100Mbps, menor que 50 Mbytes para uma rede de 1000 Mbps. (Quanto menor melhor).
 
: Limite recomendado: Menor que 5 Mbytes para uma rede de 100Mbps, menor que 50 Mbytes para uma rede de 1000 Mbps. (Quanto menor melhor).
: Análise: Ocorre picos de envio e recebimento de Kbytes realizados pelo sistema.
+
: Análise: Foi observado que quanto maior a quantidade de erros de dll salvas menor a quantidade de Kbytes enviados e recebidos.
  
:::::: [[Em verificação]]
+
:::::: [[Arquivo:2016-07-19 Biblioteca InterfaceDeRede.png]]
  
  
Linha 326: Linha 1 327:
 
: Descrição: Indica o tempo médio de resposta das requisições.
 
: Descrição: Indica o tempo médio de resposta das requisições.
 
: Limite recomendado: 5 segundos.
 
: Limite recomendado: 5 segundos.
: Análise: A aplicação demonstrou desempenho esperado próximo à 350 usuários, com uma quantidade superior de usuários os servidores ficam sobrecarregados, aumentando significativamente o tempo de resposta.
+
: Análise: A partir de 300 usuários simultâneos até 400 usuários ocorre uma alta no tempo de resposta da aplicação, tendo um pico com 350 usuários simultâneos.
 +
 
 +
:::::: [[Arquivo:2016-07-19 Biblioteca TempoDeResposta.png]]
 +
::::::: [[Arquivo:2016-07-19 Bibliote TempoDeResposta Leg1.png]]
 +
::::::: [[Arquivo:2016-07-19 Bibliote TempoDeResposta Leg2.png]]
  
:::::: [[Em verificação]]
 
  
 
*'''Tempo de vazão'''  
 
*'''Tempo de vazão'''  
 
: Descrição: Indica a quantidade total de request por segundo.
 
: Descrição: Indica a quantidade total de request por segundo.
 
: Limite recomendado: Quanto maior melhor.
 
: Limite recomendado: Quanto maior melhor.
: A aplicação demonstrou desempenho esperado até atingir 400 usuários simultâneos.
+
: Análise: A aplicação teve apenas um desvio quando utilizada por 350 usuários.
  
:::::: [[Em verificação]]  
+
:::::: [[Arquivo:2016-07-19 Biblioteca Vazao.png]]  
  
  
Linha 341: Linha 1 345:
 
: Descrição: Indica a porcentagem de erro.
 
: Descrição: Indica a porcentagem de erro.
 
: Limite recomendado: Quanto menor melhor.
 
: Limite recomendado: Quanto menor melhor.
: A aplicação demonstrou grande porcentagem de erro.
+
: Análise: A aplicação possui erros funcionais que não retornam mensagem na tela para o usuário, os mesmos são apenas salvos em logs de erros.
  
:::::: [[Em verificação]]
+
:::::: [[Arquivo:2016-07-19 Biblioteca Erros.png]]

Edição atual tal como às 17h02min de 10 de agosto de 2016

Sistemas Verificados

  • Biblioteca, versão 1.45.0.0

Verificação de Segurança

Em verificação.


Verificação de Desempenho

Observação do teste

Para a execução dos testes foram utilizados:

  • 1 Servidor de banco de dados.
  • 2 Servidores web.
  • 2 Test Agent

Durante os testes foi observada a necessidade da execução de uma bateria de testes funcionais no sistema, devido a bugs encontrados na construção do cenários de testes, sendo que alguns deles impediam a utilização do sistema.

A equipe responsável atualmente pelo projeto atualizou o ambiente de teste e o de demonstração, devido aos mesmos estarem com versões legadas.

Análise do teste

O sistema realiza um série que requisições que ficam salvas no log do ARR, consumindo assim uma grande quantidade do disco, chegando a utilizar mais de 50% do disco com menos de 550 usuários. Devido a quantidade de resquest, em geral muitos gets para um post, resultam em um arquivo muito grande não possibilitando a leitura do mesmo.

A média de fila em disco entra-se dentro do aconselhado. O tempo médio de resposta das requisições manteve-se no limite estabelecido, exceto ao ser utilizado por 350 usuários e o request para incluir um novo exemplar.

Durante os testes ocorreram erros na 'ddlBiblioteca', tblAuxiliar, deadlock nas movimentações e timeout. O timeout ocorre durante as movimentações do sistema e na tela de reserva, os requests relacionados a mesma não ficam presos em loop no ARR e nos servidores web. Devido a quantidade de erros não foi possível continuar a realizar os teste.

Abaixo seguem alguns dos logs de erros:

  • Deadlock
Exception Type: System.Data.SqlClient.SqlException
Exception: Transaction (Process ID 207) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
Source: .Net SqlClient Data Provider
Stack Trace: 
  at MSTech.Data.Common.TalkDBTransaction.setError(Exception err)
  at MSTech.Data.Common.TalkDBTransaction.QuerySelect(DbCommand cmd)
  at MSTech.Data.Common.QuerySelect.Execute()
  at MSTech.Biblioteca.DAL.BIB_MovimentacaoDAO.GetSelectDataSuspensaoByLeitor(Guid pes_id, Int32 bib_id, Int32 valorParametro, Int32& totalRecords) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\MSTech.GestaoEscolar.DAL\BIB_MovimentacaoDAO.cs:line 854
  at MSTech.Biblioteca.BLL.BIB_MovimentacaoBO.GetSelectDataSuspensaoByLeitor(Guid pes_id, Int32 bib_id) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\MSTech.GestaoEscolar.BLL\BIB_MovimentacaoBO.cs:line 1946
  at Movimentacao_Devolucao_Cadastro.CarregaGrid() in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\Biblioteca\Movimentacao\Devolucao\Cadastro.aspx.cs:line 792
  at Movimentacao_Devolucao_Cadastro.UCComboBiblioteca__IndexChanged() in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\Biblioteca\Movimentacao\Devolucao\Cadastro.aspx.cs:line 1497
\r\n


  • Erro dllBiblioteca
Exception Type: System.ArgumentOutOfRangeException
Exception: 'ddlBiblioteca' has a SelectedValue which is invalid because it does not exist in the list of items.
Parameter name: value
Source: System.Web
Stack Trace: 
  at System.Web.UI.WebControls.ListControl.set_SelectedValue(String value)
  at Movimentacao_Devolucao_Cadastro._RetornaMatricula(Guid pes_id) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\Biblioteca\Movimentacao\Devolucao\Cadastro.aspx.cs:line 1556
\r\n


  • Erro tblAuxiliar
Exception Type: System.Data.SqlClient.SqlException
Exception: Cannot drop the table '#tblAuxiliar', because it does not exist or you do not have permission.
Source: .Net SqlClient Data Provider
Stack Trace: 
  at MSTech.Data.Common.TalkDBTransaction.setError(Exception err)
  at MSTech.Data.Common.TalkDBTransaction.QuerySelect(DbCommand cmd)
  at MSTech.Data.Common.QuerySelect.Execute()
  at MSTech.Biblioteca.DAL.BIB_MovimentacaoDAO.GetSelectDataSuspensaoByLeitor_lista(Guid pes_id, Int32 bib_id, Int32 valorParametro, Int32& totalRecords) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\MSTech.GestaoEscolar.DAL\BIB_MovimentacaoDAO.cs:line 2294
  at MSTech.Biblioteca.BLL.BIB_MovimentacaoBO.GetSelectDataSuspensaoByLeitor_lista(Guid pes_id, Int32 bib_id, Guid ent_id) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\MSTech.GestaoEscolar.BLL\BIB_MovimentacaoBO.cs:line 1980
  at MSTech.Biblioteca.BLL.BIB_MovimentacaoBO.usuarioSuspensoBiblioteca(Int32 bib_id, Guid pes_id, DateTime data, Guid ent_id) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\MSTech.GestaoEscolar.BLL\BIB_MovimentacaoBO.cs:line 1921
  at Movimentacao_Devolucao_Cadastro.validaSuspensaoAutomatica(Int32 bib_id, Guid pes_id) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\Biblioteca\Movimentacao\Devolucao\Cadastro.aspx.cs:line 1656
  at Movimentacao_Devolucao_Cadastro.CarregaGrid() in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\Biblioteca\Movimentacao\Devolucao\Cadastro.aspx.cs:line 861
  at Movimentacao_Devolucao_Cadastro.UCComboBiblioteca__IndexChanged() in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\Biblioteca\Movimentacao\Devolucao\Cadastro.aspx.cs:line 1497
\r\n


  • Timeout
Inner Exception Type: System.ComponentModel.Win32Exception
Inner Exception: The wait operation timed out
Inner Source: 
Exception Type: System.Data.SqlClient.SqlException
Exception: Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.
Source: .Net SqlClient Data Provider
Stack Trace: 
  at MSTech.Data.Common.TalkDBTransaction.setError(Exception err)
  at MSTech.Data.Common.TalkDBTransaction.QuerySelect(DbCommand cmd)
  at MSTech.Data.Common.QuerySelect.Execute()
  at MSTech.Biblioteca.DAL.BIB_ListaReservaDAO.Busca_ReservasAcervo(Int32 bib_id, String ace_titulo, Int16 ace_tipoBusca, String exm_tombo, DateTime data, Byte lre_situacao, Int32& totalRecords) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\MSTech.GestaoEscolar.DAL\BIB_ListaReservaDAO.cs:line 371
  at MSTech.Biblioteca.BLL.BIB_ListaReservaBO.Busca_ReservasAcervo(Int32 bib_id, Int16 ace_tipoBusca, String ace_titulo, String exm_tombo, DateTime data, Byte lre_situacao) in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\MSTech.GestaoEscolar.BLL\BIB_ListaReservaBO.cs:line 165
  at Movimentacao_Devolucao_Cadastro.Salvar() in d:\b\Biblioteca\Biblioteca_Main.Minor\src\Biblioteca\Main\Src\Biblioteca\Movimentacao\Devolucao\Cadastro.aspx.cs:line 590
\r\n


TOP 10 queries mais lentas

  • Item 1
 1 SELECT  DISTINCT 
 2 	A.ace_titulo
 3 	, A.ace_subTitulo
 4 	, dbo.FN_ConcatenaTuplas_ClassificacaoLiteraria(A.ace_id) AS cll_nome
 5 	, aut_nomePadrao
 6 	, aut_nome
 7 	, edt.edt_nome
 8 	, tpo.tor_nome
 9 	, a.ace_id
10 	, O.obr_volume
11 	, A.ace_isbnIssn
12 	, A.ace_cdd
13 	, A.ace_phaCutter
14 	, O.obr_edicao
15 	, O.obr_anoEdicao
16 	, aut.oat_descricao
17 	, A.ace_linkDominio
18 FROM    BIB_Acervo A WITH ( NOLOCK )
19 	INNER JOIN BIB_Exemplar E WITH ( NOLOCK ) ON A.ace_id = E.ace_id
20         INNER JOIN BIB_ExemplarLocalizacao EL WITH ( NOLOCK ) ON A.ace_id = EL.ace_id AND E.exm_id = EL.exm_id
21 	INNER JOIN BIB_Biblioteca bib WITH ( NOLOCK ) ON bib.bib_id = EL.bib_id 
22 	INNER JOIN Synonym_SYS_UnidadeAdministrativa uad WITH(NOLOCK) ON uad.uad_id = BIB.uad_id AND uad.ent_id = BIB.ent_id 
23         INNER JOIN BIB_ObraAutor oa WITH (NOLOCK) ON A.ace_id = oa.ace_id
24         INNER JOIN BIB_Obra O WITH (NOLOCK) ON A.ace_id = O.ace_id
25 	INNER JOIN BIB_TipoObra tpo WITH ( NOLOCK ) ON A.tor_id = tpo.tor_id                
26         INNER JOIN BIB_ObraClassificacao CLO WITH (NOLOCK) ON A.ace_id = CLO.ace_id
27         INNER JOIN BIB_ClassificacaoLiteraria cl WITH (NOLOCK) ON cl.cll_id = CLO.cll_id
28 				               
29         LEFT JOIN BIB_Editora edt WITH(NOLOCK) ON A.edt_id = edt.edt_id
30         LEFT JOIN BIB_GrupoAssunto ga WITH (NOLOCK) on A.gra_id = ga.gra_id                
31 	LEFT JOIN BIB_GeneroAssunto gs WITH (NOLOCK) ON cl.cll_id = gs.cll_id AND (gs.gnr_situacao = 1 OR gs.gnr_situacao IS NULL)
32         LEFT JOIN INT_ObraAutor aut WITH (NOLOCK) ON a.ace_id = aut.ace_id                
33         
34 WHERE 
35 	((A.ace_situacao = 1 OR A.ace_situacao = 5)
36 	AND E.exm_situacao NOT IN ( 3, 4)
37 	AND E.ace_id IS NOT NULL
38 	AND (edt.edt_situacao = 1 OR edt.edt_situacao IS NULL)
39 	AND (tor_situacao = 1 OR tor_situacao IS NULL) 
40 	AND (ga.gra_situacao = 1 OR ga.gra_situacao IS NULL)
41 	AND (cl.cll_situacao = 1 OR cl.cll_situacao IS NULL)
42 	AND (bib.bib_situacao <> 3  AND uad.uad_situacao <> 3))
43 	--AND (gs.gnr_situacao = 1 OR gs.gnr_situacao IS NULL))
44 		AND (
45 		A.ace_titulo LIKE '%' + @texto + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
46 		OR A.ace_isbnIssn LIKE '%' + @texto + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
47                 OR edt.edt_nome LIKE '%' + @texto + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
48                 OR O.obr_anoEdicao LIKE '%' + @texto + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao 
49                 OR O.obr_serieColecao LIKE '%' + @texto + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
50                 OR ga.gra_nome LIKE '%' + @texto + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
51                 OR cl.cll_nome LIKE '%' + @texto + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
52                 OR gs.gnr_nome LIKE '%' + @texto + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao 
53                 OR aut.aut_nomePadrao LIKE '%' + @texto + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
54 		OR aut.aut_nome LIKE '%' + @texto + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
55 			)
56 			AND 
57 			(
58 				EL.bib_id IN
59 					(
60 						SELECT bib_id
61 						FROM BIB_ParametroBiblioteca pb
62 						WHERE pbi_permitiConsultaExterna = 0 -- permite consulta do acervo
63 						) 
64 					OR EL.bib_id IS NULL
65 				)
66         ORDER BY A.ace_titulo


  • Item 2
  1 WITH ExemplaresSemGrupo AS (
  2 	SELECT  
  3 		EXM.ace_id,
  4 		EXM.exm_id,
  5 		BIB.bib_id,
  6 		ACE.gra_id
  7 			    
  8          FROM  BIB_Exemplar AS EXM WITH ( NOLOCK )
  9             
 10               INNER JOIN BIB_ExemplarLocalizacao AS EXL WITH ( NOLOCK ) 
 11 		ON EXM.ace_id = EXL.ace_id
 12               AND EXM.exm_id = EXL.exm_id
 13                                
 14               INNER JOIN dbo.BIB_Biblioteca AS BIB WITH (NOLOCK) 
 15 		ON BIB.bib_id = EXL.bib_id
 16 							
 17 	      INNER JOIN dbo.BIB_Acervo AS ACE WITH(NOLOCK)
 18 		ON ACE.ace_id = EXM.ace_id
 19 							
 20 	      LEFT JOIN dbo.BIB_GrupoAssunto AS GRA WITH (NOLOCK)
 21 		ON GRA.gra_id = ACE.gra_id
 22 		AND GRA.gra_situacao <> 3	
 23               WHERE  
 24                 exm_situacao <> 3 AND
 25                 bib_situacao <> 3 AND
 26                 ACE.gra_id IS NULL
 27               ),
 28               
 29       AcervosSemGrupo AS (
 30       
 31             SELECT 
 32 		ace_id,
 33 		bib_id,
 34 		gra_id 
 35 	    FROM ExemplaresSemGrupo 
 36 	
 37 	    GROUP BY ace_id,
 38 		bib_id,
 39 		gra_id
 40 	                 ),
 41               
 42       Exemplares AS (
 43       
 44               SELECT  
 45 		EXM.exm_id,
 46 		gra_id,
 47 		ACE.ace_id,
 48 		ACE.ace_situacao,
 49 		BIB.bib_id
 50 			    
 51               FROM BIB_Acervo AS ACE WITH (NOLOCK) 
 52               
 53                 INNER JOIN BIB_Exemplar AS EXM WITH (NOLOCK) 
 54                 ON EXM.ace_id = ACE.ace_id
 55                         
 56                 INNER JOIN BIB_ExemplarLocalizacao AS EXL WITH (NOLOCK) 
 57                 ON EXL.ace_id = ACE.ace_id
 58 		AND EXL.exm_id = EXM.exm_id
 59                         
 60                 INNER JOIN BIB_Biblioteca AS BIB WITH (NOLOCK)
 61                 ON BIB.bib_id = EXL.bib_id
 62 							
 63               WHERE     
 64 		exm_situacao <> 3 AND
 65 		bib_situacao <> 3
 66 			),
 67               
 68       Acervos AS (
 69               
 70               SELECT 
 71 		ce_id,
 72 		gra_id,
 73 		bib_id
 74 				 
 75 	      FROM Exemplares WITH (NOLOCK)
 76 				
 77 	      GROUP BY 
 78 		ace_id,
 79 		gra_id,
 80 		bib_id
 81 		 )
 82 	
 83     SELECT  gra_id ,
 84             cor_hexadecimal ,
 85             cor_nome ,
 86             gra_nome ,
 87 	    gra_numeroGrupo,
 88             ( 
 89             SELECT COUNT(exm_id) FROM Exemplares  AS EXE WHERE EXE.gra_id = GRA.gra_id
 90             ) qtdExemplares ,
 91             (
 92             SELECT COUNT(ace_id) FROM Acervos AS ACE WHERE ACE.gra_id = GRA.gra_id
 93                        
 94             ) qtdAcervo
 95             
 96     FROM    
 97 	BIB_GrupoAssunto AS GRA WITH (NOLOCK)
 98 		
 99         LEFT JOIN BIB_Cor AS COR WITH (NOLOCK) 
100 	ON GRA.cor_id = COR.cor_id
101 	WHERE GRA.gra_situacao <> 3
102     UNION ALL
103     
104     SELECT  -1 ,
105             NULL ,
106             NULL ,
107             'Sem grupo de assunto' ,
108 			NULL,
109             ( 
110              SELECT COUNT(exm_id) FROM ExemplaresSemGrupo WHERE gra_id IS NULL
111             ) qtdExemplares ,
112             
113             ( SELECT COUNT(ace_id) FROM  AcervosSemGrupo WHERE gra_id IS NULL
114                         
115             ) qtdAcervo
116              order by gra_nome


  • Item 3
 1 SELECT 
 2 		MAX(CAST(LTRIM(RTRIM(EXM.exm_tombo)) AS BIGINT)) AS tombo
 3 	FROM
 4 		BIB_Exemplar as EXM WITH(NOLOCK)
 5 		INNER JOIN BIB_ExemplarLocalizacao AS EL WITH(NOLOCK)
 6 			ON EL.ace_id = EXM.ace_id
 7 			AND EL.exm_id = EXM.exm_id
 8 	WHERE
 9 		exm_situacao <> 3
10 		AND (EL.bib_id = @bib_id OR @bib_id IS NULL)
11 		AND (ISNUMERIC(EXM.exm_tombo) = 1 AND EXM.exm_tombo NOT LIKE '%[.]%'  AND EXM.exm_tombo NOT LIKE '%[,]%')
12 		AND EXM.exm_tombo NOT LIKE '%e%'


  • Item 4
 1 FROM    BIB_Acervo WITH ( NOLOCK )
 2                 INNER JOIN BIB_Exemplar WITH ( NOLOCK ) ON BIB_Acervo.ace_id = BIB_Exemplar.ace_id 
 3         --LEFT JOIN BIB_ExemplarObra WITH ( NOLOCK ) ON BIB_Exemplar.ace_id = BIB_ExemplarObra.ace_id 
 4         --                              AND BIB_Exemplar.exm_id = BIB_ExemplarObra.exm_id
 5         --LEFT JOIN BIB_Periodico WITH ( NOLOCK ) ON BIB_ExemplarObra.ace_id = BIB_Periodico.ace_id
 6         --LEFT JOIN BIB_ExemplarVideo WITH ( NOLOCK ) ON  BIB_ExemplarVideo.ace_id  = BIB_Acervo.ace_id
 7         WHERE   @bib_id IN (
 8                 SELECT  bib_id
 9                 FROM    BIB_ExemplarObra WITH ( NOLOCK )
10                 WHERE   ace_id = @ace_id
11                         AND BIB_ExemplarObra.exm_id = BIB_Exemplar.exm_id
12                 UNION ALL
13                 SELECT  bib_id
14                 FROM    BIB_ExemplarVideo WITH ( NOLOCK )
15                 WHERE   ace_id = @ace_id
16                         AND BIB_ExemplarVideo.exm_id = BIB_Exemplar.exm_id
17                 UNION ALL
18                 SELECT  bib_id
19                 FROM    BIB_Periodico WITH ( NOLOCK )
20                 WHERE   ace_id = @ace_id ) 
21 	  --( BIB_ExemplarObra.bib_id = @bib_id
22    --       OR BIB_Periodico.bib_id = @bib_id
23    --       OR BIB_ExemplarVideo.bib_id = @bib_id
24    --     )
25                 AND BIB_Acervo.ace_id = @ace_id


  • Item 5
  1 ELECT  
  2                 BIB_Exemplar.exm_id ,
  3                 BIB_Acervo.ace_id ,
  4                 ace_titulo ,
  5                 ISNULL(exm_tombo, exm_codigoBarras) tombo ,
  6                 aut_nome autor ,
  7                 bib_nome ,
  8                 edt_nome ,
  9                 obr_volume ,
 10                 ISNULL(exp_edicao, obr_edicao) edicao ,
 11                 obr_anoEdicao ,
 12                 ace_isbnIssn ,
 13                 CASE WHEN PBL.pbc_liberadoEmprestimo = 2
 14                      THEN 'Categoria bloqueada'
 15                      WHEN exm_situacao = 2 THEN 'Exemplar bloqueado'
 16                      ELSE ISNULL(situacao, 'Disponível')
 17                 END AS situacao ,
 18                 CASE WHEN ace_bloqueadoReserva = 1 THEN '--'
 19 					 WHEN ace_bloqueadoReserva = 0 THEN '--'
 20                 END AS ace_bloqueadoReserva ,
 21                 --CASE WHEN situacao IS NOT NULL THEN situacao
 22                 --     ELSE CASE WHEN PBL.pbc_liberadoEmprestimo = 2
 23                 --               THEN 'Categoria bloqueada'
 24                 --               WHEN exm_situacao = 2 THEN 'Exemplar bloqueado'
 25                 --               ELSE ISNULL(situacao, 'Disponível')
 26                 --          END
 27                 --END AS situacao ,
 28                 epr_dataPrevistaDevolucao dtPrevDev ,
 29                 
 30                 --ISNULL(CASE WHEN ( SELECT   COUNT(lre_id)
 31                 --                   FROM     BIB_ListaReserva a2
 32                 --                   WHERE    a2.ace_id = BIB_Exemplar.ace_id
 33                 --                            AND a2.exm_id = BIB_Exemplar.exm_id
 34                 --                            AND lre_situacao = 1
 35                 --                 ) > 0 THEN 'Existem solicitações pendentes. '
 36                 --       END, '')
 37                 --+ ISNULL(CASE WHEN ( SELECT COUNT(lre_id)
 38                 --                     FROM   BIB_ListaReserva a2
 39                 --                     WHERE  a2.ace_id = BIB_Exemplar.ace_id
 40                 --                            AND a2.exm_id = BIB_Exemplar.exm_id
 41                 --                            AND lre_situacao = 2
 42                 --                   ) > 0 THEN 'Existe lista de reserva. '
 43                 --         END, '')
 44                 --+ ISNULL(CASE WHEN ( SELECT a.mbw_acao
 45                 --                     FROM   FN_UltimaMovimentacaoBibliotecaAcao(BIB_Exemplar.ace_id,
 46                 --                                              BIB_Exemplar.exm_id) a
 47                 --                   ) = 2 THEN 'Reserva para biblioteca. '
 48                 --         END, '') obs ,
 49                 CASE WHEN ISNUMERIC(RTRIM(LTRIM(ISNULL(exm_tombo,
 50                                                        exm_codigoBarras)))) <> 0
 51                      THEN REPLICATE('0',
 52                                     ( 19
 53                                       - LEN(CAST(RTRIM(LTRIM(ISNULL(exm_tombo,
 54                                                               exm_codigoBarras))) AS VARCHAR)) ))
 55                           + CAST(RTRIM(LTRIM(ISNULL(exm_tombo,
 56                                                     exm_codigoBarras))) AS VARCHAR)
 57                      ELSE RTRIM(LTRIM(ISNULL(exm_tombo, exm_codigoBarras)))
 58                 END ordenaTombo
 59         FROM    BIB_Exemplar WITH ( NOLOCK )
 60                 INNER JOIN BIB_Acervo WITH ( NOLOCK ) ON BIB_Exemplar.ace_id = BIB_Acervo.ace_id
 61                 INNER JOIN BIB_ExemplarLocalizacao WITH ( NOLOCK ) ON BIB_Acervo.ace_id = BIB_ExemplarLocalizacao.ace_id
 62                                                               AND BIB_Exemplar.exm_id = BIB_ExemplarLocalizacao.exm_id
 63                 INNER JOIN BIB_Biblioteca WITH ( NOLOCK ) ON BIB_ExemplarLocalizacao.bib_id = BIB_Biblioteca.bib_id
 64                 LEFT JOIN BIB_ExemplarPeriodico WITH ( NOLOCK ) ON BIB_ExemplarPeriodico.exm_id = BIB_Exemplar.exm_id
 65                                                               AND BIB_ExemplarPeriodico.ace_id = BIB_Exemplar.ace_id
 66                 LEFT JOIN BIB_Editora WITH ( NOLOCK ) ON BIB_Acervo.edt_id = BIB_Editora.edt_id
 67                 LEFT JOIN BIB_Obra WITH ( NOLOCK ) ON BIB_Acervo.ace_id = BIB_Obra.ace_id
 68                 LEFT JOIN FN_UltimaMovimentacao() um ON um.ace_id = bib_exemplar.ace_id
 69                                                         AND um.exm_id = bib_exemplar.exm_id
 70                 LEFT JOIN INT_ObraAutor WITH ( NOLOCK ) ON BIB_Exemplar.ace_id = INT_ObraAutor.ace_id
 71                 LEFT JOIN BIB_ParametroBibliotecaLeitor PBL WITH ( NOLOCK ) ON PBL.tor_id = BIB_Exemplar.tor_id
 72                                                               AND PBL.toc_id = BIB_Exemplar.toc_id
 73                                                               AND PBL.bib_id = BIB_Biblioteca.bib_id
 74         WHERE   ace_situacao = 1
 75                 AND exm_situacao NOT IN ( 3, 4, 5 )
 76                 AND ( BIB_Exemplar.tor_id = @tor_id
 77                       OR @tor_id IS NULL
 78                     )
 79                 AND ( exm_tombo IN (
 80                       SELECT    valor
 81                       FROM      FN_StringToArrayStr(@exm_tombo, ';') )
 82                       OR @exm_tombo IS NULL
 83                       OR exm_codigoBarras IN (
 84                       SELECT    valor
 85                       FROM      FN_StringToArrayStr(@exm_tombo, ';') )
 86                     )
 87                 AND ( 
 88                 -- 1 : Começa por
 89                       ( @ace_tipoBusca = 1
 90                         AND ( @ace_titulo IS NULL
 91                               OR ace_titulo LIKE @ace_titulo + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
 92                               
 93                             )
 94                       )
 95                       OR
 96 				
 97 				-- 2 : Contém
 98                       ( @ace_tipoBusca = 2
 99                         AND ( @ace_titulo IS NULL
100                               OR ace_titulo LIKE '%' + @ace_titulo + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
101                               
102                             )
103                       )
104                       OR
105 				
106 				-- 3 : Fonética
107                       ( @ace_tipoBusca = 3
108                         AND ( @ace_titulo IS NULL
109                               OR dbo.SoundsLike(ace_titulo) LIKE '%'
110                               + dbo.SoundsLike(@ace_titulo) + '%'
111                             )
112                       )
113                     )
114                 AND ( edt_nome LIKE '%' + @edt_nome + '%'
115                       OR @edt_nome IS NULL
116                     )
117                 AND ent_id = @ent_id
118                 AND ( @bib_id = BIB_Biblioteca.bib_id
119                       OR @bib_id IS NULL
120                     )
121                 AND (  @aut_id IS NULL
122                               OR ( SELECT   COUNT(ace_id)
123                                    FROM     BIB_ObraAutor oa WITH ( NOLOCK )
124                                    WHERE    oa.ace_id = BIB_Exemplar.ace_id
125                                             AND oa.aut_id IN (
126                                             SELECT  CONVERT(INT, valor)
127                                             FROM    dbo.FN_StringToArrayStr(@aut_id,
128                                                               ';') )
129                                  ) > 0
130                      )
131                       
132                 AND ( @obr_volume IS NULL
133                       OR obr_volume LIKE '%' + @obr_volume + '%'
134                     )
135                 AND ( @obr_anoEdicao IS NULL
136                       OR obr_anoEdicao LIKE '%' + @obr_anoEdicao + '%'
137                     )
138                 AND ( @obr_edicao IS NULL
139                       OR obr_edicao LIKE '%' + @obr_edicao + '%'
140                     )
141                 AND @ent_id = BIB_Biblioteca.ent_id
142                 AND BIB_Biblioteca.uad_id IN ( ( SELECT uad_id
143                                                  FROM   Synonym_FN_Select_UAs_By_PermissaoUsuario(@usu_id,
144                                                               @gru_id)
145                                                )
146                                           )
147                                           -- Filtra disponível
148                 AND ( ( @exm_disponivel = 1
149                         AND epw_id IS NULL
150                         AND ace_situacao = 1
151                         AND exm_situacao NOT IN (3, 2)
152                       )
153                       OR @exm_disponivel = 0
154                     )
155                 --Deverá aparecer todos os exemplares, independente da situação (Comentado por Rafael Neto) 
156                 --AND ( ISNULL(( SELECT   CASE WHEN epw_acao = 3 THEN 1
157                 --                             WHEN epw_acao = 5 THEN 1
158                 --                             ELSE 2
159                 --                        END
160                 --               FROM     FN_UltimaMovimentacaoAcao(BIB_Exemplar.ace_id,
161                 --                                              BIB_Exemplar.exm_id)
162                 --             ), 1) = 1 )
163                 --AND ( ISNULL(( SELECT   CASE WHEN mbw_acao <> 2 THEN 1
164                 --                             ELSE 2
165                 --                        END
166                 --               FROM     FN_UltimaMovimentacaoBibliotecaAcao(BIB_Exemplar.ace_id,
167                 --                                              BIB_Exemplar.exm_id)
168                 --             ), 1) = 1 )
169         ORDER BY bib_nome ,
170                 ace_titulo


  • Item 6
  1 WITH    Acervo
  2                   AS ( SELECT   ace_id ,
  3                                 ace_isbnIssn ,
  4                                 ace_titulo ,
  5                                 edt_id ,
  6                                 tor_id ,
  7                                 ace_bloqueadoReserva ,
  8                                 ace_situacao
  9                        FROM     BIB_Acervo WITH ( NOLOCK )
 10                        WHERE    ace_situacao = 1
 11                      ),
 12                 Exemplar
 13                   AS ( SELECT   exm_id ,
 14                                 ace_id ,
 15                                 toc_id ,
 16                                 tor_id ,
 17                                 exm_tombo ,
 18                                 exm_codigoBarras ,
 19                                 exm_situacao
 20                        FROM     BIB_Exemplar WITH ( NOLOCK )
 21                        WHERE    exm_situacao NOT IN ( 3, 4 , 5)
 22                      ),
 23                 Biblioteca
 24                   AS ( SELECT   bib_id ,
 25                                 bib_nome
 26                        FROM     BIB_Biblioteca WITH ( NOLOCK )
 27                        WHERE    ent_id = @ent_id
 28                      )
 29             SELECT  e.exm_id ,
 30                     a.ace_id ,
 31                     ace_titulo ,
 32                     ISNULL(exm_tombo, exm_codigoBarras) tombo ,
 33                     aut_nome autor ,
 34                     bib_nome ,
 35                     edt_nome ,
 36                     tor_nome ,
 37                     ace_isbnIssn ,
 38                     obr_volume ,
 39                     obr_edicao edicao ,
 40                     obr_anoEdicao ,
 41                     CASE WHEN PBL.pbc_liberadoEmprestimo = 2 THEN 'Categoria bloqueada'
 42                          WHEN e.exm_situacao = 2 THEN 'Exemplar bloqueado'
 43                          WHEN e.exm_situacao = 5 THEN 'Exemplar retido'
 44                          ELSE ISNULL(situacao, 'Disponível')
 45                     END AS situacao ,
 46 					CASE WHEN ace_bloqueadoReserva = 1 THEN 'Bloqueado para reserva' 
 47 						 WHEN ace_bloqueadoReserva = 0 THEN '--'
 48 					END AS ace_bloqueadoReserva ,                    
 49 					epr_dataPrevistaDevolucao dtPrevDev ,
 50                     --ISNULL(CASE WHEN ( SELECT   COUNT(lre_id)
 51                     --                   FROM     BIB_ListaReserva a2
 52                     --                   WHERE    a2.ace_id = e.ace_id
 53                     --                            AND a2.exm_id = e.exm_id
 54                     --                            AND lre_situacao = 1
 55                     --                 ) > 0
 56                     --            THEN 'Existem solicitações pendentes. '
 57                     --       END, '')
 58                     --+ ISNULL(CASE WHEN ( SELECT COUNT(lre_id)
 59                     --                     FROM   BIB_ListaReserva a2
 60                     --                     WHERE  a2.ace_id = e.ace_id
 61                     --                            AND a2.exm_id = e.exm_id
 62                     --                            AND lre_situacao = 2
 63                     --                   ) > 0 THEN 'Existe lista de reserva. '
 64                     --         END, '')
 65                     --+ ISNULL(CASE WHEN ( SELECT a.mbw_acao
 66                     --                     FROM   FN_UltimaMovimentacaoBibliotecaAcao(e.ace_id,
 67                     --                                          e.exm_id) a
 68                     --                   ) = 2 THEN 'Reserva para biblioteca. '
 69                     --         END, '') obs ,
 70                     CASE WHEN ISNUMERIC(RTRIM(LTRIM(ISNULL(exm_tombo,
 71                                                            exm_codigoBarras)))) <> 0
 72                          THEN REPLICATE('0',
 73                                         ( 19
 74                                           - LEN(CAST(RTRIM(LTRIM(ISNULL(exm_tombo,
 75                                                               exm_codigoBarras))) AS VARCHAR)) ))
 76                               + CAST(RTRIM(LTRIM(ISNULL(exm_tombo,
 77                                                         exm_codigoBarras))) AS VARCHAR)
 78                          ELSE RTRIM(LTRIM(ISNULL(exm_tombo, exm_codigoBarras)))
 79                     END ordenaTombo
 80             FROM    Acervo a
 81                     INNER JOIN Exemplar e ON a.ace_id = e.ace_id
 82                     INNER JOIN BIB_ExemplarLocalizacao WITH ( NOLOCK ) ON e.ace_id = BIB_ExemplarLocalizacao.ace_id
 83                                                               AND e.exm_id = BIB_ExemplarLocalizacao.exm_id
 84                     INNER JOIN Biblioteca b ON BIB_ExemplarLocalizacao.bib_id = b.bib_id
 85                     LEFT JOIN BIB_Obra WITH ( NOLOCK ) ON a.ace_id = BIB_Obra.ace_id
 86                     LEFT JOIN BIB_Editora WITH ( NOLOCK ) ON a.edt_id = BIB_Editora.edt_id
 87                     LEFT JOIN BIB_TipoObra WITH ( NOLOCK ) ON a.tor_id = BIB_TipoObra.tor_id
 88                     LEFT JOIN FN_UltimaMovimentacao() um ON um.ace_id = e.ace_id
 89                                                             AND um.exm_id = e.exm_id
 90                     LEFT JOIN INT_ObraAutor WITH ( NOLOCK ) ON e.ace_id = INT_ObraAutor.ace_id
 91                     LEFT JOIN BIB_ParametroBibliotecaLeitor PBL WITH ( NOLOCK ) ON PBL.tor_id = e.tor_id
 92                                                               AND PBL.toc_id = e.toc_id
 93                                                               AND PBL.bib_id = b.bib_id
 94             WHERE   ( ( @somenteDisponivies = 1
 95                         AND epw_id IS NOT NULL
 96                       )
 97                       OR @somenteDisponivies = 0
 98                     )
 99                     AND ( @bib_id = b.bib_id
100                           OR @bib_id IS NULL
101                         )
102                     AND ( a.tor_id = @tor_id
103                           OR @tor_id IS NULL
104                         )
105                     AND ( exm_tombo IN (
106                           SELECT    valor
107                           FROM      FN_StringToArrayStr(@exm_tombo, ';') )
108                           OR @exm_tombo IS NULL
109                           OR exm_codigoBarras IN (
110                           SELECT    valor
111                           FROM      FN_StringToArrayStr(@exm_tombo, ';') )
112                         )
113                     AND ( 
114                 -- 1 : Começa por
115                           ( @ace_tipoBusca = 1
116                             AND ( @ace_titulo IS NULL
117                                   OR ace_titulo LIKE @ace_titulo + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
118                                   
119                                 )
120                           )
121                           OR
122 				
123 				-- 2 : Contém
124                           ( @ace_tipoBusca = 2
125                             AND ( @ace_titulo IS NULL
126                                   OR ace_titulo LIKE '%' + @ace_titulo + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
127                                   
128                                 )
129                           )
130                           OR
131 				
132 				-- 3 : Fonética
133                           ( @ace_tipoBusca = 3
134                             AND ( @ace_titulo IS NULL
135                                   OR dbo.SoundsLike(ace_titulo) LIKE '%'
136                                   + dbo.SoundsLike(@ace_titulo) + '%'
137                                 )
138                           )
139                         )
140                     AND ( edt_nome LIKE '%' + @edt_nome + '%'
141                           OR @edt_nome IS NULL
142                         )
143                     AND (  @aut_id IS NULL
144                                   OR ( SELECT   COUNT(ace_id)
145                                        FROM     BIB_ObraAutor oa WITH ( NOLOCK )
146                                        WHERE    oa.ace_id = e.ace_id
147                                                 AND oa.aut_id IN (
148                                                 SELECT  CONVERT(INT, valor)
149                                                 FROM    dbo.FN_StringToArrayStr(@aut_id,
150                                                               ';') )
151                                      ) > 0
152                                 )
153                         
154                     AND ( @obr_volume IS NULL
155                           OR obr_volume LIKE '%' + @obr_volume + '%'
156                         )
157                     AND ( @obr_anoEdicao IS NULL
158                           OR obr_anoEdicao LIKE '%' + @obr_anoEdicao + '%'
159                         )
160                     AND ( @obr_edicao IS NULL
161                           OR obr_edicao LIKE '%' + @obr_edicao + '%'
162                         )
163                     AND ( ISNULL(( SELECT   CASE WHEN mbw_acao <> 2 THEN 1
164                                                  ELSE 2
165                                             END
166                                    FROM     FN_UltimaMovimentacaoBibliotecaAcao(e.ace_id,
167                                                               e.exm_id)
168                                  ), 1) = 1 )
169                 
170                 -- Filtra disponível
171                     AND ( ( @exm_disponivel = 1
172                             AND um.epw_id IS NULL
173                             AND a.ace_situacao = 1
174 							AND exm_situacao NOT IN (3, 2)
175                           )
176                           OR @exm_disponivel = 0
177                         )
178             ORDER BY bib_nome ,
179                     ace_titulo


  • Item 7
 1 SELECT  lei.pes_id ,
 2                 pes_nome ,
 3                 lei_codigo ,
 4                 lei_cargo ,
 5                 lei_funcao ,
 6                 tpl_nome lei_tipo ,
 7                 psd_numero ,
 8                 ( CASE WHEN lei.mbl_id > 0 THEN 4 --Bloqueado 
 9                        WHEN BIB_TipoLeitor.mbl_id > 0
10                             AND lei_ultimaAtualizacao < GETDATE() THEN 4 -- Bloqueado
11                        WHEN ( SELECT    SUM(dbo.FN_diasAtraso(m.ace_id,
12                                                               m.exm_id, 0, @considerarApenasDiasUteis))
13                               FROM      FN_UltimaMovimentacao() m
14                               WHERE     m.pes_id = lei.pes_id
15                             ) > 0 THEN 2 --Empréstimo em atraso
16                        WHEN CAST(( SELECT   dbo.FN_ValorDividaTotal(lei.pes_id, NULL, @considerarApenasDiasUteis)
17                                  ) AS DECIMAL(18, 2)) > 0 THEN 3	-- multa			
18                        ELSE 1 -- Liberado para Empréstimo							
19                   END ) situacao
20         FROM    dbo.BIB_Leitor AS lei WITH ( NOLOCK )
21                 INNER JOIN BIB_TipoLeitor WITH ( NOLOCK ) ON lei.tpl_id = BIB_TipoLeitor.tpl_id
22                 INNER JOIN Synonym_PES_Pessoa AS pes WITH ( NOLOCK ) 
23                 ON pes.pes_id = lei.pes_id
24                 AND pes.pes_situacao <> 3
25                 LEFT JOIN Synonym_PES_PessoaDocumento AS PES_PessoaDocumento
26                 WITH ( NOLOCK ) 
27                 ON lei.pes_id = PES_PessoaDocumento.pes_id
28                 AND psd_situacao <> 3
29                 AND PES_PessoaDocumento.tdo_id = @tdo_id
30         WHERE   
31 			(
32 				CASE @var_tipobuscaNome
33 				WHEN 3 -- Fonética.
34 				THEN dbo.SoundsLike(pes.pes_nome COLLATE Latin1_General_CI_AI)
35 				ELSE pes.pes_nome COLLATE Latin1_General_CI_AI
36 				END
37 			) 
38 			LIKE @var_pes_nome + '%'
39                 AND ( @lei_codigo IS NULL
40                       OR lei_codigo = @lei_codigo
41                     )
42                 AND ( @psd_numero IS NULL
43                       OR PES_PessoaDocumento.psd_numero = @psd_numero
44                     )
45                 --AND tdo_id=@tdo_id
46                 AND lei.lei_situacao <> 3
47         ORDER BY pes_nome


  • Item 8
 1 SELECT  lei.pes_id ,
 2                 pes_nome ,
 3                 lei_codigo ,
 4                 lei_cargo ,
 5                 lei_funcao ,
 6                 tpl_nome lei_tipo ,
 7                 psd_numero ,
 8                 ( CASE WHEN lei.mbl_id > 0 THEN 4 --Bloqueado 
 9                        WHEN BIB_TipoLeitor.mbl_id > 0
10                             AND lei_ultimaAtualizacao < GETDATE() THEN 4 -- Bloqueado
11                        WHEN ( SELECT    SUM(dbo.FN_diasAtraso(m.ace_id,
12                                                               m.exm_id, 0, @considerarApenasDiasUteis))
13                               FROM      FN_UltimaMovimentacao() m
14                               WHERE     m.pes_id = lei.pes_id
15                             ) > 0 THEN 2 --Empréstimo em atraso
16                        WHEN CAST(( SELECT   dbo.FN_ValorDividaTotal(lei.pes_id, NULL, @considerarApenasDiasUteis)
17                                  ) AS DECIMAL(18, 2)) > 0 THEN 3	-- multa			
18                        ELSE 1 -- Liberado para Empréstimo							
19                   END ) situacao
20         FROM    dbo.BIB_Leitor AS lei WITH ( NOLOCK )
21                 INNER JOIN BIB_TipoLeitor WITH ( NOLOCK ) ON lei.tpl_id = BIB_TipoLeitor.tpl_id
22                 INNER JOIN Synonym_PES_Pessoa AS pes WITH ( NOLOCK ) 
23                 ON pes.pes_id = lei.pes_id
24                 AND pes.pes_situacao <> 3
25                 LEFT JOIN Synonym_PES_PessoaDocumento AS PES_PessoaDocumento
26                 WITH ( NOLOCK ) 
27                 ON lei.pes_id = PES_PessoaDocumento.pes_id
28                 AND psd_situacao <> 3
29                 AND PES_PessoaDocumento.tdo_id = @tdo_id
30         WHERE   
31 			(
32 				CASE @var_tipobuscaNome
33 				WHEN 3 -- Fonética.
34 				THEN dbo.SoundsLike(pes.pes_nome COLLATE Latin1_General_CI_AI)
35 				ELSE pes.pes_nome COLLATE Latin1_General_CI_AI
36 				END
37 			) 
38 			LIKE @var_pes_nome + '%'
39                 AND ( @lei_codigo IS NULL
40                       OR lei_codigo = @lei_codigo
41                     )
42                 AND ( @psd_numero IS NULL
43                       OR PES_PessoaDocumento.psd_numero = @psd_numero
44                     )
45                 --AND tdo_id=@tdo_id
46                 AND lei.lei_situacao <> 3
47         ORDER BY pes_nome


  • Item 9
 1 INSERT INTO 
 2 		BIB_ListaReserva
 3 		( 
 4 			ace_id 
 5 			, exm_id 
 6 			, lre_id 
 7 			, pes_id 
 8 			, lre_motivoCancelamento 
 9 			, lre_dataAprovacao 
10 			, lre_dataCancelamento 
11 			, lre_dataLiberacao
12 			, lre_situacao 
13 			, lre_dataCriacao 
14 			, lre_dataAlteracao 
15  
16 		)
17 	VALUES
18 		( 
19 			@ace_id 
20 			, @exm_id 
21 			, @lre_id 
22 			, @pes_id 
23 			, @lre_motivoCancelamento 
24 			, @lre_dataAprovacao 
25 			, @lre_dataCancelamento 
26 			, @lre_dataLiberacao 
27 			, @lre_situacao 
28 			, @lre_dataCriacao 
29 			, @lre_dataAlteracao 
30  
31 		)


  • Item 10
  1 WITH    ListaReserva
  2                   AS ( SELECT   lr.ace_id ,
  3                                 lr.exm_id ,
  4                                 ace_titulo ,
  5                                 exm_tombo ,
  6                                 bib_nome ,
  7                                 tor_nome ,
  8                                 COUNT(lre_id) qtd
  9                        FROM     BIB_ListaReserva lr WITH ( NOLOCK )
 10                                 INNER JOIN BIB_Acervo a WITH ( NOLOCK ) ON lr.ace_id = a.ace_id
 11                                 INNER JOIN BIB_Exemplar ex WITH ( NOLOCK ) ON a.ace_id = ex.ace_id
 12                                                               AND ex.exm_id = lr.exm_id
 13                                 INNER JOIN BIB_ExemplarLocalizacao el WITH ( NOLOCK ) ON ex.ace_id = el.ace_id
 14                                                               AND ex.exm_id = el.exm_id
 15                                 INNER JOIN BIB_Biblioteca b WITH ( NOLOCK ) ON el.bib_id = b.bib_id
 16                                 LEFT JOIN BIB_TipoObra ON a.tor_id = BIB_TipoObra.tor_id
 17                        WHERE    ace_situacao <> 3
 18                                 AND ( exm_tombo LIKE '%' + @exm_tombo + '%'
 19                                       OR @exm_tombo IS NULL
 20                                     )
 21                                 AND ( 
 22                 -- 1 : Começa por
 23                                       ( @ace_tipoBusca = 1
 24                                         AND ( @ace_titulo IS NULL
 25                                               OR ace_titulo LIKE @ace_titulo
 26                                               + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
 27                                               
 28                                             )
 29                                       )
 30                                       OR
 31 				
 32 				-- 2 : Contém
 33                                       ( @ace_tipoBusca = 2
 34                                         AND ( @ace_titulo IS NULL
 35                                               OR ace_titulo LIKE '%'
 36                                               + @ace_titulo + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
 37                                               
 38                                             )
 39                                       )
 40                                       OR
 41 				
 42 				-- 3 : Fonética
 43                                       ( @ace_tipoBusca = 3
 44                                         AND ( @ace_titulo IS NULL
 45                                               OR dbo.SoundsLike(ace_titulo) LIKE '%'
 46                                               + dbo.SoundsLike(@ace_titulo)
 47                                               + '%'
 48                                             )
 49                                       )
 50                                     )
 51                                 AND ( @bib_id IS NULL
 52                                       OR el.bib_id = @bib_id
 53                                     )
 54                                 AND ( @data IS NULL
 55                                       OR CONVERT(DATE, lre_dataCriacao) = @data
 56                                     )
 57                                 AND lre_situacao = @lre_situacao
 58                        GROUP BY lr.ace_id ,
 59                                 lr.exm_id ,
 60                                 ace_titulo ,
 61                                 exm_tombo ,
 62                                 bib_nome ,
 63                                 tor_nome
 64                      ),
 65                 AcervosReserva
 66                   AS ( SELECT   MOV.ace_id ,
 67                                 MOV.exm_id ,
 68                                 ace_titulo ,
 69                                 exm_tombo ,
 70                                 bib_nome ,
 71                                 tor_nome ,
 72                                 '1' qtd
 73                        FROM     BIB_Movimentacao MOV WITH ( NOLOCK )
 74                                 INNER JOIN BIB_MovimentacaoWorkFlow MWF WITH ( NOLOCK ) ON MOV.ace_id = MWF.ace_id
 75                                                               AND MOV.exm_id = MWF.exm_id
 76                                                               AND MOV.epr_id = MWF.epr_id
 77                                 INNER JOIN BIB_Acervo ACE WITH ( NOLOCK ) ON MOV.ace_id = ACE.ace_id
 78                                 INNER JOIN BIB_Exemplar EXM WITH ( NOLOCK ) ON ACE.ace_id = EXM.ace_id
 79                                                               AND EXM.exm_id = MOV.exm_id
 80                                 INNER JOIN dbo.BIB_ExemplarLocalizacao EXL
 81                                 WITH ( NOLOCK ) ON MOV.ace_id = EXL.ace_id
 82                                                    AND MOV.exm_id = EXL.exm_id
 83                                 INNER JOIN BIB_Biblioteca BIB WITH ( NOLOCK ) ON BIB.bib_id = EXL.bib_id
 84                                 LEFT JOIN BIB_TipoObra TOR ON ACE.tor_id = TOR.tor_id
 85                        WHERE    MOV.epr_id = ( SELECT   MAX(epr_id)
 86                                                FROM     BIB_MovimentacaoWorkFlow MWF2
 87                                                         WITH ( NOLOCK )
 88                                                WHERE    MWF.ace_id = MWF2.ace_id
 89                                                         AND MWF.exm_id = MWF2.exm_id
 90                                              )
 91                                 AND MWF.epw_id = ( SELECT   MAX(epw_id)
 92                                                    FROM     BIB_MovimentacaoWorkFlow MWF2
 93                                                             WITH ( NOLOCK )
 94                                                    WHERE    MWF.ace_id = MWF2.ace_id
 95                                                             AND MWF.exm_id = MWF2.exm_id
 96                                                             AND MWF.epr_id = MWF2.epr_id
 97                                                  )
 98                                 AND MWF.epw_acao = 1 --Reservado
 99                                 AND ace_situacao <> 3
100                                 AND ( exm_tombo = @exm_tombo
101                                       OR @exm_tombo IS NULL
102                                     )
103                                 AND ( 
104                 -- 1 : Começa por
105                                       ( @ace_tipoBusca = 1
106                                         AND ( @ace_titulo IS NULL
107                                               OR ace_titulo LIKE @ace_titulo
108                                               + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
109                                               
110                                             )
111                                       )
112                                       OR
113 				
114 				-- 2 : Contém
115                                       ( @ace_tipoBusca = 2
116                                         AND ( @ace_titulo IS NULL
117                                               OR ace_titulo LIKE '%'
118                                               + @ace_titulo + '%' COLLATE Latin1_General_CI_AI --ignora acentuacao
119                                               
120                                             )
121                                       )
122                                       OR
123 				
124 				-- 3 : Fonética
125                                       ( @ace_tipoBusca = 3
126                                         AND ( @ace_titulo IS NULL
127                                               OR dbo.SoundsLike(ace_titulo) LIKE '%'
128                                               + dbo.SoundsLike(@ace_titulo)
129                                               + '%'
130                                             )
131                                       )
132                                     )
133                                 AND ( @bib_id IS NULL
134                                       OR BIB.bib_id = @bib_id
135                                     )
136                                 AND ( @data IS NULL
137                                       OR CONVERT(DATE, MOV.epr_dataReserva) = @data
138                                     )
139                                 AND @lre_situacao = 2 --Reserva aprovada
140                        GROUP BY MOV.ace_id ,
141                                 MOV.exm_id ,
142                                 ace_titulo ,
143                                 exm_tombo ,
144                                 bib_nome ,
145                                 tor_nome
146                      ),
147                 Total
148                   AS ( SELECT   ace_id ,
149                                 exm_id ,
150                                 ace_titulo ,
151                                 exm_tombo ,
152                                 bib_nome ,
153                                 ( qtd + ( SELECT    COUNT(ace_id)
154                                           FROM      AcervosReserva AR
155                                           WHERE     AR.ace_id = LR.ace_id
156                                                     AND AR.exm_id = LR.exm_id
157                                         ) ) AS qtd ,
158                                 tor_nome
159                        FROM     ListaReserva LR
160                        UNION
161                        SELECT   ace_id ,
162                                 exm_id ,
163                                 ace_titulo ,
164                                 exm_tombo ,
165                                 bib_nome ,
166                                 ( SELECT    COUNT(ace_id)
167                                   FROM      AcervosReserva AR
168                                   WHERE     AR.ace_id = AR2.ace_id
169                                             AND AR.exm_id = AR2.exm_id
170                                 ) qtd ,
171                                 tor_nome
172                        FROM     AcervosReserva AR2
173                      )
174             SELECT  ace_id ,
175                     exm_id ,
176                     ace_titulo ,
177                     exm_tombo ,
178                     bib_nome ,
179                     MAX(qtd) AS qtd ,
180                     tor_nome
181             FROM    Total
182             GROUP BY ace_id ,
183                     exm_id ,
184                     ace_titulo ,
185                     exm_tombo ,
186                     bib_nome ,
187                     tor_nome

Cenários de uso

Cenário de uso #1 - Login
Ação realizada Think Time (segundos)
1 - Acessar tela de login 3
1 - Realizar login 7
1 - Selecionar sistema Transporte Escolar 5


Cenário de uso #2 - Cadastro de título (Fluxo 1)
Ação realizada Think Time (segundos)
2 - Acessar tela de consulta de título 4
2 - Clicar em "Incluir título" 3
2 - Preencher campo "Autor" 4
2 - Preencher campo "Grupo de assunto" 3
2 - Preencher campo "Assunto" 3
2 - Preencher campo "Gênero do assunto" 3
2 - Preencher campo "Editora" 3
2 - Marcar checkbox "Não possui ISBN" 2
2 - Salvar cadastro 7
2 - Acessar tela de consulta de exemplar 4
2 - Clicar em "Incluir exemplar" 3
2 - Pesquisar título 6
2 - Selecionar título 4
2 - Preencher campo "Qtde. de tombo" 4
2 - Salvar cadastro 7
2 - Logout 5


Cenário de uso #3 - Cadastro de título (Fluxo 2)
Ação realizada Think Time (segundos)
3 - Acessar tela de consulta de título 4
3 - Clicar em "Incluir título" 3
3 - Preencher "Tipo" 3
3 - Preencher campo "Autor" 4
3 - Preencher campo "Grupo de assunto" 3
3 - Preencher campo "Assunto" 3
3 - Preencher campo "Gênero do assunto" 3
3 - Preencher campo "Editora" 3
3 - Marcar checkbox "Não possui ISBN" 2
3 - Salvar cadastro e gerar exemplar 7
3 - Preencher campo "Qtde. de tombo" 4
3 - Salvar cadastro 7
3 - Logout 5


Cenário de uso #4 - Cadastro de exemplar
Ação realizada Think Time (segundos)
4 - Acessar tela de consulta de exemplares 3
4 - Clicar em "Incluir exemplares" 3
4 - Pesquisar título 5
4 - Selecionar título 3
4 - Preencher campo "Qtde. de tombos" 4
4 - Salvar cadastro 7
4 - Logout 5


Cenário de uso #5 - Cadastro de memória documental
Ação realizada Think Time (segundos)
5 - Acessar tela de consulta de memória documental 4
5 - Clicar em "Incluir memória técnica documental" 4
5 - Preencher campo "Tipo de acervo" 5
5 - Preencher campo "Idioma" 5
5 - Preencher campo "Autor" 5
5 - Preencher campo "Tipo de anexo" 5
5 - Salvar cadastro 7
5 - Logout 5


Cenário de uso #6 - Cadastro de leitor munícipe
Ação realizada Think Time (segundos)
6 - Acessar tela de consulta de leitor 4
6 - Clicar em "Incluir leitor" 4
6 - Preencher campo "Categoria de leitores" 3
6 - Preencher campo "CPF" 10
6 - Preencher campo "CEP" 9
6 - Salvar cadastro 12
6 - Logout 5


Cenário de uso #7 - Realizar empréstimo
Ação realizada Think Time (segundos)
7 - Acessar tela de consulta de leitores 4
7 - Pesquisar leitor 6
7 - Selecionar leitor 3
7 - Preencher campo "Biblioteca" 8
7 - Clicar no ícone de pesquisa de título 3
7 - Pesquisar título 15
7 - Selecionar título 4
7 - Clicar em "Confirmar" 3
7 - Salvar movimentação 10
7 - Logout 5


Cenário de uso #8 - Realizar devolução
Ação realizada Think Time (segundos)
8 - Acessar tela de consulta de devolução 4
8 - Pesquisar leitor 8
8 - Selecionar leitor 4
8 - Preencher campo "Biblioteca" 8
8 - Marcar checkbox "Selecionar todas as devoluções" 3
8 - Salvar movimentação 10
8 - Logout 5


Cenário de uso #9 - Realizar renovação
Ação realizada Think Time (segundos)
9 - Acessar tela de renovação 4
9 - Pesquisar leitor 8
9 - Selecionar leitor 5
9 - Preencher campo "Biblioteca" 8
9 - Selecionar opção "Renovação" 4
9 - Salvar movimentação 10
9 - Logout 5


Cenário de uso #10 - Realizar reserva
Ação realizada Think Time (segundos)
10 - Acessar tela de reserva 4
10 - Pesquisar leitor 8
10 - Selecionar leitor 5
10 - Preencher campo "Biblioteca" 8
10 - Clicar no ícone de pesquisa 4
10 - Pesquisar exemplar 12
10 - Selecionar exemplar 5
10 - Confirmar seleção 3
10 - Salvar reserva 10
10 - Logout 5


Cenário de uso #11 - Consulta externa
Ação realizada Think Time (segundos)
11 - Acessar tela de consulta externa 4
11 - Pesquisar título 10
11 - Logout 5

Resultado dos testes

Nesta seção serão apresentados os resultados obtidos da execução dos testes.

  • Porcentagem de tempo do processador
Descrição: Mede a saturação do processador e mostra a quantidade de tempo despendida para processar as threads por todas as CPUs.
Limite recomendado: Abaixo de 75 %.
Análise: A aplicação demonstrou desempenho esperado até atingir 550 usuários simultâneos, onde apenas o servidor WEB01 sofre um pico e os demais servidores não utilizam tanto processamento. Este comportamento esta relacionado a quantidade de erros gerados pela aplicação.
2016-07-19 Biblioteca TempoProcessador.png


  • Porcentagem de memória utilizada
Descrição: Indica a porcentagem de memória utilizada para uso dos processos.
Limite recomendado: Abaixo de 75 %.
Análise: Em dois momentos o WEB01 sofreu uma queda na utilização da memória. Os demais servidores mantiveram-se estáveis quanto a utilização de memória.
2016-07-19 Biblioteca MemoriaUtilizada.png


  • Kbytes totais pela interface de rede
Descrição: Indica quantos Kbytes foram enviados e recebidos a cada segundo pela interface de rede.
Limite recomendado: Menor que 5 Mbytes para uma rede de 100Mbps, menor que 50 Mbytes para uma rede de 1000 Mbps. (Quanto menor melhor).
Análise: Foi observado que quanto maior a quantidade de erros de dll salvas menor a quantidade de Kbytes enviados e recebidos.
2016-07-19 Biblioteca InterfaceDeRede.png


  • Tempo médio de resposta das requisições
Descrição: Indica o tempo médio de resposta das requisições.
Limite recomendado: 5 segundos.
Análise: A partir de 300 usuários simultâneos até 400 usuários ocorre uma alta no tempo de resposta da aplicação, tendo um pico com 350 usuários simultâneos.
2016-07-19 Biblioteca TempoDeResposta.png
2016-07-19 Bibliote TempoDeResposta Leg1.png
2016-07-19 Bibliote TempoDeResposta Leg2.png


  • Tempo de vazão
Descrição: Indica a quantidade total de request por segundo.
Limite recomendado: Quanto maior melhor.
Análise: A aplicação teve apenas um desvio quando utilizada por 350 usuários.
2016-07-19 Biblioteca Vazao.png


  • Porcentagem de erro
Descrição: Indica a porcentagem de erro.
Limite recomendado: Quanto menor melhor.
Análise: A aplicação possui erros funcionais que não retornam mensagem na tela para o usuário, os mesmos são apenas salvos em logs de erros.
2016-07-19 Biblioteca Erros.png