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. | 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 | ||
cOnStart | caractere | Função executada uma vez na inicialização da Thread. Obs. pode ser usada na preparação de ambiente da thread | X | ||
cOnConnect | caractere | Função executada toda vez que a Thread eé chamada. | X | ||
cOnExit | caractere | Função executada uma vez na finalização da Thread. | X | ||
cSSKey | caractere | Identificador da sessão (SessionKey) Obs. Usado para cJobType (IPC ou MDI) | X | ||
nInactive | número | Tempo de inatividade das threads do Job (segundos) | 3600 | ||
nMin | número | Número mínimo de threads do Job | 1 | ||
nMax | número | Número máximo de threads do Job | 1 | ||
nMinFree | número | Número mínimo de threads livres do Job | 1 | ||
nIncr | número | Número de threads incrementadas/acrescidas no Job quando o minimo livre (nMinFree) for atingido | 1 | ||
nWaitTime | nú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
/* * 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.
/* * 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
Abrangência
TOTVS Application Server a partir do release 7.00131227A