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" }