Elemento activationByGroupingKey

El elemento <activationByGroupingKey> contiene elementos que especifican los sucesos que pueden activar y desactivar una instancia de regla definida por el elemento <groupingKey>.Como el elemento <groupingKey> no es válido para las reglas de filtro y de temporizador, el elemento <activationByGroupingKey> no se aplica a estas reglas.

Detalles

La función que proporciona el elemento <activationByGroupingKey> se utiliza en reglas donde se define una clave de agrupación. Le permite controlar la activación y desactivación de las instancias de reglas basándose en la clave de agrupación. Cuando codifica un elemento <activationByGroupingKey>, cada instancia de regla puede ser activada o desactivada individualmente según las condiciones <activateOnEvent> y <deactivateOnEvent> dentro de <activationByGroupingKey>.

El siguiente ejemplo ilustra el uso del elemento <activationByGroupingKey> dentro de una regla de cálculo.

<computationRule name="StockReporter">
	<variable dataType="java.lang.Integer" name="totalSharesTraded">
<varInitializer expressionLanguage="java">
			return new Integer(0);
		</varInitializer>
	</variable>

	<activationInterval>
		<activationTime>
			<start>
				<inactiveWhenLoaded/>
			</start>
		</activationTime>
		<activationByGroupingKey>
			<activateOnEvent>
				<eventType type="StartReporting"/>
			</activateOnEvent>
		</activationByGroupingKey>
	</activationInterval>

	<eventSelector>
		<eventType type="StockSharesTraded"/>
	</eventSelector>

	<groupingKey>
		<attributeName>stockSymbol</attributeName>
	</groupingKey>

	<computeFunction assignTo="totalSharesTraded" expressionLanguage="java">
		return new Integer(act_lib.getIntVariable("totalSharesTraded")
 											+ act_event.getIntAttribute("sharesTraded"));
	</computeFunction>

	<timeWindow>
		<timeInterval unit="ISO-8601" duration="PT10M"/>
	</timeWindow>

	<onTimeWindowComplete>
	<action expressionLanguage="java">
			StockReport.createReport(act_eventList.get(0).getStringAttribute("stockSymbol"),
 															act_lib.getIntVariable("totalSharesTraded"));
		</action>
	</onTimeWindowComplete>
</computationRule>

Atributos

<activationByGroupingKey> no tiene atributos.

Contenido en

<activationByGroupingKey> está contenido en el siguiente elemento:

Contiene

<activationByGroupingKey> contiene los siguientes elementos.

Los elementos deben ser codificados en el orden que se muestra. Si un elemento es opcional, no es necesario que se codifique, pero todos los elementos que se codifiquen deben seguir el orden correcto.

Tabla 1. Elementos contenidos en el elemento <activationByGroupingKey>
Elemento ¿Obligatorio u opcional?
<activateOnEvent> Opcional. Se permiten 0 o 1 ocurrencias.
<deactivateOnEvent> Opcional. Se permiten 0 o 1 ocurrencias.

Relación entre los elementos <activationInterval> y <activationByGroupingKey>

Los elementos <activateOnEvent> y <deactivateOnEvent> están contenidos en estos dos elementos:
  • <activationInterval>
  • <activationByGroupingKey>, que a su vez está contenido en <activationInterval>

El comportamiento de una regla puede variar según la actividad de la regla y las interacciones entre las definiciones de <activateOnEvent> y <deactivateOnEvent> dentro de los elementos <activationInterval> y <activationByGroupingKey>. El siguiente ejemplo ilustra cómo pueden interactuar estas definiciones.

En este ejemplo, se ha definido una regla de duplicación para suprimir sucesos procedentes de sistemas que están en modo de mantenimiento y proporcionar, al final del periodo de mantenimiento, un informe de resumen del número de sucesos que se han suprimido.

