martes, 3 de mayo de 2011

Como invocar un Business Operation de forma periodica o programada en Ensemble

Hay dos maneras,


1. Desde dentro de Ensemble: Puedes crear un BS que tenga un adaptador de tipo "Ens.InboundAdapter" que solo tiene un intervalo de llamada y opcionalmente programar su ejecución mediante el setting "Programar" (http://docs.intersystems.com/ens20102/csp/docbook/DocBook.UI.Page.cls?KEY=EGMG_items#EGMG_items_host_schedule). El BS solo envía un mensaje al BP/BO para que haga lo que tenga que hacer.


2. Desde fuera de Ensemble: Crear un BS sin adaptador y luego invocarlo desde una rutina o método de clase que es planificado por una tarea programada. Esta forma es más potente pero requiere la creación de la tarea en el portal de gestión general (no el de Ensemble). La tarea programada la puedes ajustar a tus requerimientos de ejecución temporal (http://docs.intersystems.com/ens20102/csp/docbook/DocBook.UI.Page.cls?KEY=GSA_manage#GSA_manage_taskmgr). Las tareas predefinidas están en el paquete %SYS pero hay posibilidad de crear tareas personalizadas (Clases que heredan de %SYS.Task.Definition), además existe una tarea predefinida o personalizada puede ejecutar un código cualquiera eligiendo como tipo de la tarea RunLegacyTask.


La invocación del BS en este caso sería algo como:


#dim tSC as %Status

#dim bs as MiServicio

set tSC=##class(Ens.Director).CreateBusinessService("NombreDeConfiguracionDelServicio",.bs)

do bs.MetodoDelServicio(parametros)


No hay comentarios: