Un truco que quizás ya sepais pero que viene bien tenerlo en cuenta. Se trata de poder ejecutar un método de un Meta4Object usando el Job Scheduler.
1er Caso: Ejecución de un método a través de una tarea
Este es el sencillo, creamos una tarea con código LN4 y le añadimos el código:
'Proceso:
Code = ""
MsT3 = "MI_M4OBJ"
MsNodo = "MI_NODO de MI_M4OBJ"
MsMetodo = "MI_METODO de MI_NODO de MI_M4OBJ"
DefineInstance(MsT3,MsT3,0,1)
Code=MsT3 + "!" + MsNodo + "." + MsMetodo + "()"
X=clcExecuteLN4JIT(Code)
Return(X)
De esta forma se ejecuta el método ID_ITEM del nodo ID_NODE del Meta4Object ID_CHANNEL. Planificamos luego con el Job Scheduler la ejecución de esta tarea como necesitemos.
Como podeis ver el método de este ejemplo no tiene parámetros.
Para añadir parámetros:
'Parámetros:
MsIDHR = MsDQ + STD_ID_HR + MsDQ
'Proceso:
MsDQ = CHR(Double_quote)
Code = ""
MsT3 = "MI_M4OBJ"
MsNodo = "MI_NODO de MI_M4OBJ"
MsMetodo ="MI_METODO de MI_NODO de MI_M4OBJ"
DefineInstance(MsT3,MsT3,0,1)
Code= MsT3 + "!" + MsNodo + "." + MsMetodo + "("+ MsIDHR + ")"
X=clcExecuteLN4JIT(Code)
Return(X)
Nota: Puedes consultar el post "
Planificación de ejecución de Meta4Objects" para ver cómo se puede planificar este tipo de tareas en el Job Scheduler.
2º Caso: Ejecución de un método introducciendo valores desde un Meta4Object
Este caso me encanta y lo uso mucho... se trata de meter código en un Meta4Object y que se ejecute mediante el Job Scheduler. Por ejemplo lo uso para la generación de informes a texto muy grandes (contabilidad, nómina) y que los envíe a una dirección de correo electrónico que le indico (podría valer para Excel pero el servidor debe disponer de Ms Officce instalado):
'Parámetros:
MsMaildondeEnviar = "oscar.lopezgrandmontagne@gmail.com"
MsFechaCalculo = ToString(DT_PAYMENT,0)
'Proceso:
MsT3 = "MI_M4OBJ"
MsNodo = "MI_NODO de MI_M4OBJ"
MsMetodo = "MI_METODO de MI_NODO de MI_M4OBJ"
MsAlias = "NEW_" + MsT3
MsDQ = CHR(Double_quote)
MsCodeJS = "DefineInstance(" + MsDQ + MsAlias + MsDQ + "," + MsDQ + MsT3 + MsDQ + ", 0, 1):"
MsCodeJS = MsCodeJS + "MsDate = " + MsDQ + MsFechaCalculo + MsDQ + ":"
MsCodeJS = MsCodeJS + "MsMail = " + MsDQ + MsMaildondeEnviar + MsDQ + ":"
MsCodeJS = MsCodeJS + "MsCode = " + MsDQ + MsAlias + "!" + MsNodo + "." + MsMetodo + "(MvDate,MvMail)"+ MsDQ +":"
MsCodeJS = MsCodeJS + "MsReturn = clcExecuteLN4JIT(MsCode," + MsDQ + "MvDate" + MsDQ + ",MsDate," + MsDQ + "MvMail" + MsDQ + ",MsMail):"
MsCodeJS = MsCodeJS + "Return(MsReturn)"
MsTarea = JOB_SCHEDULER!N_JOB_GROUP_DEFS.SUBMIT_JOB("EJECUCION MI INFORME", MsCodeJS ,"ASAP")
SetLog(0,16,110,11,ToString(Format(MsTarea ,0)))
Return (M4_SUCCESS)
Hay que definir un Alias de Meta4object "JOB_SCHEDULER", para poder planificar la tarea.
Espero que os sirva de ayuda