Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Informações

A partir da lib 20240408 quando executada pelo Scheduller Scheduler e tendo o dicionário de lib atualizado, o usuário logado receberá notificações de progresso do processamento automaticoautomático.
Para maiores informações consulte EventViewer - Eventos de Progresso

...

NomeTipoDescriçãoObrigatórioDefault
bActionBloco de códigoBloco de código da rotina de processamentoX
cTitleCaracter

Caractere

Titulo Título da janela de processamento
Aguarde
cMsgCaracter

Caractere

Texto da rotina de processamento
Processando...
lAbort LógicoIndica se a rotina pode ser interrompida
.T.

...

Função responsável por determinar o tamanho do processamento, o valor aqui definido deverá corresponder exatamente a quantidade de chamadas da função IncProc para que o progresso seja corretamente exibido.

Sintaxe: ProcRegua(nTot, nPercNotif)

NomeTipoDescriçãoObrigatórioDefault
nTotnuméricoIndica a quantidade de passos para conclusão do processo
0
nPercNotifnuméricoQuando executado em schedullerscheduler, define o gatilho de % para emissão dos Eventos de Progresso do EventViewer.
Exemplo.: Se definido 25: serão emitidas notificações a cada 25% de progresso.

25
Informações
titleImportante

A definição do ProcRegua (e consequentemente implementação do IncProc) é obrigatório para emissão dos Eventos de Progresso no EventViewer (quando executado via SchedullerScheduler), a não definição faz com que os eventos não sejam emitidos.

...

Função pela qual deverá ser indicado que um novo passo do processamento foi realizado, quando executado com interface é responsável por promover a evolução da barra de progresso, quando executado via Scheduller Scheduler é determinante para emissão dos eventos ao atingir o percentual de gatilho.

Sintaxe: IncProc(cMsg)

NomeTipoDescriçãoObrigatórioDefault
cMsgCharacterMensagem que será exibida no dialog
Exemplo: "Processando pedido 220984"

""
Informações

A quantidade de chamadas da função IncProc deve corresponder exatamente ao valor definido no parametro parâmetro nTot passado na função ProcRegua.

ErrorProcessa

Função que emite uma notificação de erro (Event Viewer), permitindo que os desenvolvedores possam sinalizar ao usuário um evento de erro controlado (ex.: sinalizar que uma validação especifica não permite a execução da rotina em segundo plano). 

Informações
titleImportante

Uma vez chamada a função e emitido o evento, nenhuma nova notificação de progresso é emitida para o processo vigente, ficando a cargo do desenvolvedor implementar o encerramento do processo.


Image Added

Sintaxe: ErrorProcessa(cDetail)

NomeTipoDescriçãoObrigatórioDefault
cDetailCharacterMensagem que será exibida no detalhe da notificação do Event ViewerX""


Image Added

Bloco de código
titleExemplo
#Include "Protheus.ch"
#Include "TopConn.ch"

/*/{Protheus.doc} incproctst
Função de exemplo de barras de processamento em AdvPL
@author Bruno Pirolo
@since 28/10/2018
@version 1.0
@type function
/*/  
Function incproctst(aParam)
    Local aArea         as array
    Private oNewProess as object

    aArea := GetArea()

    Processa({|| fExemplo5()}, "Filtrando...", , , , )

    RestArea(aArea)
    Conout("*********incproctst finalizada pelo scheduller***********")
Return
   
/*-----------------------------------------------------------*
 | Func.: fExemplo5                                          |
 | Desc.: Exemplo utilizando Processa                        |
 *-----------------------------------------------------------*/
Static Function fExemplo5(cUserId)
    Local aArea     as array
    Local nAtual    as numeric
    Local nTotal    as numeric
    Local cQryAux   as character
    
    aArea  := GetArea()
    nAtual := 0
    nTotal := 0
    
    //Monta a consulta de grupo de produtos
    cQryAux := " SELECT * FROM "+RetSqlName("SB1") + "  SB1 "+ CRLF
    cQryAux += " WHERE  SB1.D_E_L_E_T_ = ' ' "
       
    //Executa a consulta
    TCQuery cQryAux New Alias "QRY_AUX"
       
    //Conta quantos registros existem, e seta no tamanho da régua
    Count To nTotal
    ProcRegua(nTotal)
       
    //Percorre todos os registros da query
    QRY_AUX->(DbGoTop())
    While ! QRY_AUX->(EoF())
           
        //Incrementa a mensagem na régua
        nAtual++
        IncProc("Analisando registro " + cValToChar(nAtual) + " de " + cValToChar(nTotal) + "...")

        QRY_AUX->(DbSkip())
    EndDo
    QRY_AUX->(DbCloseArea())
    RestArea(aArea)
Return


...