Identificación de tareas que están actualmente en ejecución

Cuando se ejecuta una tarea, se bloquea el registro de base de datos de tareas hasta que finaliza la tarea. Determine si una tarea está ejecutando o no.

Acerca de esta tarea

Antes de la versión 6.0.2, todas las tareas se ejecutaban en una sola transacción global. Este proceso no sólo impedía que la tarea se ejecutara correctamente más de una vez sino que también bloqueaba todos los intentos a la lectura del estado de la tarea, dado que cada tarea utilizaba el aislamiento de transacciones de lectura confirmada.

Hay dos métodos de determinar si un tarea está en ejecución:
  1. NotificationSink

    Se puede establecer un EJB NotificationSink en la tarea utilizando el método setNotificationSink en el objeto TaskInfo. El bean NotificationSink puede entonces anotar cronológicamente el ciclo de vida de la tarea en un registro de base de datos aparte en una tabla personalizada. Esto producirá un archivo de registro histórico de la tarea que se puede consultar independientemente del planificador. Esta solución funciona para todas las versiones del servicio de planificador. Para obtener información detallada Recepción de notificaciones del planificador.

  2. Ejecución con demora y lectura no confirmada

    En la Versión 6.0.2 y posterior, hay dos comportamientos que permiten al planificador buscar y recuperar métodos de API, por ejemplo getTask, getTaskStatus o findTasksByName, para ver el estado actual de la tarea sin bloqueo. Para mostrar el estado actual de la tarea, incluido su estado de ejecución sin confirmar, siga estos pasos:

Procedimiento

  1. Habilite el aislamiento de transacciones de lectura sin confirmar para los métodos read del planificador con el fin de impedir que se bloqueen estos métodos cuando se ejecuta la tarea. Para establecer el aislamiento de transacciones predeterminadas para métodos read, consulte el tema Configuración del aislamiento de transacciones predeterminadas del planificador para obtener detalles de la operación de lectura.
    Importante: Si la base de datos del planificador no admite lecturas no confirmadas, como Oracle, quizá no sea posible determinar si una tarea está en ejecución a no ser que utilice la calidad de servicio QOS_ATLEASTONCE.
  2. Utilice la opción TaskInfo.EXECUTION_DELAYEDUPDATE en el método TaskInfo.setTaskExecutionOptions para forzar que el planificador grabe el estado TaskStatus.RUNNING en la tarea cuando comienza a ejecutarse la tarea.

Icon that indicates the type of topic Task topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tsch_identify
File name: tsch_identify.html