Elément activationByGroupingKey

Il contient des éléments qui spécifient les événements pouvant activer et désactiver une instance de règle définie par <groupingKey>. L'élément <groupingKey> n'étant pas valide pour les règles temporisées et de filtrage, l'élément <activationByGroupingKey> ne s'applique pas à ces règles.

Détails

La fonction offerte par l'élément <activationByGroupingKey> s'applique aux règles dans lesquelles vous définissez une clé de groupement. Elle vous permet de contrôler l'activation et la désactivation des instances de règle en fonction de cette clé de groupement. Lorsque vous codez l'élément <activationByGroupingKey>, chaque instance de règle peut être activée ou désactivée individuellement, en fonction des conditions <activateOnEvent> et <deactivateOnEvent> contenues dans <activationByGroupingKey>.

L'exemple suivant illustre l'utilisation de l'élément <activationByGroupingKey> dans une règle de calcul.

<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>

Attributs

<activationByGroupingKey> ne possède aucun attribut.

Contenu dans

<activationByGroupingKey> est contenu dans l'élément suivant :

Contient

<activationByGroupingKey> contient les éléments suivants.

Ces éléments doivent être codés dans l'ordre indiqué. Il n'est pas nécessaire de coder les éléments facultatifs, mais tous les éléments codés doivent être placés dans le bon ordre.

Tableau 1. Eléments contenus dans l'élément <activationByGroupingKey>
Elément Obligatoire ou facultatif ?
<activateOnEvent> Facultatif. Le nombre d'occurrences autorisé est de 0 ou 1.
<deactivateOnEvent> Facultatif. Le nombre d'occurrences autorisé est de 0 ou 1.

Relations entre les éléments <activationInterval> et <activationByGroupingKey>

Les éléments <activateOnEvent> et <deactivateOnEvent> sont contenus dans ces deux éléments :
  • <activationInterval>
  • <activationByGroupingKey>, qui est lui-même contenu dans <activationInterval>

Le comportement d'une règle peut varier d'une part selon son activité en cours, et d'autre part selon les interactions entre les définitions de <activateOnEvent> et de <deactivateOnEvent> dans les éléments <activationInterval> et <activationByGroupingKey>. L'exemple suivant illustre les différentes interactions possibles entre ces définitions.

Dans cet exemple, une règle de duplication est définie afin de supprimer des événements sur des systèmes qui sont en mode maintenance, puis de créer, à la fin de la maintenance, un état récapitulatif du nombre d'événements supprimés.

Par défaut, une règle contenant une clé de groupement définie autorise le traitement de toutes les valeurs de clé de groupement. Par conséquent, lorsque des événements répondent aux critères définis pour la règle, toutes les instances de règle sont actives et prêtes à accepter ces événements selon toutes les valeurs de clé de groupement. L'intervalle d'activation de la règle est le même que celui qui aurait prévalu s'il n'y avait pas eu de clé de groupement. En effet, par essence, tous les événements qui répondent aux critères de sélection définis pour la règle sont traités.

Dans l'exemple suivant, la clé de groupement est hostname et les définitions contenues dans l'élément <activationInterval> spécifient les actions suivantes :
  1. Activer toutes les instances de règle lors de la réception d'un événement de type StartMaintenanceModeAllHosts.
  2. Désactiver toutes les instances de règle au bout de deux heures ou lors de la réception d'un événement de type 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>
  <igroupingKey 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>

Dans certaines situations, il se peut que vous souhaitiez décider des instances de règle particulières à activer et du moment de leur activation. Pour ces situations, vous devez coder l'élément <activationByGroupingKey>.

L'exemple suivant enrichit l'exemple précédent et illustre la manière dont vous pouvez utiliser la valeur de clé de groupement pour sélectionner les instances de règle à traiter. Les définitions contenues dans l'élément <activationByGroupingKey> spécifient les actions suivantes :
  1. Autoriser le traitement des instances de règle pour des noms d'hôte spécifiques lors de la réception d'événements de type StartMaintenanceMode pour ces noms d'hôte.
  2. Désactiver ces instances de règle après deux heures d'activation ou lors de la réception d'un événement de type StopMaintenanceMode pour le nom d'hôte concerné.
    <activationByGroupingKey>
      <activateOnEvent>
        <eventType type="StartMaintenanceMode"/>
        <stopAfter duration="PT2H" unit="ISO-8601"/>
      </activateOnEvent>
      <deactivateOnEvent>
        <eventType type="StopMaintenanceMode"/>
      </deactivateOnEvent>
    		</activationByGroupingKey>