Por defecto, una regla en la que se define una clave de agrupación permite procesar todos los valores de la clave de agrupación. Por lo tanto, cuando los sucesos cumplen los criterios de selección para la regla, todas las instancias de regla están activas y preparadas para aceptar estos sucesos según algún valor de la clave de agrupación. El intervalo de activación para la regla es el mismo que sería si la regla no tuviera una clave de agrupación porque, esencialmente, todos los sucesos que cumplen los criterios de selección para la regla se procesan.

En el siguiente ejemplo, la clave de agrupación es hostname, y las definiciones dentro del elemento <activationInterval> especifican las siguientes acciones:
  1. Activar todas las instancias de regla cuando se reciba un suceso del tipo StartMaintenanceModeAllHosts.
  2. Desactivar todas las instancias de regla, bien al cabo de 2 horas, o bien cuando se reciba un suceso del tipo StopMaintenanceModeAllHosts.
<duplicateRule name="Maintenance_Supression">
  	<activationInterval>
    		<activationTime>
      			<start>
        				<inactiveWhenLoaded/>
      			</start>
      <stop>
        <after duration="PT2H" unit="ISO-8601"/>
      </stop>
    		</activationTime>
    <activateOnEvent>
      <eventType type="StartMaintenanceModeAllHosts"/>
    </activateOnEvent>
    <deactivateOnEvent>
      <eventType type="StopMaintenanceModeAllHosts"/>
    </deactivateOnEvent>
  	</activationInterval>
  <groupingKey missingAttributeHandling="ignoreEvent">
    <attributeName>hostname</attributeName>
  	</groupingKey>
  	<timeWindow>
    <runUntilDeactivated/>
  	</timeWindow>
  <onDetection>
    <action expressionLanguage="java" name="DropEvent">
      <![CDATA[act_lib.exitRuleSet();]]>
    	</action>
  </onDetection>  	<onTimeWindowComplete>
    <action expressionLanguage="java" name="CreateSummaryOfSupressedEvents">
      <![CDATA[Helper.createSummaryEvent("MaintenanceSummary", act_eventList, act_lib);]]>
    	</action>
  	</onTimeWindowComplete>
</duplicateRule>

En ciertas situaciones, puede desear controlar qué instancias de regla se activan y cuándo. Para estas situaciones, debe codificar el elemento <activationByGroupingKey>.

El siguiente ejemplo amplía el ejemplo anterior e ilustra cómo puede utilizar el valor de la clave de agrupación para seleccionar qué instancias de regla se permite que se procesen. Las definiciones dentro del elemento <activationByGroupingKey> especifican las siguientes acciones:
  1. Permitir que se procesen las instancias de regla para unos nombres de sistema principal específicos cuando se reciban sucesos del tipo StartMaintenanceMode procedentes de esos nombres de sistema principal.
  2. Desactivar estas instancias de regla, bien al cabo de 2 horas, o bien cuando se reciba un suceso del tipo StopMaintenanceMode para el nombre de sistema pricipal respectivo.
    <activationByGroupingKey>
      <activateOnEvent>
        <eventType type="StartMaintenanceMode"/>
        <stopAfter duration="PT2H" unit="ISO-8601"/>
      </activateOnEvent>
      <deactivateOnEvent>
        <eventType type="StopMaintenanceMode"/>
      </deactivateOnEvent>
    		</activationByGroupingKey>
Las siguientes sentencias resumen lo que ocurre cuando codifica el elemento <activationByGroupingKey>:
  • Cuando se codifica el elemento <activateOnEvent> dentro del elemento <activationByGroupingKey>, sólo se permite el proceso de los sucesos que comparten el valor de la clave de agrupación del suceso que ha cumplido la condición de <activationByGroupingKey> <activateOnEvent>.
  • Cuando se codifica el elemento <deactivateOnEvent> dentro del elemento <activationByGroupingKey>, no se permite el proceso de los sucesos que comparten el valor de la clave de agrupación del suceso que ha cumplido la condición de <activationByGroupingKey> <deactivateOnEvent>.

