Função responsável por construir uma interface padrão de processamento, podendo ou não possuir uma barra de progresso (régua), podendo ser chamada com ou sem interface (nenhuma exibição caso chamada sem interface).
A partir da lib 20240408 quando executada pelo Scheduler e tendo o dicionário de lib atualizado, o usuário logado receberá notificações de progresso do processamento automático.
Para maiores informações consulte EventViewer - Eventos de Progresso
Processa( bAction, cTitle , cMsg , lAbort )
Função principal que inicia o processamento, quando executado com interface exibe uma tela de acompanhamento do processamento.
Nome | Tipo | Descrição | Obrigatório | Default |
bAction | Bloco de código | Bloco de código da rotina de processamento | X | |
cTitle | Caractere | Título da janela de processamento | Aguarde | |
cMsg | Caractere | Texto da rotina de processamento | Processando... | |
lAbort | Lógico | Indica se a rotina pode ser interrompida | .T. |
Funções Complementares
ProcRegua
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)
Nome | Tipo | Descrição | Obrigatório | Default |
nTot | numérico | Indica a quantidade de passos para conclusão do processo | 0 | |
nPercNotif | numérico | Quando executado em scheduler, 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 |
Importante
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 Scheduler), a não definição faz com que os eventos não sejam emitidos.
IncProc
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 Scheduler é determinante para emissão dos eventos ao atingir o percentual de gatilho.
Sintaxe: IncProc(cMsg)
Nome | Tipo | Descrição | Obrigatório | Default |
---|---|---|---|---|
cMsg | Character | Mensagem que será exibida no dialog Exemplo: "Processando pedido 220984" | "" |
A quantidade de chamadas da função IncProc deve corresponder exatamente ao valor definido no 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).
Importante
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.
Sintaxe: ErrorProcessa(cDetail)
Nome | Tipo | Descrição | Obrigatório | Default |
---|---|---|---|---|
cDetail | Character | Mensagem que será exibida no detalhe da notificação do Event Viewer | X | "" |
#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