Retomo en este caso un post antiguo para
ampliarlo. El post era Ejecución de Meta4Objects
planificados en el Job Scheduler y trataba de como planificar la
ejecución de Meta4Objects desde código LN4.
Ese post tenía la limitación de no dejar al
usuario elegir el modo de planificación. Recordemos que tenemos: Inmediato,
Cíclico, Plan anual o Lista de fechas.
En esta ocasión nos valdremos de un objeto de
presentación, un Action_bp con una tarea específica: JSForPresentations,
que nos ayudará en este propósito.
Lo que haré será primero desde un botón invocar
la ejecución de un método que informa una propiedad (de ámbito nodo y tipo Long
en este ejemplo) que luego se pasa a presentación y se incluye en un parámetro
de la tarea JSForPresentations. Este código concatena una
llamada LN4 por in-dirección a través del método clcExecuteLN4JIT
El código de este método que llamaré
CXX_PLANIFICACION_PROCESO es:
MsT3 = "MI_M4OBJ"
MsNodo = "MI_NODO de
MI_M4OBJ"MsMetodo = "CXX_PROCESO"
MsAlias =
"MI_ALIAS"
MsDQ = CHR(Double_quote)
PRP_LN4_CODE =
"{·Execute LN4 Code·,LN4_CODE,·"
PRP_LN4_CODE = PRP_LN4_CODE + "DefineInstanceEx(" + MsDQ + MsAlias + MsDQ + "," + MsDQ + MsT3 + MsDQ + ", M4_AUTOLOAD_OFF, M4_INSTANCE_NOT_SHARED, " + MsDQ + MsDQ + ", M4_ORGANIZATION_L2_TYPE_ANY):"
PRP_LN4_CODE = PRP_LN4_CODE + "sCode = " + MsDQ + MsAlias + "!" + MsNodo + "." + MsMetodo + "()"+ MsDQ + ":"
PRP_LN4_CODE = PRP_LN4_CODE + "clcExecuteLN4JIT(sCode)·}"
Return (M4_SUCCESS)
PRP_LN4_CODE = PRP_LN4_CODE + "DefineInstanceEx(" + MsDQ + MsAlias + MsDQ + "," + MsDQ + MsT3 + MsDQ + ", M4_AUTOLOAD_OFF, M4_INSTANCE_NOT_SHARED, " + MsDQ + MsDQ + ", M4_ORGANIZATION_L2_TYPE_ANY):"
PRP_LN4_CODE = PRP_LN4_CODE + "sCode = " + MsDQ + MsAlias + "!" + MsNodo + "." + MsMetodo + "()"+ MsDQ + ":"
PRP_LN4_CODE = PRP_LN4_CODE + "clcExecuteLN4JIT(sCode)·}"
Return (M4_SUCCESS)
Es importante el caracter "punto" ("·", tecla shift + 3)
Realmente estamos haciendo: MI_ALIAS!CXX_PROCESO() una vez hubiéramos declarado el Alias de Meta4Object.
Aparte de esto, en una presentación, crearé
dentro de un botón y su evento click el siguiente código:
Idchannel = "CXX_XXXX"
Idnode = "CXX_XXXX"
Text = "Planificación desde Presentación"
BEGIN Evclick Evclick1
BEGIN Action_method amthdCXX_PLANIFICACION_PROCESO
Iditem = "CXX_PLANIFICACION_PROCESO"
END
BEGIN Action_set asBoxName
Set = "*C*BOXNAME := 'Planificación del proceso XXX'"
END
BEGIN Action_set asBoxList
Set = "*C*BOXLIST := [PRP_LN4_CODE]
END
BEGIN Action_bp bpJobScheduler
Idbp = "JSForPresentations"
Load = False
Localcontext = False
END
END
END
Al pulsarse, este botón, se ejecuta el método CXX_PLANIFICACION_PROCESO que
genera el contenido de la propiedad PRP_LN4_CODE para
después pasarlo al parámetro BOXLIST que hará
que se incluya en la tarea JSForPresentations
y así poder gestionarse la planificación sin las "ataduras" del
anterior post.
Espero que os sirva!!