Les affirmations suivantes résument ce qui se produit lorsque vous codez l'élément <activationByGroupingKey> :
  • Lorsque l'élément <activateOnEvent> est codé dans l'élément <activationByGroupingKey>, sont seuls autorisés à être traités les événements ayant la même valeur de clé de groupement que celle de l'événement qui répond à la condition <activationByGroupingKey> <activateOnEvent>.
  • Lorsque l'élément <deactivateOnEvent> est codé dans l'élément <activationByGroupingKey>, les événements dont la valeur de clé de groupement est la même que celle de l'événement qui répond à la condition <activationByGroupingKey> <deactivateOnEvent> ne sont pas autorisés à être traités.

Effet des différentes définitions d'activation et de désactivation sur l'état d'une règle

Les tableaux Tableau 2 et Tableau 3 montrent l'effet des différentes définitions d'activation et de désactivation sur l'état d'une règle. Ces tableaux utilisent les conventions suivantes :
  • A est un événement d'activation.
  • Dans la notation "A[x], " x représente la valeur de clé de groupement. Par exemple, A[1] est un événement d'activation dont la valeur de clé de groupement est 1.
  • D est un événement de désactivation.
  • Dans la notation "D[x], " x représente la valeur de clé de groupement. Par exemple, D[1] est un événement de désactivation dont la valeur de clé de groupement est 1.
Tableau 2. Changements d'état d'une règle en fonction des différentes définitions d'activation
Etat initial de la règle L'état de la règle est potentiellement affecté par Etat final de la règle
Inactif L'heure définie dans <activationInterval> <activationTime> <start>
  1. La règle est activée.
  2. Les actions <onActivation> sont exécutées.
  3. Toutes les valeurs de clé de groupement sont autorisées.
La méthode activate()
L'événement A, défini dans <activationInterval> <activateOnEvent>
L'événement A[1], défini dans <activationByGroupingKey> <activateOnEvent> (sans <stopAfter>)
  1. La règle est activée.
  2. Les actions <onActivation> sont exécutées.
  3. Seule la valeur de clé de groupement 1 est autorisée. Lorsque cette instance de règle correspond au modèle de règle, la valeur de clé de groupement 1 n'est plus autorisée.
L'événement A[2], défini dans <activateOnEvent> (avec <stopAfter>)
  1. La règle est activée.
  2. Les actions <onActivation> sont exécutées.
  3. Seule la valeur de clé de groupement 2 est autorisée, et uniquement pour la durée spécifiée après l'élément <stopAfter>. Au cours de cette durée, cette instance de règle peut correspondre plusieurs fois au modèle de règle.
  • Actif
  • Autorisant toutes les valeurs de clé de groupement
L'heure définie dans <activationInterval> <activationTime> <start> L'état de la règle n'a connu aucun changement. Il est identique à l'état initial.
La méthode activate()
L'événement A, défini dans <activationInterval> <activateOnEvent>
L'événement A[1], défini dans <activationByGroupingKey> <activateOnEvent> (sans <stopAfter>)
L'événement A[2], défini dans <activateOnEvent> (avec <stopAfter>)
  • Actif
  • Autorisant toutes les valeurs de clé de groupement qui ont déclenché les instances de règle en fonction des définitions <activationByGroupingKey> <activateOnEvent>
L'heure définie dans <activationInterval> <activationTime> <start> L'état de la règle n'a connu aucun changement. Il est identique à l'état initial.
La méthode activate()
L'événement A, défini dans <activationInterval> <activateOnEvent> Toutes les valeurs de clé de groupement sont autorisées.
L'événement A[1], défini dans <activationByGroupingKey> <activateOnEvent> (sans <stopAfter>)
  • La valeur de clé de groupement 1 est autorisée, en plus des valeurs précédemment autorisées.
  • Lorsque cette instance de règle correspond au modèle de règle, la valeur de clé de groupement 1 n'est plus autorisée.
