L'elemento <activationByGroupingKey> contiene elementi che specificano gli eventi che possono attivare e disattivare un'istanza della regola definita dall'elemento <groupingKey>. Poiché l'elemento <groupingKey> non è valido per le regole di filtro e timer, l'elemento <activationByGroupingKey> non si applica a queste regole.
La funzione fornita dall'elemento <activationByGroupingKey> va utilizzata nelle regole in cui si definisce una chiave di raggruppamento. Essa consente di controllare l'attivazione e la disattivazione di istanze della regola basate sulla chiave di raggruppamento. Quando viene codificato l'elemento <activationByGroupingKey>, ogni istanza della regola può essere attivata e disattivata singolarmente in base alle condizioni <activateOnEvent> e <deactivateOnEvent> all'interno di <activationByGroupingKey>.
L'esempio che segue illustra l'uso dell'elemento <activationByGroupingKey> all'interno della regola di calcolo.
<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> non ha attributi.
<activationByGroupingKey> contiene i seguenti elementi.
Gli elementi devono essere codificati nell'ordine visualizzato. Se un elemento è facoltativo, non deve essere codificato ma tutti gli elementi codificati devono seguire l'ordine corretto.
Elemento | Obbligatorio o facoltativo? |
---|---|
<activateOnEvent> | Facoltativo. E' consentito 0 o 1. |
<deactivateOnEvent> | Facoltativo. E' consentito 0 o 1. |
L'attività della regola può differire in base all'attività della regola corrente e in base alle interazioni tra le definizioni <activateOnEvent> e <deactivateOnEvent> all'interno degli elementi <activationInterval> e <activationByGroupingKey>. L'esempio che segue illustra come queste definizioni possono interagire.
In questo esempio, viene definita una regola duplicata per eliminare gli eventi dai sistemi che sono in fase di manutenzione e per fornire, alla fine del periodo di manutenzione, un prospetto di riepilogo del numero di eventi che sono stati soppressi.
L'impostazione predefinita prevede che una regola in cui è definita una chiave di raggruppamento consenta l'elaborazione di tutti i valori della chiave di raggruppamento. Di conseguenza quando gli eventi rispondono ai criteri di selezione degli eventi per la regola, tutte le istanze della regola sono attive e pronte per accettare questi eventi in base a qualsiasi valore della chiave di raggruppamento. L'intervallo di attivazione per la regola è lo stesso di quello che viene impostato se la regola non ha una chiave di raggruppamento in quanto vengono elaborati tutti gli eventi che rispondono ai criteri di selezione eventi per la regola.
<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>
In alcune situazioni, potrebbe essere necessario controllare quali istanze della regola diventano attive e quando diventano attive. Per queste situazioni, è necessario codificare l'elemento <activationByGroupingKey>.
<activationByGroupingKey> <activateOnEvent> <eventType type="StartMaintenanceMode"/> <stopAfter duration="PT2H" unit="ISO-8601"/> </activateOnEvent> <deactivateOnEvent> <eventType type="StopMaintenanceMode"/> </deactivateOnEvent> </activationByGroupingKey>
Stato della regola iniziale | Lo stato della regola è potenzialmente influenzato da | Stato della regola finale |
---|---|---|
Inattivo | Ora definita in <activationInterval> <activationTime> <start> |
|
Metodo activate() | ||
Evento A, definito all'interno di <activationInterval> <activateOnEvent> | ||
Evento A[1], definito in <activationByGroupingKey> <activateOnEvent> (senza <stopAfter>) |
|
|
Evento A[2], definito in <activateOnEvent> (con <stopAfter>) |
|
|
|
Ora definita in <activationInterval> <activationTime> <start> | Non si sono verificate modifiche in questo stato della regola. E' uguale allo stato della regola di avvio. |
Metodo activate() | ||
Evento A, definito all'interno di <activationInterval> <activateOnEvent> | ||
Evento A[1], definito in <activationByGroupingKey> <activateOnEvent> (senza <stopAfter>) | ||
Evento A[2], definito in <activateOnEvent> (con <stopAfter>) | ||
|
Ora definita in <activationInterval> <activationTime> <start> | Non si sono verificate modifiche in questo stato della regola. E' uguale allo stato della regola di avvio. |
Metodo activate() | ||
Evento A, definito all'interno di <activationInterval> <activateOnEvent> | Sono consentiti tutti i valori della chiave di raggruppamento. | |
Evento A[1], definito in <activationByGroupingKey> <activateOnEvent> (senza <stopAfter>) |
|
|
Evento A[2], definito in <activateOnEvent> (con <stopAfter>) |
|
|
|
Ora definita in <activationInterval> <activationTime> <start> | Non si sono verificate modifiche in questo stato della regola. E' uguale allo stato della regola di avvio. |
Metodo activate() | ||
Evento A, definito all'interno di <activationInterval> <activateOnEvent> | Sono consentiti tutti i valori della chiave di raggruppamento. | |
Evento A[1], definito in <activationByGroupingKey> <activateOnEvent> (senza <stopAfter>) | Il valore 1 della chiave di raggruppamento è ora consentito oltre ai valori della chiave di raggruppamento precedentemente consentiti. | |
Evento A[2], definito in <activateOnEvent> (con <stopAfter>) | Il valore 2 della chiave di raggruppamento è ora consentito oltre ai valori della chiave di raggruppamento precedentemente consentiti. |
Stato della regola iniziale | Lo stato della regola è potenzialmente influenzato da | Stato della regola finale |
---|---|---|
Inattivo | Ora definita in <activationInterval> <activationTime> <stop> | Non si sono verificate modifiche in questo stato della regola. E' uguale allo stato della regola di avvio. |
Metodo deactivate() | ||
Evento D, definito in <activationInterval> <deactivateOnEvent> | ||
Evento D[1], definito in <activationByGroupingKey> <deactivateOnEvent> | ||
La durata definita in <activationByGroupingKey> <activateOnEvent> <stopAfter> termina per evento A[2] | ||
|
Ora definita in <activationInterval> <activationTime> <stop> |
|
Metodo deactivate() | ||
Evento D, definito in <activationInterval> <deactivateOnEvent> | ||
Evento D[1], definito in <activationByGroupingKey> <deactivateOnEvent> |
|
|
La durata definita in <activationByGroupingKey> <activateOnEvent> <stopAfter> termina per evento A[2] | L'istanza della regola con valore di raggruppamento equivalente a 2 è disattivata. | |
|
Ora definita in <activationInterval> <activationTime> <stop> |
|
Metodo deactivate() | ||
Evento D, definito in <activationInterval> <deactivateOnEvent> | ||
Evento D[1], definito in <activationByGroupingKey> <deactivateOnEvent> |
|
|
La durata definita in <activationByGroupingKey> <activateOnEvent> <stopAfter> termina per evento A[2] |
|
|
|
Ora definita in <activationInterval> <activationTime> <stop> |
|
Metodo deactivate() | ||
Evento D, definito in <activationInterval> <deactivateOnEvent> | ||
Evento D[1], definito in <activationByGroupingKey> <deactivateOnEvent> |
|
|
La durata definita in <activationByGroupingKey> <activateOnEvent> <stopAfter> termina per evento A[2] | L'istanza della regola con valore di raggruppamento equivalente a 2 è disattivata. |