jueves, 14 de julio de 2011

Herramientas de Notificación Parte II: Alert Framework


Bueno en esta segunda entrega sobre notificaciones vamos a ver el “Alert Framework”. Si no les gusto las notificaciones por medio de los FEEDS por las limitaciones que estos presentan, como son:
 
  • Tener que utilizar un software adicional para poder utilizarlo (el FeedReader) o
  • que para usarlo nuestra aplicación debe estar publicada en internet si queremos que estas notificaciones no lleguen a cualquier sitio, sino solo nos servirán dentro de la red donde se encuentre instalada la aplicación.

El “Alert Framework” nos permite generar alertas a partir de un Query de la misma forma en que lo hacen los FEEDS, pero utilizando el correo electrónico, con esto superamos las limitantes anteriormente mencionadas.

Digamos que tenemos el mismo ejemplo que utilizamos con los FEEDS, el administrados de PEOPLESOFT de la organización desea recibir alertas cada vez que es creado o modificado un usuario dentro del aplicativo.

Lo primero que tenemos que hacer es crear el Query que vamos a utilizar. Para los FEEDS utilizamos el Query

SELECT A.OPRID,
                 A.OPRDEFNDESC,
                 TO_CHAR(CAST((A.LASTUPDDTTM) AS TIMESTAMP),'YYYY-MM-DD-HH24.MI.SS.FF')
  FROM PSOPRDEFN A
Así como está el Query no nos sirve para utilizarlo dentro del “Alert Framework” debido a lo siguiente:  
  • El “Alert Framework” genera alertas para cada uno de los registros que retorne el Query, no como los FEEDS en los cuales el FeddReader se encargaba de identificar que alertas ya habían sido generadas y genera solo las faltanes.
  • También es necesario informarle al ”Alert Framework” quien es el destinatario de la alertar, con los FEEDS el destinatario era aquel que se suscribía al FEED.

Para solucionar los anteriores inconvenientes vamos a modificar nuestro Query de la siguiente forma:

Primero vamos a agregar el rol PE_ALERT, el cual lo asignaremos a todos los usuarios a los que queramos notificarles.

También agregaremos una condición al Query para que solo nos traiga los usuarios modificados en la última hora.

Después de las anteriores modificaciones el Query nos queda de la siguiente forma:

SELECT A.OPRID, A.OPRDEFNDESC, TO_CHAR(CAST((A.LASTUPDDTTM) AS TIMESTAMP),'YYYY-MM-DD-HH24.MI.SS.FF'), C.EMAILID
  FROM PSOPRDEFN A, PSROLEUSER_VW B, PSUSEREMAIL C
  WHERE  ( B.ROLENAME = 'PE_ALERT'
     AND B.OPRID = C.OPRID
     AND C.PRIMARY_EMAIL = 'Y'
     AND ROUND((CAST(( CAST(SYSTIMESTAMP AS TIMESTAMP)) AS DATE) - CAST((A.LASTUPDDTTM) AS DATE)) * 1440, 0) < 60 )
La Expresión ROUND((CAST(( CAST(SYSTIMESTAMP AS TIMESTAMP)) AS DATE) - CAST((A.LASTUPDDTTM) AS DATE)) * 1440, 0) se forma a partir del MetaSql %datetimediff(A.LASTUPDDTTM, %Currentdatetimein).
Ya con este Query podemos empezar a crear nuestra alerta. Lo primero que tenemos que hacer es definir una notificación, para esto vamos a Inicio – Componentes de Empresa – Eventos y Notificaciones – Entorno de Notificaciones – Registro de Notificaciones, ahí agregamos un nuevo registro que quede de la siguiente forma:




Antes de crear nuestra alerta debemos definir el mensaje que queremos que se envíe en el correo electrónico, para eso creamos un registro en el catálogo de mensajes con el mensaje: “Se modificó o se agregó el usuario %1”

Después de que definamos nuestra notificación vamos a crear nuestra alerta. Esto lo hacemos por Inicio – Componentes de Empresa – Eventos y Notificaciones – Avisos – Definición de Alertas.
Utilizando la consulta PS_USER, el proceso PS_USERS y la categoría NOTIFICACIONES:






En la pestaña URL definimos los parámetros que el Framework va a utilizar para generar una URL para acceder al componente de perfiles de usuarios al usuario que fue creado o modificado, directamente desde el correo sin necesidad de hacer una búsqueda manual:

Nota: Para que este ejemplo funcione correctamente recomiendo realizarlo con el usuario VP1, adicionalmente para que el Link de Detalle de la Transacción funcione, debemos cambiar el nodo del objeto de portal PT_USERMAINT_GBL de LOCAL_NODE a ERP, esto lo puedes realizar por Inicio – Peopletools – Portal – Estructura y Contenido, y ahí se busca la ruta para encontrar el objeto.




En el link de claves de búsqueda, mapeamos las claves del componente de Perfiles de Usuario, en este caso solo el OPRID para que se acceda directamente al usuario solicitado. 



En la pestaña Mensaje colocamos los datos de la entrada que agregamos en el catálogo de mensaje y el campo de la consulta que trae el correo electrónico al cual queremos notificar.





En el link Parámetros Mensaje ingresamos para mapear los datos de la consulta con los parámetros que tiene nuestro mensaje, en este caso solo %1 que es el usuario que se modificó.
 




Con esta definición ya podemos poner a trabajar nuestro proceso de alertas.
Nota: Hay que verificar que se haya configurado el SMTP en el process scheduler y listo, podemos ejecutar el proceso.
Para ejecutar el proceso de alertas vamos a Inicio – Componentes de Empresa – Eventos y Notificaciones – Avisos – Ejecución de Alertas. Sí queremos que esto se haga automático debemos programar una recurrencia para el proceso y ya.

Para hacer la prueba podemos modificar cualquier usurario, ejecutar el proceso y verificar si se generó la alerta.


El “Alert Framework” deja registro de todas las notificaciones realizadas, este registro se puede ver por Inicio – Componente de Empresa – Eventos y Notificaciones – Entornos y Notificaciones – Consola de Notificaciones. En la ruta anterior buscamos todas las notificaciones del proceso PS_USERS. Ahí encontramos el detalle del proceso, incluso los correos electrónicos que fueron notificados. Si damos clic en detalles de la transacción el sistema nos llevará al componente de Perfiles de Usuario, al usuario que se modificó.

Adicionalmente el Alert Framework nos permite generar Alertas a la lista de trabajo de los usuarios, para lograr este comportamiento debemos ir a la ruta Inicio – Componente de Empresa – Eventos y Notificaciones – Entorno  de Notificaciones – Modific Sistema Notificaciones y agregar un registro como el siguiente:



Después de agregar este registro, el sistema además de enviar el correo, también  generará una entrada en la lista de trabajo de los miembros del rol PE_ALERT.
Nota: Para que el sistema agregué correctamente la entrada a la lista de trabajo debemos insertar el siguiente registro (Esto solo si no existe un registro previamente):

INSERT INTO PSWLINSTMAX VALUES ('EOEN_WL_NOTIFY','EOEN_WL_ROUTE' ,'ROUTE' ,'Error and Warning Notification', 1).
Bueno espero que les haya gustado está entrada, que puedan utilizar está información y que si tienen alguna duda me cuentan y vemos si yo también tengo la misma duda.

1 comentario:

  1. USTED ES UN MAESTRO DOCTOR, GRACIAS POR COMPARTIR ESTOS TUTOS !!! OJALA SIGA SUBIENDO MAS !!! SALUDOS !!!

    ResponderEliminar