Classe responsável pelo gerenciamento automático de agendamentos do Smart Schedule, permitindo as operações de inclusão, alteração e exclusão de agendamentos de maneira automática.
Aviso |
---|
| TOTVS.FRAMEWORK.SCHEDULE |
Nota |
---|
| Para o funcionamento desta classe, se faz necessário a preparação do ambiente com usuário que possua privilégios de Administrador. |
Nota |
---|
Disponível a partir da lib do release 2410, para LIB 20240115. |
MétodosNew()Método para instanciar a classe (construtor). Exemplo de uso:oScheduleAuto := totvs.framework.schedule.automatic():new()
|
setRoutine()Método para definir a rotina/função de execução do agendamento. Parâmetros:Nome | Tipo | Obrigatório | Default | Descrição |
---|
cRoutine | Caractere | X |
| Nome da Rotina/Função. |
Retorno:lReturn, lógico, indica se a rotina é valida para o cadastro do Schedule. Exemplo de uso:oScheduleAuto:setRoutine("MATR110")
|
Sintaxe: oScheduleAuto:setRoutine () → True/False
setFirstExecution()Método para definir data e hora da primeira execução do agendamento. Parâmetros:Nome | Tipo | Obrigatório | Default | Descrição |
---|
dDate | Data | X |
| Data do agendamento | cTime | Caractere | X |
| Hora do agendamento
Formato: "HH:MM:SS" |
Exemplo de uso:oScheduleAuto:setFirstExecution(Date(),Time())
|
Sintaxe: oScheduleAuto:setFirstExecution () → nil
setPeriod()Método para definição da periodicidade do agendamento. Parâmetros:Nome | Tipo | Obrigatório | Default | Descrição |
---|
cType | Caractere | X | U | Tipo da Periodicidade: U - Única D - Diária S - Semanal M - Mensal | nDayInit | Numérico |
|
| Dia de Início (Apenas para o tipo MENSAL). | nHourInit | Numérico |
|
| Hora de Início. | nMinuteInit | Numérico |
|
| Minuto de Início. | aWeekDays | Array |
|
| Dias da Semana (Apenas para o tipo SEMANAL).
Formato: [1..7] - Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday |
Retorno:lPeriod, lógico se a periodicidade foi definida. Exemplo de uso:
ÚnicaoScheduleAuto:setPeriod("U")
|
Diária, todos os dias ao meio dia;oScheduleAuto:setPeriod("D",,12,0)
|
Semanal, apenas terças e quintas as 20:00;oScheduleAuto:setPeriod("S",,20,0,{"Tuesday","Thursday"})
|
Mensal, iniciando dia 10 as 9:30;oScheduleAuto:setPeriod("M",10,9,30)
|
Sintaxe: oScheduleAuto:setPeriod () → True/False
setFrequency()Método para definição da frequência do agendamento.
Nota |
---|
| Definição apenas para periodicidades Diária/Semanal/Mensal. Uma vez definido as informações de periodicidade as definições da frequência deverão ser refeitas. |
Parâmetros:Nome | Tipo | Obrigatório | Default | Descrição |
---|
cType | Caractere | X |
| Tipo da Frequência: D - Dia H - Hora M - Minuto | nInterval | Numérico | X |
| Intervalo de execução/frequência. | nDayLimit | Numérico |
|
| Dia do Término. | nHourLimit | Numérico |
|
| Hora do Término. | nMinuteLimit | Numérico |
|
| Minuto do Término. |
Retorno:lFrequency, lógico se a frequência foi definida. Exemplo de uso:Frequência a cada 5 dias, terminando dia 20;oScheduleAuto:setFrequency("D",5,20)
|
Frequência a cada 6 horas, encerrando as 18:00;oScheduleAuto:setFrequency("H",6,,18,0)
|
Frequência a cada 30 minutos, encerrando as 22:30;oScheduleAuto:setFrequency("M",30,,22,30)
|
Sintaxe: oScheduleAuto:setFrequency () → True/False
setRecurrence()Método para definir a recorrência do agendamento.
Parâmetros:Nome | Tipo | Obrigatório | Default | Descrição |
---|
lRecurrence | Lógico | X | .F. | Ativa/Desativa a recorrência. |
Exemplo de uso:oScheduleAuto:setRecurrence(.T.)
|
Sintaxe: oScheduleAuto:setRecurrence () → nil
setDiscard()Método para definir se descarta as tarefas atrasadas do agendamento. Obs.: O mesmo só será setado caso a tarefa tenha frequência. Informações |
---|
Método disponível a partir da LIB Label 20240520 |
Parâmetros:Nome | Tipo | Obrigatório | Default | Descrição |
---|
lDiscard | Lógico | X | .F. | Ativa/Desativa o descarte das tarefas atrasadas. |
Exemplo de uso:oScheduleAuto:setDiscard(.T.)
|
Sintaxe: oScheduleAuto:setDiscard () → nil
setEnvironment()Método para definir ambiente, empresas e filiais de execução do agendamento. Parâmetros:Nome | Tipo | Obrigatório | Default | Descrição |
---|
cEnvironment | Caractere |
| GetEnvServer() | Nome do ambiente. | aCompanyBranches | Array | X |
| Array contendo as Empresas e Filiais do agendamento. Formato: [n] Array de Empresas. [n][1] ExpC: Código da Empresa. [n][2] Array de Filiais. [n][2][1] ExpC: Código da Filial. |
Exemplo de uso:oScheduleAuto:setEnvironment("PROTHEUS12", {{"99",{"01","02"}}})
|
Sintaxe: oScheduleAuto:setEnvironment () → nil
setModule()Método para definir o módulo de execução do agendamento. Parâmetros:Nome | Tipo | Obrigatório | Default | Descrição |
---|
nModeule | Numérico | X |
| Número do Módulo, |
Exemplo de uso:oScheduleAuto:setModule(5)
|
Sintaxe: oScheduleAuto:setModule () → nil
setUser()Método para definir o usuário de execução. Parâmetros:Nome | Tipo | Obrigatório | Default | Descrição |
---|
cUser | Caractere | X |
| Código do Usuário. |
Exemplo de uso:oScheduleAuto:setUser("000001")
|
Sintaxe: oScheduleAuto:setUser () → nil
setDescription()Método para definir a descrição do agendamento. Parâmetros:Nome | Tipo | Obrigatório | Default | Descrição |
---|
cDescription | Caractere | X |
| Descrição do agendamento. |
Exemplo de uso:oScheduleAuto:setDescription("Agendamento Automatico Relatório.")
|
Sintaxe: oScheduleAuto:setDescription () → nil
setParams()Método para definir o preenchimento dos parâmetros de execução definidos via SXD ou SchedDef() da Rotina. Parâmetros:Nome | Tipo | Obrigatório | Default | Descrição |
---|
aMVParams | Array | X |
| Array de parâmetros(MV_PAR's) Formato Pergunte(SX1): [1] MV_PAR01 [2] MV_PAR02 [3] MV_PAR03 ... Obs.: preenchimento deve respeitar a tipagem de cada pergunte definido no dicionário SX1, como: caractere, numérico ou data.
Formato PARAMDEF: [1] numérico: ORDEM [2] caractere: DE [3] caractere: ATE |
Exemplo de uso via Pergunte(SX1):oScheduleAuto:setParams({" ", "ZZZZZZ", 1, SToD("20231231")})
|
Exemplo de uso via PARAMDEF:oScheduleAuto:setParams({1, " ", "ZZZZZZ"})
|
Sintaxe: oScheduleAuto:setParams () → nil
Método para definir o preenchimento das formulas que representam os parâmetros de execução definidos via SXD ou SchedDef() da Rotina. Nota |
---|
| Preenchimento de formulas não permitido quando os parâmetros definido via PARAMDEF. |
Parâmetros:Nome | Tipo | Obrigatório | Default | Descrição |
---|
aMVForms | Array | X |
| Array de parâmetros(MV_PAR's) Formato: [1] MV_PAR01 [2] MV_PAR02 [3] MV_PAR03 ... Obs.: preenchimento através de STRING que representa a expressão a ser executada para preenchimento do parâmetro. |
Retorno:lReturn, lógico, indica se as formulas foram definidas. Exemplo de uso:oScheduleAuto:setForms({"Space(6)", "StrZero(6)"})
|
Sintaxe: oScheduleAuto:setForms () → True/False
setPrintParams()Método para definir o preenchimento dos parâmetros de impressão.
Nota |
---|
| Definição apenas para agendamentos de relatórios. |
Parâmetros:Nome | Tipo | Obrigatório | Default | Descrição |
---|
cTitle | Caractere |
|
| Título da impressão. | nPrintFormat | Numérico |
|
| Formato da impressão (1-Web Spool/2-Email). | cFileMail | Caractere |
|
| Nome do arquivo de impressão ou e-mail destinatario. | nPrintType | Numérico |
|
| Tipo de impressão (1-HTML/2-PDF/3-Planilha). | nSheetFormat | Numérico |
|
| Formato da planilha (1-Normal/2-Suprime linhas brancas e totais/3-Tabela). |
Exemplo de uso:oScheduleAuto:setPrintParams({"Impressão Automatica",1,"arquivo"})
|
Sintaxe: oScheduleAuto:setPrintParams () → nil
setManageable()Método para definir a permissão de manutenção via App SmartSchedule. Aviso |
---|
| Necessário estrutura atualizada da tabela XX1, com a existência do campo XX1_MNTUSR. |
Parâmetros:Nome | Tipo | Obrigatório | Default | Descrição |
---|
lManageable | Lógico | X | .T. | Permite ao usuário gerenciar o agendamento. |
Exemplo de uso:oScheduleAuto:setManageable(.T.)
|
Sintaxe: oScheduleAuto:setManageable () → nil
setSchedule()Método para carregar as definições de um agendamento existente. Parâmetros:Nome | Tipo | Obrigatório | Default | Descrição |
---|
cScheduleId | Caractere | X |
| Código do agendamento. |
Retorno:lReturn, lógico, indica se o agendamento foi definido. Exemplo de uso:oScheduleAuto:setSchedule("000001")
|
Sintaxe: oScheduleAuto:setSchedule () → nil
createSchedule()Método para inclusão do agendamento com base nas informações pré-definidas. Retorno:lReturn, lógico, indica se o agendamento foi incluído. Exemplo de uso:oScheduleAuto:createSchedule()
|
Sintaxe: oScheduleAuto:createSchedule () → True/False
updateSchedule()Método para alteração do agendamento com base nas informações pré-definidas. Retorno:lReturn, lógico, indica se o agendamento foi alterado. Exemplo de uso:oScheduleAuto:updateSchedule()
|
Sintaxe: oScheduleAuto:updateSchedule () → True/False
deleteSchedule()Método para exclusão do agendamento com base nas informações pré-definidas. Retorno:lReturn, lógico, indica se o agendamento foi excluído. Exemplo de uso:oScheduleAuto:deleteSchedule()
|
Sintaxe: oScheduleAuto:deleteSchedule () → True/False
getErrorMessage()Método recuperar a mensagem de erro em caso de falha na execução da criação, alteração ou exclusão do agendamento. Retorno:cMessageError, caractere, mensagem de erro. Exemplo de uso:oScheduleAuto:getErrorMessage()
|
Sintaxe: oScheduleAuto:getErrorMessage () → Caractere
getDialogParams()Método para preencher os parâmetros visualmente com uma dialog das perguntas assim como ocorre no schedule via interface. (A função deve conter um scheddef assim como ocorre na interface do schedule) Nota |
---|
Disponível a partir da lib 20240408. |
Retorno:lReturn, lógico, Indica se a tela foi confirmada ou não.
Exemplo de uso: oScheduleAuto:getDialogParams()
|
Sintaxe: oScheduleAuto:getDialogParams ()
Bloco de código |
---|
title | Exemplo completo |
---|
collapse | true |
---|
| #include 'fw-tlpp-core.th'
#include "protheus.ch"
//-------------------------------------------------------------------
/*/{Protheus.doc} INCSchedAuto
Exemplo de Inclusão de Agendamento Automático do SCHEDULE.
@author TOTVS Framework
@since 15/01/2024
@version 1.0
/*/
//-------------------------------------------------------------------
Function INCSchedAuto()
Local cEnv as Character
Local oScheduleAuto as object
Local lInterfaceParams as logical
cEnv := GetEnvServer()
lInterfaceParams := .T.
if !lInterfaceParams // Prepara ambiente para execução sem interface.
RpcSetEnv("T1", "D MG 01 ", "admin", "1234") // informações do seu ambiente
endIf
oScheduleAuto := totvs.framework.schedule.automatic():new()
// Dado do Agendamento
oScheduleAuto:setRoutine("ATFA050")
oScheduleAuto:setFirstExecution(DATE(),TIME())
oScheduleAuto:setEnvironment(cEnv,{{cEmpAnt}})
oScheduleAuto:setModule(5)
oScheduleAuto:setUser("000000")
oScheduleAuto:setDescription("Schedule Automático")
oScheduleAuto:setRecurrence(.F.)
if lInterfaceParams
if !oScheduleAuto:getDialogParams()
oScheduleAuto:setParams(getParams(3)) //Caso a tela seja cancelada poderá adicionar valores conforme necessidade
endIf
else
oScheduleAuto:setParams(getParams(1))
endIf
oScheduleAuto:setPrintParams("Impressao Automatica",1,"arquivo")
// Definição do PERIODO
if oScheduleAuto:setPeriod("M",1,6,15)
// Definição de FREQUENCIA
if oScheduleAuto:setFrequency("D",1,10,23,59)
oScheduleAuto:setDiscard(.F.) // Descartar tarefas atrasadas
// Dispara Criação do Agendamento
if oScheduleAuto:createSchedule()
ConOut("/* * * * * * * * * * * * * * * * * * * * */")
ConOut("/* INCLUSÃO DO AGENDAMENTO COM SUCESSO */")
ConOut("/* * * * * * * * * * * * * * * * * * * * */")
else
ConOut("CREATE ERROR: "+oScheduleAuto:getErrorMessage())
endIf
endIf
endIf
Return
//-------------------------------------------------------------------
/*/{Protheus.doc} ALTSchedAuto
Exemplo de Alteração de Agendamento Automático do SCHEDULE.
@author TOTVS Framework
@since 15/01/2024
@version 1.0
/*/
//-------------------------------------------------------------------
Function ALTSchedAuto()
Local cEnv as Character
Local oScheduleAuto as object
Local aSchedules as array
Local lInterfaceParams as logical
cEnv := GetEnvServer()
lInterfaceParams := .T.
if !lInterfaceParams // Prepara ambiente para execução sem interface.
RpcSetEnv("T1", "D MG 01 ", "admin", "1234") // informações do seu ambiente
endIf
aSchedules := totvs.framework.schedule.utils.getSchedsByRotine("ATFA050") // Busca do código do Agendamento para o ATFA050
if !Empty(aSchedules)
oScheduleAuto := totvs.framework.schedule.automatic():new()
// Indica o Agendamento a ser alterado
oScheduleAuto:setSchedule(aSchedules[1])
// Define Empresa e Filial de execução.
oScheduleAuto:setEnvironment(cEnv,{{"T1",{"M SP 01 ","M SP 02 "}},{"T2",{"D MG 01 ","D MG 02 "}}})
// Define os Parâmetros
if lInterfaceParams
if !oScheduleAuto:getDialogParams()
oScheduleAuto:setParams(getParams(3)) //Caso a tela seja cancelada poderá adicionar valores conforme necessidade
endIf
else
oScheduleAuto:setParams(getParams(2))
endif
// Define se o Agendamento pode ser alterado pelo usuário.
oScheduleAuto:setManageable(.T.)
// Dispara Alteração do Agendamento
if oScheduleAuto:updateSchedule()
ConOut("/* * * * * * * * * * * * * * * * * * * * */")
ConOut("/* ALTERAÇÃO DO AGENDAMENTO COM SUCESSO */")
ConOut("/* * * * * * * * * * * * * * * * * * * * */")
else
ConOut("UPDATE ERROR: "+oScheduleAuto:getErrorMessage())
endIf
endIf
Return
//-------------------------------------------------------------------
/*/{Protheus.doc} DELSchedAuto
Exemplo de Exclusão de Agendamento Automático do SCHEDULE.
@author TOTVS Framework
@since 15/01/2024
@version 1.0
/*/
//-------------------------------------------------------------------
Function DELSchedAuto()
Local cEnv as Character
Local oScheduleAuto as object
Local aSchedules as array
Local lInterfaceParams as logical
cEnv := GetEnvServer()
lInterfaceParams := .T.
if !lInterfaceParams // Prepara ambiente para execução sem interface.
RpcSetEnv("T1", "D MG 01 ", "admin", "1234") // informações do seu ambiente
endIf
aSchedules := totvs.framework.schedule.utils.getSchedsByRotine("ATFA050") // Busca do código do Agendamento para o ATFA050
if !Empty(aSchedules)
oScheduleAuto := totvs.framework.schedule.automatic():new()
// Indica o Agendamento a ser excluído
oScheduleAuto:setSchedule(aSchedules[1])
// Dispara Exclusão do Agendamento
if oScheduleAuto:deleteSchedule()
Conout("/* * * * * * * * * * * * * * * * * * * * */")
Conout("/* EXCLUSÃO DO AGENDAMENTO COM SUCESSO */")
ConOut("/* * * * * * * * * * * * * * * * * * * * */")
else
ConOut("DELETE ERROR: "+oScheduleAuto:getErrorMessage())
endIf
endIf
Return
//-------------------------------------------------------------------
/*/{Protheus.doc} getParams
Montagem dos parâmetros da rotina ATFA050.
@return aParams - Array com as respostas dos MV_PAR's.
@author TOTVS Framework
@since 15/01/2024
@version 1.0
/*/
//-------------------------------------------------------------------
Static Function getParams(nType as numeric)
Local aParams as array
Local cRoutine As Character
Local aMVParams As Array
Local nX As Numeric
aParams := Array(0)
if nType == 1
aAdd(aParams, "000001") // MV_PAR01
aAdd(aParams, "999999") // MV_PAR02
aAdd(aParams, SToD("20110101")) // MV_PAR03
aAdd(aParams, SToD("20111231")) // MV_PAR04
aAdd(aParams, 2) // MV_PAR05
aAdd(aParams, "C7_DESCRI") // MV_PAR06
aAdd(aParams, 1) // MV_PAR07
aAdd(aParams, 1) // MV_PAR08
aAdd(aParams, 3) // MV_PAR09
aAdd(aParams, 1) // MV_PAR10
aAdd(aParams, 1) // MV_PAR11
aAdd(aParams, 1) // MV_PAR12
aAdd(aParams, "") // MV_PAR13
aAdd(aParams, 1) // MV_PAR14
elseIf nType == 2
aAdd(aParams, "000001") // MV_PAR01
aAdd(aParams, "000100") // MV_PAR02
aAdd(aParams, SToD("20110101")) // MV_PAR03
aAdd(aParams, SToD("20991231")) // MV_PAR04
aAdd(aParams, 2) // MV_PAR05
aAdd(aParams, "C7_PRODUTO") // MV_PAR06
aAdd(aParams, 2) // MV_PAR07
aAdd(aParams, 2) // MV_PAR08
aAdd(aParams, 3) // MV_PAR09
aAdd(aParams, 2) // MV_PAR10
aAdd(aParams, 2) // MV_PAR11
aAdd(aParams, 2) // MV_PAR12
aAdd(aParams, "") // MV_PAR13
aAdd(aParams, 2) // MV_PAR14
elseIf nType == 3
cRoutine := 'ATFA050'
aMVParams := totvs.framework.schedule.utils.getParamsMv(cRoutine)
aParams := Array(Len(aMVParams))
for nX := 1 To Len(aMVParams)
if aMVParams[nX][2] == "D"
aParams[nX] := SToD("00000000")
elseIf aMVParams[nX][2] == "N"
aParams[nX] := 1
elseIf aMVParams[nX][2] == "C"
aParams[nX] := ""
endIf
next nX
endIf
Return aParams |
|