Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Bloco de código
languagecpp
themeEclipse
titleExemplo 1 - IPC (Execute com parâmetros quantas vezes precisar)
linenumberstrue
collapsefalse
#include 'protheus.ch' 
 
User Function start_jobs() 
 
  ManualJob("MYIPC", "TOP", /*
 * uso:
 *      Para criar o servico chame:             u_startIPC ( uma vez so )
 *      Para conectar/rodar as execucoes chame: u_connIPC  ( quantas vezes quiser usar o servico )
 */

Static cSEMAFORO := "MYIPC"  

/*
 * Cria o ManualJob
 */
Function u_startIPC()
  Local cEnv := GetEnvServer()

  ConOut("Thread: " + cValToChar(ThreadId()) + " ManualJob: " + cSEMAFORO) 
  ManualJob(cSEMAFORO, cEnv, "IPC", "u_RJobStart", "u_RJobConn", "u_RJobExit", "", 1000, 12, 155, 21, 31)  
 

Return .T.

/*
 * Funcao que sera chamada na ativacao de cada thread do Job
 */
User Function u_RJobStart()
   ConOut("Thread iniciando:   " + cValToChar(ThreadId()) +  conout" Data atual " + cValToChar(date()) + " " + cValToChar(time()) + " RJobStart" + ProcName() + " -> " + "MYIPC"cSEMAFORO)
Return .T.

/*
 * Funcao que sera chamada a cada uso
 */
User Function u_RJobConn(cVal)
   ConOut("Thread   conouttratando:    " + cValToChar(ThreadId()) + " Data atual " + cValToChar(date()) + " " + cValToChar(time()) + " " RJobConn+ ProcName() + " -> " + cSEMAFORO + " Parametro: '" + "MYIPCcValToChar(cVal) + "'")
Return .T.

/*
 * Funcao que sera chamada na finalizacao de cada thread do Job
 */
User Function u_RJobExit()
  ConOut("Thread finalizando: " + cValToChar(ThreadId()) + " Data atual  conout" + cValToChar(date()) + " " + cValToChar(time()) + " RJobExit " + ProcName() + " -> " + cSEMAFORO)
Return .T.

/*
 * Executa o ManualJob
 * Obs. IPCGo - pode ser invodado de qualquer programa, desde que passe o mesmo nome de semaforo (cSEMAFORO)("MYIPC")
 */
Function u_connIPC()
  Local cPar := "Thread chamando:    " + cValToChar(ThreadId()) + " Data atual " + cValToChar(date()) + " " + cValToChar(time())
  Local lRet := .F.
  /*
   * Executa o ManualJob, podendo passar parametros
   */
  ConOut("Estou passando o servico: '" + cPar + "'")
  lRet := IPCGo(cSEMAFORO, cPar)
  ConOut("Estou passou   o servico: '" + cPar + "' " + " retorno: " + cValToChar(lRet) + IIf(lRet, " passado com sucesso", " nao conseguiu passar"))

Return .T.

Bloco de código
languagecpp
themeEclipse
titleExemplo 2 - Executa um vez só (RunOnce)
linenumberstrue
/*
 * uso:
 *      Para criar o servico chame: u_start_oc ( sera executado somente a funcao de "connect" uma vez para cada thread minima na ativacao )
 */

Static cRunOnce := "RunOnceJob"  

/*
 * Cria o ManualJob
 */
Function u_start_oc()
  Local cEnv := GetEnvServer()

  ConOut("Thread: " + cValToChar(ThreadId()) + " ManualJob: " + cRunOnce) 
  ManualJob(cRunOnce, cEnv, "", "", "u_ConnOne", "", "", 1000, 3, 5, 1, 1)  
 
Return .T.

/*
 * Funcao que sera chamada uma vez
 */
Function u_ConnOne()
   ConOut("Thread executando: " + cValToChar(ThreadId()) + " Data atual " + cValToChar(date()) + " " + cValToChar(time()) + " " + ProcName() + " -> " + cRunOnce)
Return .T.
 

Referências

Jobs

RefreshRate

CanRunJobs

Seção OnStart

Abrangência

TOTVS Application Server a partir do release 7.00131227A