Durante os anos esta foi à estrutura que mais evoluiu na Linha Microsiga Protheus, no momento focaremos apenas no ultimo padrão.

Os programas de processamento tem uma estrutura simples, formada por três elementos, a saber:

  • Setup;
  • Processamento;
  • Agendamento.


No Setup demonstra-se a interface padrão fornecida pela função FWGridProcess. Cabe ao desenvolvedor preencher corretamente os parâmetros da rotina.

A montagem desta interface é feita com base no dicionário de dados e pode variar conforme o caso.

É possível definir até cinco réguas de processamento, porém recomenda-se não usar mais do que duas réguas.

Na seção processamento, função DoTask(), apresenta-se o fluxo de controle da rotina, a atualização das réguas e o controle de cancelamento do processamento.

A seção de agendamento, função SchedDef(), contém os dados que são informados ao Schedule da Linha Microsiga Protheus para o correto agendamento da rotina de processamento.


// ProcessingRoutine.prw

#INCLUDE "TOTVS.CH"


Function ProcessingRoutine()

       oGrid:=FWGridProcess():New(   "MATA330",  "teste", "teste do processamento", {|lEnd| DoTask(oGrid,@lEnd)}, "MTA330", "u_testeba2")

       oGrid:SetMeters(2)

       oGrid:SetThreadGrid(5)

       oGrid:Activate()

      

       If oGrid:IsFinished()

             Alert("Fim.")

       Else

             Alert("Fim com erro.")

       EndIf

Return

      

Static Function DoTask(oGrid,lEnd)

       Local nX    := 0

       Local nY    := 0

        

       oGrid:SetMaxMeter(4, 1, "teste1")

      

       For nX := 1 To 4

             oGrid:SetMaxMeter(10, 2, "teste2")

             For nY := 1 To 10

                    If !oGrid:CallExecute("callexecute is load", If(nX==5 .And. nY==10, 0, 1))

                           lEnd := .T.

                    EndIf

                    oGrid:SetIncMeter(2)

                    If lEnd

                           Exit

                    EndIf

             Next nY

             If lEnd

                    Exit

             EndIf

             oGrid:SetIncMeter(1)

       Next nX

Return


Static Function SchedDef()

       // aReturn[1] - Tipo

       // aReturn[2] - Pergunte

       // aReturn[3] - Alias

       // aReturn[4] - Array de ordem

       // aReturn[5] - Titulo

Return { "R", "PARAMDEF", "SA1", {"Codigo", "Nome"}, "Título" }


  • Sem rótulos