Efecto de las diferentes definiciones de activación y desactivación sobre el estado de una regla

Tabla 2 y Tabla 3 muestran cómo las diferentes definiciones de activación y desactivación afectan al estado de una regla. En las siguientes tablas se utilizan las siguientes convenciones:
  • A es un suceso activador.
  • En la notación "A[x], " x representa el valor de la clave de agrupación. Por ejemplo, A[1] es un suceso activador con un valor de clave de agrupación de 1.
  • D es un suceso desactivador.
  • En la notación "D[x], " x representa el valor de la clave de agrupación. Por ejemplo, D[1] es un suceso desactivador con un valor de clave de agrupación de 1.
Tabla 2. Cambios de estado de las reglas según las diferentes definiciones de activación
Estado inicial de la regla El estado de la regla se ve potencialmente afectado por Estado final de la regla
Inactiva Tiempo/Hora definido/a en <activationInterval> <activationTime> <start>
  1. Se activa la regla.
  2. Se ejecutan las acciones de <onActivation>.
  3. Se permiten todos los valores de la clave de agrupación.
método activate()
Suceso A, definido en <activationInterval> <activateOnEvent>
Suceso A[1], definido en <activationByGroupingKey> <activateOnEvent> (sin <stopAfter>)
  1. Se activa la regla.
  2. Se ejecutan las acciones de <onActivation>.
  3. Sólo se permite el valor de clave de agrupación 1. Una vez la instancia de regla coincide con el patrón de regla, el valor de clave de agrupación 1 ya no se permite.
Suceso A[2], definido en <activateOnEvent> (con <stopAfter>)
  1. Se activa la regla.
  2. Se ejecutan las acciones de <onActivation>.
  3. Sólo se permite el valor de clave de agrupación 2, y sólo para la duración especificada por el elemento <stopAfter>. La instancia de regla puede coincidir varias veces con el patrón de regla durante este tiempo.
  • Activa
  • Se permiten todos los valores de la clave de agrupación
Tiempo/Hora definido/a en <activationInterval> <activationTime> <start> No se ha producido ningún cambio en el estado de la regla. Es el mismo que el estado inicial.
método activate()
Suceso A, definido en <activationInterval> <activateOnEvent>
Suceso A[1], definido en <activationByGroupingKey> <activateOnEvent> (sin <stopAfter>)
Suceso A[2], definido en <activateOnEvent> (con <stopAfter>)
  • Activa
  • Se permiten los valores de clave de agrupación que hayan desencadenado instancias de reglas según las definiciones de <activationByGroupingKey> <activateOnEvent>
Tiempo/Hora definido/a en <activationInterval> <activationTime> <start> No se ha producido ningún cambio en el estado de la regla. Es el mismo que el estado inicial.
método activate()
Suceso A, definido en <activationInterval> <activateOnEvent> Se permiten todos los valores de la clave de agrupación.
Suceso A[1], definido en <activationByGroupingKey> <activateOnEvent> (sin <stopAfter>)
  • Ahora se permite el valor de clave de agrupación 1, además de los valores de clave de agrupación que ya se permitían antes.
  • Una vez la instancia de regla coincide con el patrón de regla, el valor de clave de agrupación 1 ya no se permite.
Suceso A[2], definido en <activateOnEvent> (con <stopAfter>)
  • Ahora se permite el valor de clave de agrupación 2, además de los valores de clave de agrupación que ya se permitían antes.
  • Este valor se permite sólo para la duración especificada por el elemento <stopAfter>.
  • La instancia de regla puede coincidir varias veces con el patrón de regla durante este tiempo.
  • Activa
  • Se permiten todos los valores de la clave de agrupación excepto los que según la definición de <activationByGroupingKey> <deactivateOnEvent> no se permiten.
