Enterprise Scheduler Service: Calendarizar un Servicio Web

Constantemente requerimos ejecutar algunos de nuestros servicios o procesos de manera automática y calendarizada en determinados momentos de tiempo, antes de la versión de Oracle 12c esta tarea solía ser llevada a cabo por medio de utilidades externas como Cron, a partir de esta versión se integró un nuevo componente al stack de Fusion Middleware, se trata del Enterprise Scheduler Service (ESS).

Con ESS se dispone de la habilidad de ejecutar diversos tipos de Jobs, de manera segura, con alta disponibilidad y escalabilidad, balanceo de carga y de manera administrativa usando Enterprise Manager FMW Control, con el fin de proveer servicios de calendarización y ejecución automática.

Los tipos de Jobs que pueden ser creados usando ESS son:

  • Java
  • Web Service
  • EJB
  • Process Job para línea de comandos
  • PL/SQL
En este artículo encontrarás la forma de crear un Job de tipo Web Service, también verás cómo crear un Schedule Service para determinar la calendarización de su ejecución de manera automática una vez al día, y finalmente como enlazar ambos elementos para comenzar su ejecución, todo esto por medio de configuración en la consola del EM.

Antes de comenzar con la configuración del ESS, mencionaré que el Servicio Web que será calendarizado es un proceso SOA BPEL de tipo One Way expuesto como Servicio SOAP (aunque tú bien podrías usar otro Web Service cualquiera), siendo ésta su definición:


Se trata de un BPEL sin lógica de negocio cuyo fin es ilustrativo para este ejemplo, y está desplegado y en ejecución en el servidor SOA.


Asegúrate que el servidor de ESS esté instalado y en ejecución. Si este paso es correcto, en la consola del EM selecciona el menú de navegación que se encuentra en la parte superior izquierda.


Expande la opción Scheduling Services y selecciona la opción ESSAPP.


Una vez que abra la página, en el menú Scheduling Service selecciona Job Metadata, Job Definitions.


Clic en el botón Create.


Introduce los datos del Job, selecciona el tipo, en este caso es OnewayWebserviceJobType y da clic en el botón Select Web Service.


Introduce el url del WSDL del servicio que será ejecutado, en este caso el BPEL creado al inicio. Clic en el botón Go para descubrir el Servicio Web. Un ejemplo del url es: http://localhost:27005/soa-infra/services/default/SchedulerESS/serviciocalendarizadobpel_client_ep?WSDL


Selecciona las opciones correspondientes al servicio. Para este en particular, el payload de request es un dato de tipo String, y lo estoy estableciendo con un valor fijo, sin embargo más adelante puedes configurar los parámetros. Una vez que termines de introducir los datos, clic en el botón OK.


En la siguiente pantalla verás el resumen del Job con las propiedades de sistema obtenidas del Servicio Web, clic en OK para finalizar la creación.


El siguiente paso es crear Schedule con las reglas de calendarización del Job. Selecciona Scheduling Service, Job Requests, Define Schedules.


Clic en el botón Create…


Introduce los datos del Schedule, tales como nombre, descripción, paquete y la frecuencia con la que se ejecutará el Job. Aquí puedes escoger de una serie de opciones, para este ejemplo seleccioné la opción Daily y la fecha y hora a la que comenzará y terminará su ejecución.

Si utilizas la opción Customize Times tendrás la posibilidad de escoger momentos de tiempo específicos, pero si tienes requerimientos más complejos de los que te permite configurar la consola, tendrás que implementar este mecanismo por medio del API Java que provee el ESS y por medio de JDeveloper.

Una vez configurado en su totalidad, clic en OK para concluir la creación del Schedule.


Ahora, el siguiente paso es lanzar la ejecución del Job y ligarlo con el Schedule. Selecciona Scheduling Service, Job Requests, Submit Job Request.


Clic en el ícono para buscar el Job.


Realiza la búsqueda de Jobs por medio de los parámetros y el botón Go.


Selecciona el Job deseado y clic en OK.


Selecciona el radio botón Use existing schedule y clic en el ícono de búsqueda.


Selecciona el Schedule creado unos pasos atrás y clic en OK.


En la pantalla de resumen podrás ver las características y validar si todo es correcto. Clic en OK para comenzar la calendarización de la ejecución del Job.


En la siguiente pantalla podrás ver su configuración final, así como también algunas métricas de ejecución


Valida la ejecución de la instancia del BPEL, ve a la pantalla de instancias del servicio y verifica que en la hora especificada en el Schedule efectivamente se ejecutó de manera automática.


Como comentario adicional, si requieres ejecutar un grupo de Jobs de forma secuencial o paralela, puedes crear un Job Set y definir el flujo a seguir de los Jobs que deseas agrupar en una sola ejecución. Usa la opción Scheduling Service, Job Metadata, Job Sets.


Con esto concluimos la creación del Job del Servicio Web, del Schedule con la calendarización y del Submit que une a ambos y lanza la ejecución. En esta liga puedes encontrar la documentación de Oracle respecto al ESS. https://docs.oracle.com/middleware/1213/ess/ess-user/toc.htm

Sandra Flores es una profesionista independiente con experiencia en Programación y Arquitectura de Software. Con más de 12 años de experiencia en desarrollo de proyectos de TI, Sandra persigue una de sus grandes pasiones, generar productos de calidad, perfeccionados en detalles y enfocados a resolver problemas actuales de las empresas. Sandra es Oracle ACE Associate, y como tal, es conferencista regular en eventos de diversos tipos y en distintas locaciones del mundo, además de publicar constantemente artículos en Oracle Technology Network en Español e Inglés, entradas en su blog personal, webinars, entre otros. Sandra también es instructora certificada por Arcitura, empresa Canadiense ampliamente reconocida en certificaciones SOA, Cloud y Big Data.