Durante los últimos años esta fue la estructura que más evolucionó en la Línea Microsiga Protheus. Por ahora, nos concentraremos únicamente en el último estándar.
Los programas de procesamiento tienen una estructura simple, formada por tres elementos:
En el Setup se muestra la interfaz estándar suministrada por la función FWGridProcess. Le corresponde al desarrollador completar correctamente los parámetros de la rutina.
El montaje de esta interfaz se realiza con base en el diccionario de datos y puede variar según sea el caso. La presentación de los parámetros del diccionario de datos – SX6 y las tablas estándares – SX5 están vinculados al registro de la rutina en el TOTVSPARAM, responsable por la sincronización de la rutinas y los parámetros involucrados.
Es posible definir hasta cinco reglas de procesamiento, sin embargo, se recomienda no utilizar más de dos reglas.
En la sección de procesamiento, función DoTask(), se muestra el flujo de control de la rutina, la actualización de las reglas y el control de anulación del procesamiento.
La sección de programación en agenda, función SchedDef(), contiene los datos que se informan al Schedule de la Línea Microsiga Protheus, para la correcta programación en agenda de la rutina de procesamiento.
// ProcessingRoutine.prw
#INCLUDE "TOTVS.CH"
Function ProcessingRoutine()
oGrid:=FWGridProcess():New( "MATA330", "prueba", "prueba del procesamiento", {|lEnd| DoTask(oGrid,@lEnd)}, "MTA330", "u_testeba2")
oGrid:SetMeters(2)
oGrid:SetThreadGrid(5)
oGrid:Activate()
If oGrid:IsFinished()
Alert("Final")
Else
Alert("Final con error.")
EndIf
Return
Static Function DoTask(oGrid,lEnd)
Local nX := 0
Local nY := 0
oGrid:SetMaxMeter(4, 1, "prueba1")
fuera nX := 1 to 4
oGrid:SetMaxMeter(10, 2, "prueba2")
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] - Pregunta
// aReturn[3] - Alias
// aReturn[4] - Array de orden
// aReturn[5] - Título
Return { "R", "PARAMDEF", "SA1", {"Código", "Nombre"}, "Título" }