Tiempo/Hora definido/a en <activationInterval> <activationTime> <start> No se ha producido ningún cambio en el estado de la regla. Es el mismo que el estado inicial.
método activate()
Suceso A, definido en <activationInterval> <activateOnEvent> Se permiten todos los valores de la clave de agrupación.
Suceso A[1], definido en <activationByGroupingKey> <activateOnEvent> (sin <stopAfter>) Ahora se permite el valor de clave de agrupación 1, además de los valores de clave de agrupación que ya se permitían antes.
Suceso A[2], definido en <activateOnEvent> (con <stopAfter>) Ahora se permite el valor de clave de agrupación 2, además de los valores de clave de agrupación que ya se permitían antes.
Tabla 3. Cambios de estado de las reglas según las diferentes definiciones de desactivación
Estado inicial de la regla El estado de la regla se ve potencialmente afectado por Estado final de la regla
Inactiva Tiempo/Hora definido/a en <activationInterval> <activationTime> <stop> No se ha producido ningún cambio en el estado de la regla. Es el mismo que el estado inicial.
método deactivate()
Suceso D, definido en <activationInterval> <deactivateOnEvent>
Suceso D[1], definido en <activationByGroupingKey> <deactivateOnEvent>
La duración definida en <activationByGroupingKey> <activateOnEvent> <stopAfter> termina para el suceso A[2]
  • Activa
  • Se permiten todos los valores de la clave de agrupación
Tiempo/Hora definido/a en <activationInterval> <activationTime> <stop>
  1. Se desactivan todas las instancias de regla.
  2. Se ejecutan las acciones de <onDeactivation>.
  3. Se desactiva la regla.
método deactivate()
Suceso D, definido en <activationInterval> <deactivateOnEvent>
Suceso D[1], definido en <activationByGroupingKey> <deactivateOnEvent>
  • Ya no se permite el valor de clave de agrupación 1.
  • Si la instancia de regla con el valor de clave de agrupación 1 está activa, se desactiva.
La duración definida en <activationByGroupingKey> <activateOnEvent> <stopAfter> termina para el suceso A[2] Se desactiva la instancia de regla con el valor de clave de agrupación 2.
  • Activa
  • Se permiten los valores de clave de agrupación que hayan desencadenado instancias de reglas según las definiciones de <activationByGroupingKey> <activateOnEvent>
Tiempo/Hora definido/a en <activationInterval> <activationTime> <stop>
  1. Se desactivan todas las instancias de regla.
  2. Se ejecutan las acciones de <onDeactivation>.
  3. Se desactiva la regla.
método deactivate()
Suceso D, definido en <activationInterval> <deactivateOnEvent>
Suceso D[1], definido en <activationByGroupingKey> <deactivateOnEvent>
  • Ya no se permite el valor de clave de agrupación 1.
  • Si la instancia de regla con el valor de clave de agrupación 1 está activa, se desactiva.
La duración definida en <activationByGroupingKey> <activateOnEvent> <stopAfter> termina para el suceso A[2]
  • Ya no se permite el valor de clave de agrupación 2.
  • Se desactiva la instancia de regla con el valor de clave de agrupación 2.
  • Activa
  • Se permiten todos los valores de la clave de agrupación excepto los que según la definición de <activationByGroupingKey> <deactivateOnEvent> no se permiten.
Tiempo/Hora definido/a en <activationInterval> <activationTime> <stop>
  1. Se desactivan todas las instancias de regla.
  2. Se ejecutan las acciones de <onDeactivation>.
  3. Se desactiva la regla.
método deactivate()
Suceso D, definido en <activationInterval> <deactivateOnEvent>
Suceso D[1], definido en <activationByGroupingKey> <deactivateOnEvent>
  • Ya no se permite el valor de clave de agrupación 1.
  • Si la instancia de regla con el valor de clave de agrupación 1 está activa, se desactiva.
La duración definida en <activationByGroupingKey> <activateOnEvent> <stopAfter> termina para el suceso A[2] Se desactiva la instancia de regla con el valor de clave de agrupación 2.