O elemento <activationByGroupingKey> contém elementos que especificam os eventos que podem ativar e desativar uma instância de regra definida pelo elemento <groupingKey>.Como o elemento <groupingKey> não é válido para as regras de filtragem e de cronômetro, o elemento <activationByGroupingKey> não se aplica a essas regras.
A função fornecida pelo elemento <activationByGroupingKey> é para ser utilizada em regras na qual você define uma chave de agrupamento. Ela permite controlar a ativação e a desativação de instâncias de regras com base na chave de agrupamento. Quando você codifica o elemento <activationByGroupingKey>, cada instância da regra pode ser ativada e desativada individualmente com base nas condições <activateOnEvent> e <deactivateOnEvent> no <activationByGroupingKey>.
O exemplo a seguir ilustra a utilização do elemento <activationByGroupingKey> em uma regra de computação.
<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> não possui atributos.
<activationByGroupingKey> contém os elementos a seguir.
Os elementos devem ser codificados na ordem mostrada. Se um elemento for opcional, ele não precisará ser codificado, mas todos os elementos que forem codificados deverão seguir a ordem correta.
Elemento | Obrigatório ou opcional? |
---|---|
<activateOnEvent> | Opcional. Ocorrência 0 ou 1 é permitida. |
<deactivateOnEvent> | Opcional. Ocorrência 0 ou 1 é permitida. |
O comportamento da regra pode ser diferente com base na atividade da regra atual e nas interações entre as definições de <activateOnEvent> e <deactivateOnEvent> nos elementos <activationInterval> e <activationByGroupingKey>. O exemplo a seguir ilustra como essas definições podem interagir.
Nesse exemplo, foi definida uma regra de duplicata para remover os eventos de sistemas que estão no modo de manutenção e para fornecer, no final do período de manutenção, um relatório de resumo com o número de eventos removidos.
Por padrão, uma regra na qual uma chave de agrupamento está definida permite que todos os valores da chave de agrupamento sejam processados. Portanto, quando os eventos atendem aos critérios de seleção de evento da regra, todas as instâncias de regras ficam ativas e prontas para aceitar esses eventos de acordo com qualquer valor da chave de agrupamento. O intervalo de ativação da regra é o mesmo que seria se a regra não tivesse uma chave de agrupamento porque, em essência, todos os eventos que atenderem aos critérios de seleção de eventos da regra serão processados.
<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>
Em algumas situações, é possível que você queira controlar quais instâncias de regras ficarão ativas e quando ficarão ativas. Nesses casos, é necessário codificar o elemento <activationByGroupingKey>.
<activationByGroupingKey> <activateOnEvent> <eventType type="StartMaintenanceMode"/> <stopAfter duration="PT2H" unit="ISO-8601"/> </activateOnEvent> <deactivateOnEvent> <eventType type="StopMaintenanceMode"/> </deactivateOnEvent> </activationByGroupingKey>
Estado inicial da regra | O estado da regra é afetado potencialmente pelo | Estado final da regra |
---|---|---|
Inativo | Tempo definido em <activationInterval> <activationTime> <start> |
|
Método activate() | ||
Evento A, definido em <activationInterval> <activateOnEvent> | ||
Evento A[1], definido em <activationByGroupingKey> <activateOnEvent> (sem <stopAfter>) |
|
|
Evento A[2], definido em <activateOnEvent> (com <stopAfter>) |
|
|
|
Tempo definido em <activationInterval> <activationTime> <start> | Não ocorreu nenhuma alteração no estado da regra. É o mesmo estado da regra de início. |
Método activate() | ||
Evento A, definido em <activationInterval> <activateOnEvent> | ||
Evento A[1], definido em <activationByGroupingKey> <activateOnEvent> (sem <stopAfter>) | ||
Evento A[2], definido em <activateOnEvent> (com <stopAfter>) | ||
|
Tempo definido em <activationInterval> <activationTime> <start> | Não ocorreu nenhuma alteração no estado da regra. É o mesmo estado da regra de início. |
Método activate() | ||
Evento A, definido em <activationInterval> <activateOnEvent> | Todos os valores da chave de agrupamento são permitidos. | |
Evento A[1], definido em <activationByGroupingKey> <activateOnEvent> (sem <stopAfter>) |
|
|
Evento A[2], definido em <activateOnEvent> (com <stopAfter>) |
|
|
|
Tempo definido em <activationInterval> <activationTime> <start> | Não ocorreu nenhuma alteração no estado da regra. É o mesmo estado da regra de início. |
Método activate() | ||
Evento A, definido em <activationInterval> <activateOnEvent> | Todos os valores da chave de agrupamento são permitidos. | |
Evento A[1], definido em <activationByGroupingKey> <activateOnEvent> (sem <stopAfter>) | Agora a chave de agrupamento de valor 1 é permitida, além dos valores permitidos anteriormente. | |
Evento A[2], definido em <activateOnEvent> (com <stopAfter>) | Agora a chave de agrupamento de valor 2 é permitida, além dos valores permitidos anteriormente. |
Estado inicial da regra | O estado da regra é afetado potencialmente pelo | Estado final da regra |
---|---|---|
Inativo | Tempo definido em <activationInterval> <activationTime> <stop> | Não ocorreu nenhuma alteração no estado da regra. É o mesmo estado da regra de início. |
Método deactivate() | ||
Evento D, definido em <activationInterval> <deactivateOnEvent> | ||
Evento D[1], definido em <activationByGroupingKey> <deactivateOnEvent> | ||
Tempo de duração definido em <activationByGroupingKey> <activateOnEvent> <stopAfter> termina para o evento A[2] | ||
|
Tempo definido em <activationInterval> <activationTime> <stop> |
|
Método deactivate() | ||
Evento D, definido em <activationInterval> <deactivateOnEvent> | ||
Evento D[1], definido em <activationByGroupingKey> <deactivateOnEvent> |
|
|
Tempo de duração definido em <activationByGroupingKey> <activateOnEvent> <stopAfter> termina para o evento A[2] | A instância de regra com uma chave de agrupamento de valor 2 é desativada. | |
|
Tempo definido em <activationInterval> <activationTime> <stop> |
|
Método deactivate() | ||
Evento D, definido em <activationInterval> <deactivateOnEvent> | ||
Evento D[1], definido em <activationByGroupingKey> <deactivateOnEvent> |
|
|
Tempo de duração definido em <activationByGroupingKey> <activateOnEvent> <stopAfter> termina para o evento A[2] |
|
|
|
Tempo definido em <activationInterval> <activationTime> <stop> |
|
Método deactivate() | ||
Evento D, definido em <activationInterval> <deactivateOnEvent> | ||
Evento D[1], definido em <activationByGroupingKey> <deactivateOnEvent> |
|
|
Tempo de duração definido em <activationByGroupingKey> <activateOnEvent> <stopAfter> termina para o evento A[2] | A instância de regra com uma chave de agrupamento de valor 2 é desativada. |