Recepción de notificaciones del planificador

Un planificador genera varios sucesos de notificación cuando realiza una operación en una tarea. En este tema se describen estos sucesos de notificaciones.

Acerca de esta tarea

Los sucesos de notificación generados por un planificador cuando éste realiza una tarea incluyen:
Scheduled (planificada)
Una tarea se ha planificado.
Purged (purgada)
Una tarea se ha suprimido permanentemente de un almacén persistente.
Suspended (suspendida)
Una tarea se ha suspendido.
Resumed (reanudada)
Una tarea se ha reanudado.
Completo
Una tarea se ha ejecutado completamente. Si ha sido una tarea repetitiva, todas las repeticiones se han realizado.
Cancelled (cancelada)
Una tarea se ha cancelado. No se ejecutará de nuevo.
Firing (activando)
Una tarea está lista para ejecutarse.
Fired (activada)
Una tarea se ha completado correctamente.
Fire failed (Activación errónea)
Una tarea no ha podido ejecutarse correctamente.

Para recibir sucesos de notificación, invoque el método setNotificationSink() sobre la interfaz TaskInfo antes de crear la tarea. El método setNotificationSink() permite especificar el bean de sesión que va a actuar como llamada de retorno, y una máscara que restringe los sucesos que se generan.

Procedimiento

  1. Cree un bean de sesión NotificationSink. Cree una bean de sesión sin estado que implementa el método handleEvent() en la interfaz remota com.ibm.websphere.scheduler.NotificationSink. Se llama al método handleEvent() cuando se activa la notificación. Las interfaces remota y de ubicación inicial se pueden establecer como se indica a continuación en el descriptor de despliegue del bean:
    com.ibm.websphere.scheduler.NotificationSinkHome
    com.ibm.websphere.scheduler.NotificationSink

    La interfaz NotificationSink (receptáculo de notificación) define el método siguiente:

    public void handleEvent(TaskNotificationInfo task) throws java.rmi.RemoteException;
  2. Especifique el bean de sesión de notificación antes de enviar la tarea al planificador mediante el método setNotificationSink() de la API de la interfaz TaskInfo.
    Si utiliza la API WASScheduler MBean para establecer un receptáculo de notificación, el nombre JNDI (Java™ Naming and Directory Interface) tiene que ser el nombre JNDI global plenamente calificado. Mediante un archivo JSP (JavaServer Pages), servlet o componente EJB (Enterprise JavaBeans), busque y establezca el receptáculo de notificación en una tarea como se muestra en el ejemplo de código siguiente:
    TaskInfo taskInfo = ...
    Object o = new InitialContext().lookup("java:comp/env/ejb/NotificationSink");
    NotificationSinkHome home = (NotificationSinkHome )javax.rmi.PortableRemoteObject.narrow
    (o,NotificationSinkHome.class);
    taskInfo.setNotificationSink(home,TaskNotificationInfo.ALL_EVENTS);
    También puede utilizar la herramienta wsadmin para establecer el bean de sesión de llamada de retorno de receptáculo de notificación como se muestra en el siguiente ejemplo de script JACL:
    # Utilice el nombre JNDI global de NotificationSinkHome
    # Considere que ya se ha creado una TaskInfo...
    $taskInfo setNotificationSink “ejb/MyNotificationSink”
  3. Especifique la máscara de suceso. La máscara de suceso se especifica como un mapa de bits de un entero. Puede utilizar una máscara individual como TaskNotificationInfo.CREATED para recibir sucesos específicos, TaskNotificationInfo.ALL_EVENTS para recibir todos los sucesos o una combinación de sucesos específicos. Si utiliza Java™, el script podría tener el aspecto del ejemplo siguiente:
    int eventMask = TaskNotificationInfo.FIRED | TaskNotificationInfo.COMPLETE;
    taskInfo.setNotificationSink(home,eventMask);
    Si utiliza JACL, el script podría tener el aspecto del ejemplo siguiente:
    # Establezca la máscara de suceso según dos constantes de suceso.
    set eventmask [expr [java::field com.ibm.websphere.scheduler.TaskNotificationInfo FIRED] +
     [java::field com.ibm.websphere.scheduler.TaskNotificationInfo COMPLETE]]
    
    # Establezca el receptáculo de notificación según el nombre JNDI global Y
    la máscara de suceso.
    # Nota: es necesario utilizar aquí toda la signatura de método porque 
    # el resolutor de métodos no puede detectar siempre el método correcto.
    $taskInfo {setNotificationSink String int} "ejb/MyNotificationSink" $eventmask

Resultados

Ahora, un bean de receptáculo de notificación se establece en un objeto TaskInfo y puede enviarse ahora a un planificador mediante el método de creación.

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_usenotificationsink
File name: tsch_usenotificationsink.html