Elemento activationByGroupingKey

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.

Detalhes

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>

Atributos

<activationByGroupingKey> não possui atributos.

Contido em

<activationByGroupingKey> está contido no seguinte elemento:

Contém

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

Tabela 1. Elementos Contidos no Elemento <activationByGroupingKey>
Elemento Obrigatório ou opcional?
<activateOnEvent> Opcional. Ocorrência 0 ou 1 é permitida.
<deactivateOnEvent> Opcional. Ocorrência 0 ou 1 é permitida.

Relacionamento entre os Elementos <activationInterval> e <activationByGroupingKey>

Os elementos <activateOnEvent> e <deactivateOnEvent> estão contidos nestes dois elementos:
  • <activationInterval>
  • <activationByGroupingKey>, que também está contido no <activationInterval>

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.

No exemplo a seguir, a chave de agrupamento é hostname e as definições no elemento <activationInterval> especificam as seguintes ações:
  1. Ativam todas as instâncias de regras quando um evento do tipo StartMaintenanceModeAllHosts é recebido.
  2. Desativam todas as instâncias de regras depois de 2 horas ou quando um evento do tipo StopMaintenanceModeAllHosts é recebido.
<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>.

O exemplo a seguir estende o exemplo anterior e ilustra como é possível utilizar o valor da chave de agrupamento para selecionar quais instâncias de regras podem ser processadas. As definições no elemento <activationByGroupingKey> especificam as seguintes ações:
  1. Permitem que as instâncias de regras para nomes específicos do host sejam processadas quando eventos do tipo StartMaintenanceMode são recebidos para esses nomes de host.
  2. Desativam essas instâncias de regras depois de 2 horas de ativação ou quando um evento do tipo StopMaintenanceMode é recebido para o respectivo nome do host.
    <activationByGroupingKey>
      <activateOnEvent>
        <eventType type="StartMaintenanceMode"/>
        <stopAfter duration="PT2H" unit="ISO-8601"/>
      </activateOnEvent>
      <deactivateOnEvent>
        <eventType type="StopMaintenanceMode"/>
      </deactivateOnEvent>
    		</activationByGroupingKey>
As instruções a seguir resumem o que acontece quando você codifica o elemento <activationByGroupingKey>:
  • Quando o elemento <activateOnEvent> é codificado no elemento <activationByGroupingKey>, apenas os eventos que compartilham o valor da chave de agrupamento do evento que atende à condição <activationByGroupingKey> <activateOnEvent> podem ser processados.
  • Quando o elemento <deactivateOnEvent> é codificado no elemento <activationByGroupingKey>, os eventos que compartilham o valor da chave de agrupamento do evento que atende à condição <activationByGroupingKey> <deactivateOnEvent> não podem ser processados.

O Efeito de Diferentes Definições de Ativação e Desativação no Estado da Regra

Tabela 2 e Tabela 3 mostram como o estado de uma regra é afetado por diferentes definições de ativação e desativação. Nessas tabelas, as seguintes convenções são utilizadas:
  • A é um evento de ativação.
  • Na notação "A[x], " x representa o valor da chave de agrupamento. Por exemplo, A[1] é um evento de ativação com uma chave de agrupamento de valor 1.
  • D é o evento de desativação.
  • Na notação "D[x], " x representa o valor da chave de agrupamento. Por exemplo, D[1] é um evento de desativação com uma chave de agrupamento de valor 1.
Tabela 2. Alterações do Estado da Regra com Base em Diferentes Definições de Ativação
Estado inicial da regra O estado da regra é afetado potencialmente pelo Estado final da regra
Inativo Tempo definido em <activationInterval> <activationTime> <start>
  1. A regra é ativada.
  2. As ações de <onActivation> são executadas.
  3. Todos os valores da chave de agrupamento são permitidos.
