Patrón de duplicación

Las reglas de duplicación las define el patrón de duplicación. Este patrón cuenta el segundo suceso y los sucesos subsiguientes aceptados dentro del intervalo de tiempo especificado, pero se salta el proceso del conjunto de reglas para estos sucesos. Es una regla con estado.

Visión general

El patrón de duplicación se utiliza normalmente para aislar sucesos similares (duplicados) durante un periodo de tiempo. Un suceso duplicado es similar en algo a un suceso anterior, pero no es necesariamente una copia exacta de ese suceso. Los sucesos se consideran duplicados sencillamente si cumplen los criterios de selección de sucesos para la regla. El periodo de tiempo se indica mediante una ventana de tiempo obligatoria, según define el elemento <timeWindow> en el lenguaje de reglas.

Condiciones bajo las que se ejecuta la respuesta de la regla

Con el patrón de duplicación, la respuesta de la regla se ejecuta en los siguientes momentos:
  • Cuando se detecta el primer suceso, según define el elemento <onDetection>.
  • Cuando se procesa cada suceso duplicado, según define el elemento <onNextEvent>.
  • Cuando la ventana de tiempo está completa, según define el elemento <onTimeWindowComplete>.

Cuando el primer suceso desencadena la acción <onDetection> aunque no se hayan recibido sucesos duplicados. La razón de este comportamiento es que puede desear reenviar el primer suceso y saltarse el proceso del conjunto de reglas para los sucesos duplicados. En tal caso, pude añadir una acción de respuesta de la regla que reenvíe el primer suceso cuando se desencadena la acción <onDetection> para la regla.

El proceso predeterminado para los sucesos duplicados (el segundo y los subsiguientes sucesos) es contar un suceso duplicado pero saltarse el proceso del conjunto de reglas para un suceso duplicado. Si desea realizar acciones adicionales sobre un suceso duplicado, puede definir explícitamente una acción <onNextEvent>. Por ejemplo, en ciertos casos, el suceso duplicado representa un suceso que puede estar ya registrado en una base de datos o en algún otro repositorio. Por lo tanto, puede desear codificar una acción <onNextEvent> para eliminar el suceso duplicado de estas otras ubicaciones.

Se puede utilizar una acción <onTimeWindowComplete> para crear un registro de resumen para todos los sucesos duplicados que incluya el número de duplicados que se han procesado.

Ejemplo de utilización de este patrón de regla

Supongamos que continuamente aparece un mensaje de "Denegación de servicio" para el mismo tipo de recurso (un supervisor de seguridad). Esto indica una posible violación de la seguridad. Un ejemplo de utilización del patrón de duplicación sería una regla que hiciera lo siguiente:
Después de que aparezca un mensaje de "Denegación de servicio" en el supervisor de seguridad, los duplicados de ese suceso que tengan lugar en un periodo de 30 segundos se cuentan pero no se envían a la consola del operador. Además, al final del periodo de 30 segundos, la regla genera un suceso que indica el número de mensajes de "Denegación de servicio" que se han producido durante ese periodo de tiempo.
Referencia relacionada
Resumen de la regla de duplicación