Diferencia entre revisiones de «Alarmas y procesos»
(→Crear una nueva alarma) |
|||
Línea 30: | Línea 30: | ||
== Crear una nueva alarma == | == Crear una nueva alarma == | ||
− | Como en toda la aplicación, el primer paso para crear una alarma nueva será pulsar el botón [[Imagen:boto_006.png|21px]] ''nuevo'' y a continuación | + | Como en toda la aplicación, el primer paso para crear una alarma nueva será pulsar el botón [[Imagen:boto_006.png|21px]] ''nuevo'' y a continuación rellenar los campos con los datos necesarios según [[Alarmas_y_procesos#Campos|las descripciones de cada campo]]. Una vez terminada la creación, añadiremos los destinatarios con el botón ''Destinatarios''. |
− | + | El campo ''Sentencia SQL'' requiere de una instrucción valida que ejecutar cada vez que se active la alarma. Para explicar como crear una, seguiremos un ejemplo en el que querremos crear una alarma para comprobar si hay pedidos de compras no servidos desde cuya fecha de entrega haya transcurrido un o mas días. Deberíamos introducir algo similar a esto. | |
select E'Este pedido ya debería haber sido servido. \r\n | select E'Este pedido ya debería haber sido servido. \r\n | ||
Línea 41: | Línea 41: | ||
and (fechaent < now()- ('1 day'::interval)) | and (fechaent < now()- ('1 day'::interval)) | ||
− | Esta sentencia creará un mensaje con el texto indicado entre comillas y substituyendo \r\n<sup>1</sup> | + | Esta sentencia creará un mensaje con el texto indicado entre comillas y substituyendo \r\n<sup>1</sup> y las variables como ''ejer'' o ''cliente'', por un salto de línea y por sus valores en la tabla de la base de datos respectivamente. Por cada entrada encontrada que cumpla las condiciones indicadas después de ''where'' enviará un mensaje. |
En nuestro ejemplo tendremos indicar que los pedidos aun no han sido servidos (''servido != 'S' ''), que son de tipo compras (''tipped = 'C' '') y ademas, que haya transcurrido un día desde la fecha de entrega (''fechaent < now() - ('1 day'::interval)''). | En nuestro ejemplo tendremos indicar que los pedidos aun no han sido servidos (''servido != 'S' ''), que son de tipo compras (''tipped = 'C' '') y ademas, que haya transcurrido un día desde la fecha de entrega (''fechaent < now() - ('1 day'::interval)''). |
Revisión del 12:58 7 jul 2009
En esta pantalla podremos gestionar todas las alarmas que hayamos definido en nuestro sistema o crear algunas nuevas. Una alarma es una acción que se ejecutará cada cierto tiempo y comprobará lo que se le pida e informará a los destinatarios indicados de lo que sea necesario, dependiendo de su tipo puede informar cuando se encuentra algún error o si ha encontrado lo que se ha pedido.
Por ejemplo, podemos tener una alarma que nos avise si hay algún pedido pendiente de servir desde hace mas de tres días, si hay efectos pendientes de remesar apunto de alcanzar su fecha de vencimiento o se pueden efectuar unas revisiones periódicas de la base de datos y que nos informe si no se han realizado correctamente.
Campos
Doid
Código identificador de la alarma.
Descripción
Nombre o pequeña descripción de la alarma.
Descripción ampliada
Descripción ampliada para indicar con mayor precisión que comprobará la alarma.
Última ejecución
Fecha y hora en la que se ha realizado la ultima ejecución de la alarma.
Hora de ejecución
Hora en la que se deberá ejecutar la alarma por primera vez.
Periodicidad (h)
Número de horas cada cuanto se ejecutará la alarma.
Tipo de alarma
Indica el tipo de la alarma a ejecutar mediante un carácter.
Destinatarios
Este botón abre una nueva ventana en la que se pueden añadir o quitar destinatarios a la alarma seleccionada. Los destinatarios se pueden elegir de entre todos los usuarios de la aplicación.
Sentencia SQL
En este campo va la sentencia SQL que hará las comprobaciones para saber si tiene que enviar mensajes y su contenido. Para saber mas sobre como escribir este campo consultar la sección Crear una nueva alarma.
Tipos de alarma
- Alarma (A): Este tipo de alarmas avisan a los destinatarios cuando encuentran algún resultado y envían un mensaje a cada uno de ellos por cada anomalía encontrada. Por ejemplo, si una alarma busca los pedidos pendientes de servir, se enviará una notificación por cada pedido que cumpla las condiciones que tendrá la información necesaria.
- Proceso(P): Este tipo de alarmas solo avisan en caso de que haya habido algún fallo en la sentencia a comprobar. Es decir, si simplemente hiciera unas comprobaciones rutinarias de la base de datos, en caso de no poder ejecutarse correctamente se enviaría un mensaje a los destinatarios informándoles.
Crear una nueva alarma
Como en toda la aplicación, el primer paso para crear una alarma nueva será pulsar el botón nuevo y a continuación rellenar los campos con los datos necesarios según las descripciones de cada campo. Una vez terminada la creación, añadiremos los destinatarios con el botón Destinatarios.
El campo Sentencia SQL requiere de una instrucción valida que ejecutar cada vez que se active la alarma. Para explicar como crear una, seguiremos un ejemplo en el que querremos crear una alarma para comprobar si hay pedidos de compras no servidos desde cuya fecha de entrega haya transcurrido un o mas días. Deberíamos introducir algo similar a esto.
select E'Este pedido ya debería haber sido servido. \r\n Ejercicio: '||ejer|| ' Número de pedido: '||num|| E'\r\n Cliente: ' || cliente || ' - ' ||nombre|| E'\r\n Producto: '||cod_art||' - '||desc1|| E'\r\n Fecha de envio: '||fechaent from vistped where servido != 'S' and tipped = 'C' and (fechaent < now()- ('1 day'::interval))
Esta sentencia creará un mensaje con el texto indicado entre comillas y substituyendo \r\n1 y las variables como ejer o cliente, por un salto de línea y por sus valores en la tabla de la base de datos respectivamente. Por cada entrada encontrada que cumpla las condiciones indicadas después de where enviará un mensaje.
En nuestro ejemplo tendremos indicar que los pedidos aun no han sido servidos (servido != 'S' ), que son de tipo compras (tipped = 'C' ) y ademas, que haya transcurrido un día desde la fecha de entrega (fechaent < now() - ('1 day'::interval)).
Entre el cuerpo del mensaje y las condiciones nos encontramos con que pone from vistped, aquí lo que se indica es de donde se extrae la información, en este caso sera de la tabla de pedidos Vistped.
Hay algunos elementos en la sentencia que no han sido explicados y serán necesarios para la creación de las alarmas.
- E: Antes abrir comillas ( ' ) para poner texto se pone una letra E para que interprete \r\n como un salto de linea.
- now(): Función SQL para obtener la fecha y hora actual.
- ('1 day'::interval): Expresa un intervalo de tiempo de un día. Si quisiéramos hacer las comprobaciones para varios días solo habría que cambiar el número o si nos interesara que fuera en una semana, se puede poner week en lugar de day.
- ||: Utilizado para crear el cuerpo del mensaje. Concatena un texto con el valor de una variable para formar un único texto.
1 Al guardar desaparecerán de la pantalla, pero el salto de linea será interpretado igual.