Método activate()
Evento A, definido em <activationInterval> <activateOnEvent>
Evento A[1], definido em <activationByGroupingKey> <activateOnEvent> (sem <stopAfter>)
  1. A regra é ativada.
  2. As ações de <onActivation> são executadas.
  3. Apenas a chave de agrupamento de valor 1 é permitida. Quando o padrão de regra é correspondido para essa instância de regra, a chave de agrupamento de valor 1 não é mais permitida.
Evento A[2], definido em <activateOnEvent> (com <stopAfter>)
  1. A regra é ativada.
  2. As ações de <onActivation> são executadas.
  3. Apenas a chave de agrupamento de valor 2 é permitida e somente durante o valor especificado pelo elemento <stopAfter>. O padrão de regra para essa instância de regra pode ser correspondido várias vezes nessa duração.
  • Ativo
  • Permite todos os valores da chave de agrupamento
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>)
  • Ativo
  • Permite apenas valores da chave de agrupamento que ativaram instâncias de regras com base nas definições <activationByGroupingKey> <activateOnEvent>
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.
  • Quando o padrão de regra é correspondido para essa instância de regra, a chave de agrupamento de valor 1 não é mais permitida.
Evento A[2], definido em <activateOnEvent> (com <stopAfter>)
  • Agora a chave de agrupamento de valor 2 é permitida, além dos valores permitidos anteriormente.
  • Esse valor será permitido apenas durante o valor especificado pelo elemento <stopAfter>.
  • O padrão de regra para essa instância de regra pode ser correspondido várias vezes nessa duração.
  • Ativo
  • Permite todos os valores da chave de agrupamento, exceto aqueles não permitidos com base nas definições <activationByGroupingKey> <deactivateOnEvent>
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.
Tabela 3. Alterações do Estado da Regra com Base em Diferentes Definições de Desativação
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]
  • Ativo
  • Permite todos os valores da chave de agrupamento
Tempo definido em <activationInterval> <activationTime> <stop>
  1. Todas as instâncias de regras são desativadas.
  2. As ações de <onDeactivation> são executadas.
  3. A regra é desativada.
Método deactivate()
Evento D, definido em <activationInterval> <deactivateOnEvent>
Evento D[1], definido em <activationByGroupingKey> <deactivateOnEvent>
  • A chave de agrupamento de valor 1 não é mais permitida.
  • Se a instância de regra com uma chave de agrupamento de valor 1 estiver ativa, ela será desativada.
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.
  • Ativo
  • Permite apenas valores da chave de agrupamento que ativaram instâncias de regras com base nas definições <activationByGroupingKey> <activateOnEvent>
Tempo definido em <activationInterval> <activationTime> <stop>
  1. Todas as instâncias de regras são desativadas.
  2. As ações de <onDeactivation> são executadas.
  3. A regra é desativada.
Método deactivate()
Evento D, definido em <activationInterval> <deactivateOnEvent>
Evento D[1], definido em <activationByGroupingKey> <deactivateOnEvent>
  • A chave de agrupamento de valor 1 não é mais permitida.
  • Se a instância de regra com uma chave de agrupamento de valor 1 estiver ativa, ela será desativada.
Tempo de duração definido em <activationByGroupingKey> <activateOnEvent> <stopAfter> termina para o evento A[2]
  • A chave de agrupamento de valor 2 não é mais permitida.
  • A instância de regra com uma chave de agrupamento de valor 2 é desativada.
  • Ativo
  • Permite todos os valores da chave de agrupamento, exceto aqueles não permitidos com base nas definições <activationByGroupingKey> <deactivateOnEvent>
Tempo definido em <activationInterval> <activationTime> <stop>
  1. Todas as instâncias de regras são desativadas.
  2. As ações de <onDeactivation> são executadas.
  3. A regra é desativada.
Método deactivate()
Evento D, definido em <activationInterval> <deactivateOnEvent>
Evento D[1], definido em <activationByGroupingKey> <deactivateOnEvent>
  • A chave de agrupamento de valor 1 não é mais permitida.
  • Se a instância de regra com uma chave de agrupamento de valor 1 estiver ativa, ela será desativada.
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.