Páginas

segunda-feira, 13 de junho de 2016

Como usar a função StartJob()

As vezes é comum precisarmos executar uma rotina dentro de uma função mas sem interromper o processamento desta função aguardando até que a rotina termine. Para isto existe a função StartJob. Está função permite iniciar uma Thread, ou seja, uma nova conexão no monitor, sem interromper a função que à chamou.


Sintaxe da função StartJob:

StartJob( NomeDaRotina, Environment, FinalizaRotina, Empresa, Filial )

Esta sintaxe é o que o TOTVS disponibiliza.

Segue abaixo um exemplo:

// Funcao principal que iniciará um novo Job.

User Function FUAtualizaDados()
   Local _aParametros := {}
   _aParametros := {"01","02","000001","04"}
   // Inicia o Job
   StartJob("U_FUTesteJob()",GetEnvServer(),.F.,_aParametros)
   /* A Função GetEnvServer() retorna o environment atual, mas posso definir outro. */
Return Nil


// Função inicializada pela StartJob().

User Function FUTesteJob()
   Local _cEmpresa := paramixb[1] // Usar o paramixb
   Local _cFilial  := paramixb[2]
   Local _cFornece := paramixb[3]
   Local _cLoja    := paramixb[4]
   /* A maioria das funcoes que sao chamadas de Job devem usar o prepare environment */
   prepare environment _cEmpresa Filial _cFilial Tables "SA2"
   DBSelectArea("SA2")
   SA2->(DBSetOrder(1))
   if SA2->(DBSeek(xFilial("SA2")+_cFornece+_cLoja))
      RecLock("SA2",.F.)
      SA2->A2_TESTE := "TESTANDO FUNCAO JOB"
      SA2->(MsUnLock())
   endif
Return Nil

Obs. Ao iniciar um Job (uma nova Thread) voce estará consumindo uma licença do server.


Nenhum comentário:

Postar um comentário