Árvore de páginas

Função que permite a execução de Jobs com a execução 'N' threads.

Esta função tem o mesmo comportamento e a mesma funcionalidade que os Jobs definidos no "ini" na seção OnStart.

Sintaxe

ManualJob ( < cJobName >, < cEnv >, < cJobType >, < cOnStart >, < cOnConnect >, < cOnExit >, < cSSKey >, < nInactive >, < nMin >, < nMax >, < nMinFree >, < nIncr >, < nWaitTime > )

Parâmetros

Nome

Tipo

Descrição

Obrigatório

Referência

Default

cJobName

caractere

Indica o nome do Job que será executado.
Obs. o nome não pode conter ',' (vírgula)

X



cEnv

caractere

Indica o nome do ambiente em que os Job será executado.

X



cJobType

caractere

Indica o tipo do Job.

Valores:

WEB, WEBEX, IPC, TCP, MDI e "" (vazio/nenhum definido)

X



cOnStartcaractere

Função executada uma vez na inicialização da Thread.

Obs. pode ser usada na preparação de ambiente da thread

X



cOnConnectcaractere

Função executada toda vez que a Thread eé chamada.

X



cOnExitcaractereFunção executada uma vez na finalização da Thread.

X



cSSKeycaractere

Identificador da sessão (SessionKey)

Obs. Usado para cJobType (IPC ou MDI)

X



nInactivenúmeroTempo de inatividade das threads do Job (segundos)

3600
nMinnúmeroNúmero mínimo de threads do Job

1
nMaxnúmeroNúmero máximo de threads do Job

1
nMinFreenúmeroNúmero mínimo de threads livres do Job

1
nIncrnúmeroNúmero de threads incrementadas/acrescidas no Job quando o minimo livre (nMinFree) for atingido

1
nWaitTimenúmero

Timeout de espera da thread

Obs. Valor máximo é 10000, se for maior que ele será ajustado para o máximo.



5000

Obs. Se o “cJobType” for vazio ou for inválido, será considerado como Job de Start e executará a função “cOnConnect”.
Se o “cJobType” for “MDI”, executará a função “cOnStart” e utilizará a informação de “cSSKey

Retorno

Não há retorno


Exemplos

Exemplo 1 - IPC (Execute com parâmetros quantas vezes precisar)
/*
 * 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, 2, 5, 1, 1)  
 
Return .T.

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

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

/*
 * Funcao que sera chamada na finalizacao de cada thread do Job
 */
Function u_RJobExit()
  ConOut("Thread finalizando: " + cValToChar(ThreadId()) + " Data atual " + cValToChar(date()) + " " + cValToChar(time()) + " " + 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.

Exemplo 2 - Executa um vez só (RunOnce)
/*
 * 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

  • Sem rótulos