Esta classe constrói uma interface padrão de processamento, seja ele em grid ou não.
Entende-se por processamento em grid o processamento que pode ser divido de tal forma que as partes unitárias não tenham dependências entre si. Por exemplo
a um processamento realiza uma seleção de registros em uma tabela de domínio e para cada conjunto de registros desta tabela um transação pode ser disparada.
Método construtor da classe.
FWGridProcess(): New (<cFunName>,<cTitle>,<cDescription>,<bProcess>,<cPerg>,<cGrid>,<lSaveLog> ) -->
Nome | Tipo | Descrição | Obrigatório | Referencia |
---|---|---|---|---|
cFunName | Caracter | Nome da rotina de menu de processamento | X | |
cTitle | Caracter | Titulo da rotina de menu | X | |
cDescription | Caracter | Descrição completa da rotina | X | |
bProcess | Bloco | Bloco de código de processamento. O bloco recebe a variavel que informa que a rotina foi cancelada | X | |
cPerg | Caracter | Nome do grupo de perguntas do dicionário de dados | ||
cGrid | Caracter | Nome da função que será executada caso o processamento permita processamento em grid | ||
lSaveLog | Lógico | Indica se permite a gravação de Log sempre que chamar o método SaveLog() |
Método de ativação da classe. Quando a classe é ativada a interface de
configuração é ativada.
Este método deve ser utilizado para parametrizar a classe.
FWGridProcess():Activate (oDlg) -->
Parâmetros
Nome | Tipo | Descrição | Obrigatório | Referencia |
---|---|---|---|---|
oDlg | Objeto | Container da interface gráfica | X |
Método de desativação da classe. Quando a classe é desativada, os dados
de configuração são perdidos e devem ser refeitos.
Este método deve ser utilizado para reparametrizar a classe.
FWGridProcess() :DeActivate () -->
Este método informa a classe a quantidade de réguas que será necessária no processamento da rotina.
FWGridProcess() :SetMeters (<nQtde>) -->
Nome | Tipo | Descrição | Obrigatório | Referencia |
---|---|---|---|---|
nQtde | Numérico | Informe a quantidade de réguas de processamento que a rotina necessitada | X |
Return nQtde
Este método informa a classe a quantidade máxima de réguas que será necessários no processamento da rotina.
Nome | Tipo | Descrição | Obrigatório | Referencia |
---|---|---|---|---|
nMax | Numérico | Informe a quantidade máxima de interações do meter | X | |
nMeter | Numérico | Informe o numero de referência do meter | ||
cMsg | Caracter | Informe a mensagem de referência do meter |
Este método informa a classe a quantidade de réguas que será necessário no processamento da rotina.
FWGridProcess() :SetIncMeter (<nMeter>,<cMsg>) -->
Nome | Tipo | Descrição | Obrigatório | Referencia |
---|---|---|---|---|
nMeter | Numérico | Informe o numero de referência do meter | ||
cMsg | Caracter | Informe a mensagem de referência do meter |
Define bloco de código a ser executado no termino do Execute
FWGridProcess() :SetAfterExecute (<bParam>) -->
Nome | Tipo | Descrição | Obrigatório | Referencia |
---|---|---|---|---|
bParam | Bloco | Bloco de código a ser executado no termino do execute | X |
Este método persiste informações de execução da rotina no log de processamento ( SXU ).
FWGridProcess() :SaveLog (<cMsg>) -->
Nome | Tipo | Descrição | Obrigatório | Referencia |
---|---|---|---|---|
cMsg | Caracter | Informe a mensagem que deverá ser gravada no log |
Retorna a ultima mensagem de log
FWGridProcess() :GetLastLog() -->
Return cLog
Inibe a widget de parametrização da rotina.
FWGridProcess() :SetNoParam() -->
Este método configura o número máximo de threads que a rotina permitirá que o usuário configure.
FWGridProcess() :SetMaxThreadGrid(<nMax>) -->
Nome | Tipo | Descrição | Obrigatório | Referencia |
---|---|---|---|---|
nMax | Numérico | Numero de threads | X |
Este método configura o número de threads que a rotina terá disponível
FWGridProcess() :SetThreadGrid(<nThread>) -->
Nome | Tipo | Descrição | Obrigatório | Referencia |
---|---|---|---|---|
nThread | Numérico | Numero de threads | X |
Este método inicia e controla o processamento da rotina de grid definida. Somente deve ser chamada se o Grid estiver configurado
FWGridProcess() :CallExecute(<xParm0>,<xParm1>,<xParm2>,<xParm3>,<xParm4>,<xParm5>,<xParm6>,<xParm7>,<xParm8>,<xParm9>) -->
Nome | Tipo | Descrição | Obrigatório | Referencia |
---|---|---|---|---|
xParm0 | Numérico, Caracter, Array, Data | Parâmetro que será repassada para a rotina de grid | ||
xParm1 | Numérico, Caracter, Array, Data | Parâmetro que será repassada para a rotina de grid | ||
xParm2 | Numérico, Caracter, Array, Data | Parâmetro que será repassada para a rotina de grid | ||
xParm3 | Numérico, Caracter, Array, Data | Parâmetro que será repassada para a rotina de grid | ||
xParm4 | Numérico, Caracter, Array, Data | Parâmetro que será repassada para a rotina de grid | ||
xParm5 | Numérico, Caracter, Array, Data | Parâmetro que será repassada para a rotina de grid | ||
xParm6 | Numérico, Caracter, Array, Data | Parâmetro que será repassada para a rotina de grid | ||
xParm7 | Numérico, Caracter, Array, Data | Parâmetro que será repassada para a rotina de grid | ||
xParm8 | Numérico, Caracter, Array, Data | Parâmetro que será repassada para a rotina de grid | ||
xParm9 | Numérico, Caracter, Array, Data | Parâmetro que será repassada para a rotina de grid |
Retrun lEnd
Indica que a rotina foi interrompida pelo usuário
Este método inicia e controla o processamento das rotinas especificadas
FWGridProcess() :Execute() -->
Este método interrompe a execução da rotina a qualquer momento depois de iniciada pelo Método Execute.
FWGridProcess() :StopExecute() -->
Este método indica que a rotina de processamento esta terminada.
FWGridProcess() :IsFinished() -->
Return lRetorno
Indica que o processamento foi terminado
Este método informa a classe de processamento se a rotina pode ou não ser interrompida durante a execução
FWGridProcess() :SetAbort(<lAbort>) -->
Nome | Tipo | Descrição | Obrigatório | Referencia |
---|---|---|---|---|
lAbort | Lógico | Informe um valor lógico para indicar se a rotina pode ser abortada | X |
Return lAbort
User Function testeba() RpcSetEnv("99","01") __cInterNet := Nil oGrid:=FWGridProcess():New("MATA330","teste","teste do processamento",{|lEnd| u_testeba1(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 User Function Testeba1(oGrid,lEnd) Local nX,nY 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",Iif(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 //Exemplo de uso de sem Grid User Function Testebc2(oGrid,lEnd) Local nX,nY oGrid:SetMaxMeter(4,1,"teste1") For nX := 1 To 4 oGrid:SetMaxMeter(10,2,"teste2") For nY := 1 To 10 oGrid:SetIncMeter(2) If lEnd Exit EndIf Sleep(1000) Next nY If lEnd Exit EndIf oGrid:SetIncMeter(1) Next nX Return User Function Testeba2(cParm,lErro) Sleep(10000) Return(.T.)