Diferencia entre revisiones de «Alarmas y procesos»

De WikiDgp21
Saltar a: navegación, buscar
(Crear una nueva alarma)
(Crear una nueva alarma)
Línea 32: Línea 32:
 
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''.
 
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.
+
Para lo que sigue hace falta conocer un poco la estructura de la base de datos y saber en que tablas se encuentra la información que se busca, así que sería recomendable consultar al administrador de la base de datos.
 +
 
 +
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 crearemos una alarma para comprobar si hay pedidos de compras no servidos desde cuya fecha de entrega haya transcurrido uno o mas días. La sentencia es 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 43:
 
     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> 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.
+
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 a todos los destinatarios de la alarma.
  
 
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)'').
Línea 52: Línea 54:
 
*'''('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''.
 
*'''('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.
 
*'''||:''' Utilizado para crear el cuerpo del mensaje. Concatena un texto con el valor de una variable para formar un único texto.
 +
  
  
 
<sup>1</sup> Al guardar desaparecerán de la pantalla, pero el salto de linea será interpretado igual.
 
<sup>1</sup> Al guardar desaparecerán de la pantalla, pero el salto de linea será interpretado igual.

Revisión del 09:05 8 jul 2009

Alarmas y procesos - dgen050

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 Boto 006.png 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.

Para lo que sigue hace falta conocer un poco la estructura de la base de datos y saber en que tablas se encuentra la información que se busca, así que sería recomendable consultar al administrador de la base de datos.

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 crearemos una alarma para comprobar si hay pedidos de compras no servidos desde cuya fecha de entrega haya transcurrido uno o mas días. La sentencia es 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 a todos los destinatarios de la alarma.

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.