L'événement A[2], défini dans <activateOnEvent> (avec <stopAfter>)
  • La valeur de clé de groupement 2 est désormais autorisée, en plus des valeurs précédemment autorisées.
  • Elle l'est uniquement pour la durée spécifiée après l'élément <stopAfter>.
  • Au cours de cette durée, cette instance de règle peut correspondre plusieurs fois au modèle de règle.
  • Actif
  • Autorisant toutes les clés de groupement, exceptées celles qui ne sont pas autorisées par les définitions <activationByGroupingKey> <deactivateOnEvent>
L'heure définie dans <activationInterval> <activationTime> <start> L'état de la règle n'a connu aucun changement. Il est identique à l'état initial.
La méthode activate()
L'événement A, défini dans <activationInterval> <activateOnEvent> Toutes les valeurs de clé de groupement sont autorisées.
L'événement A[1], défini dans <activationByGroupingKey> <activateOnEvent> (sans <stopAfter>) La valeur de clé de groupement 1 est autorisée, en plus des valeurs précédemment autorisées.
L'événement A[2], défini dans <activateOnEvent> (avec <stopAfter>) La valeur de clé de groupement 2 est désormais autorisée, en plus des valeurs précédemment autorisées.
Tableau 3. Changements d'état d'une règle en fonction des différentes définitions de désactivation
Etat initial de la règle L'état de la règle est potentiellement affecté par Etat final de la règle
Inactif L'heure définie dans <activationInterval> <activationTime> <stop> L'état de la règle n'a connu aucun changement. Il est identique à l'état initial.
La méthode deactivate()
L'événement D, défini dans <activationInterval> <deactivateOnEvent>
L'événement D[1], défini dans <activationByGroupingKey> <deactivateOnEvent>
La durée définie dans <activationByGroupingKey> <activateOnEvent> <stopAfter> se termine pour l'événement A[2]
  • Actif
  • Autorisant toutes les valeurs de clé de groupement
L'heure définie dans <activationInterval> <activationTime> <stop>
  1. Toutes les instances de règle sont désactivées.
  2. Les actions <onDeactivation> sont exécutées.
  3. La règle est désactivée.
La méthode deactivate()
L'événement D, défini dans <activationInterval> <deactivateOnEvent>
L'événement D[1], défini dans <activationByGroupingKey> <deactivateOnEvent>
  • La valeur de clé de groupement 1 n'est plus autorisée.
  • Si l'instance de règle comportant une valeur de clé de groupement 1 est active, elle est désactivée.
La durée définie dans <activationByGroupingKey> <activateOnEvent> <stopAfter> se termine pour l'événement A[2] L'instance de règle comportant une valeur de clé de groupement 2 est désactivée.
  • Actif
  • Autorisant toutes les valeurs de clé de groupement qui ont déclenché les instances de règle en fonction des définitions <activationByGroupingKey> <activateOnEvent>
L'heure définie dans <activationInterval> <activationTime> <stop>
  1. Toutes les instances de règle sont désactivées.
  2. Les actions <onDeactivation> sont exécutées.
  3. La règle est désactivée.
La méthode deactivate()
L'événement D, défini dans <activationInterval> <deactivateOnEvent>
L'événement D[1], défini dans <activationByGroupingKey> <deactivateOnEvent>
  • La valeur de clé de groupement 1 n'est plus autorisée.
  • Si l'instance de règle comportant une valeur de clé de groupement 1 est active, elle est désactivée.
La durée définie dans <activationByGroupingKey> <activateOnEvent> <stopAfter> se termine pour l'événement A[2]
  • La valeur de clé de groupement 2 n'est plus autorisée.
  • L'instance de règle comportant une valeur de clé de groupement 2 est désactivée.
  • Actif
  • Autorisant toutes les clés de groupement, exceptées celles qui ne sont pas autorisées par les définitions <activationByGroupingKey> <deactivateOnEvent>
L'heure définie dans <activationInterval> <activationTime> <stop>
  1. Toutes les instances de règle sont désactivées.
  2. Les actions <onDeactivation> sont exécutées.
  3. La règle est désactivée.
La méthode deactivate()
L'événement D, défini dans <activationInterval> <deactivateOnEvent>
L'événement D[1], défini dans <activationByGroupingKey> <deactivateOnEvent>
  • La valeur de clé de groupement 1 n'est plus autorisée.
  • Si l'instance de règle comportant une valeur de clé de groupement 1 est active, elle est désactivée.
La durée définie dans <activationByGroupingKey> <activateOnEvent> <stopAfter> se termine pour l'événement A[2] L'instance de règle comportant une valeur de clé de groupement 2 est désactivée.