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.
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>
<activationByGroupingKey> ne possède aucun attribut.
<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.
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. |
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.
<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>.
<activationByGroupingKey> <activateOnEvent> <eventType type="StartMaintenanceMode"/> <stopAfter duration="PT2H" unit="ISO-8601"/> </activateOnEvent> <deactivateOnEvent> <eventType type="StopMaintenanceMode"/> </deactivateOnEvent> </activationByGroupingKey>
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> |
|
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>) |
|
|
|
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>) | ||
|
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>) |
|
|
L'événement A[2], défini dans <activateOnEvent> (avec <stopAfter>) |
|
|
|
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. |
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] | ||
|
L'heure définie dans <activationInterval> <activationTime> <stop> |
|
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] | L'instance de règle comportant une valeur de clé de groupement 2 est désactivée. | |
|
L'heure définie dans <activationInterval> <activationTime> <stop> |
|
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] |
|
|
|
L'heure définie dans <activationInterval> <activationTime> <stop> |
|
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] | L'instance de règle comportant une valeur de clé de groupement 2 est désactivée. |