Elemento activationByGroupingKey

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.

Dettagli

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>

Attributi

<activationByGroupingKey> non ha attributi.

Contenuto in

<activationByGroupingKey> è contenuto nel seguente elemento:

Contiene

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

Tabella 1. Elementi contenuti nell'elemento <activationByGroupingKey>
Elemento Obbligatorio o facoltativo?
<activateOnEvent> Facoltativo. E' consentito 0 o 1.
<deactivateOnEvent> Facoltativo. E' consentito 0 o 1.

Relazione tra gli elementi <activationInterval> e <activationByGroupingKey>

Gli elementi <activateOnEvent> e <deactivateOnEvent>sono contenuti in entrambi gli elementi:
  • <activationInterval>
  • <activationByGroupingKey>, che è anche contenuto in <activationInterval>

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.

Nell'esempio che segue, la chiave di raggruppamento è hostname e le definizioni dell'elemento <activationInterval> specificano le seguenti azioni:
  1. Attivare tutte le istanze della regola quando viene ricevuto un evento del tipo StartMaintenanceModeAllHosts.
  2. Disattivare tutte le istanze della regola dopo 2 ore o quando viene ricevuto un evento del tipo 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>
  <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>.

L'esempio che segue estende l'esempio precedente ed illustra come sia possibile utilizzare il valore della chiave di raggruppamento per selezionare le istanze della regola consentite per l'elaborazione. Le definizioni all'interno dell'elemento <activationByGroupingKey> specificano le seguenti azioni:
  1. Consentire l'elaborazione di istanze della regola per nomi host specifici quando si ricevono eventi del tipo StartMaintenanceMode per quei nomi host.
  2. Disattivare tutte le istanze della regola dopo 2 ore o quando viene ricevuto un evento del tipo StopMaintenanceMode per il relativo nome host.
    		<activationByGroupingKey>
      			<activateOnEvent>
        <eventType type="StartMaintenanceMode"/>
        <stopAfter duration="PT2H" unit="ISO-8601"/>
      			</activateOnEvent>
      <deactivateOnEvent>
        <eventType type="StopMaintenanceMode"/>
      </deactivateOnEvent>
    		</activationByGroupingKey>
Le istruzioni che seguono sono di riepilogo a ciò che si verifica quando viene codificato l'elemento <activationByGroupingKey>:
  • Quando l'elemento <activateOnEvent> viene codificato all'interno dell'elemento <activationByGroupingKey>, è consentita l'elaborazione solo degli eventi che condividono il valore della chiave di raggruppamento dell'evento che ha risposto alla condizione <activationByGroupingKey> <activateOnEvent>.
  • Quando l'elemento <deactivateOnEvent> viene codificato all'interno dell'elemento <activationByGroupingKey>, non è consentita l'elaborazione degli eventi che condividono il valore della chiave di raggruppamento dell'evento che ha risposto alla condizione <activationByGroupingKey> <deactivateOnEvent>.

L'effetto delle diverse definizioni di attivazione e disattivazione sullo stato della regola

Tabella 2 e Tabella 3 mostra come lo stato di una regola sia influenzato dalle diverse definizioni di attivazione e disattivazione. In queste tabelle, vengono utilizzate le seguenti convenzioni:
  • A è un evento di attivazione.
  • Nella notazione "A[x], " x rappresenta il valore della chiave di raggruppamento. Ad esempio, A[1] è un evento di attivazione con un valore della chiave di raggruppamento equivalente a 1.
  • D è un evento di disattivazione.
  • Nella notazione "D[x], " x rappresenta il valore della chiave di raggruppamento. Ad esempio, D[1] è un evento di disattivazione con un valore della chiave di raggruppamento equivalente a 1.
Tabella 2. Modifiche allo stato della regola basate su definizioni di attivazione differenti
Stato della regola iniziale Lo stato della regola è potenzialmente influenzato da Stato della regola finale
Inattivo Ora definita in <activationInterval> <activationTime> <start>
  1. La regola è attivata.
  2. Le azioni <onActivation> sono in esecuzione.
  3. Sono consentiti tutti i valori della chiave di raggruppamento.
Metodo activate()
Evento A, definito all'interno di <activationInterval> <activateOnEvent>
Evento A[1], definito in <activationByGroupingKey> <activateOnEvent> (senza <stopAfter>)
  1. La regola è attivata.
  2. Le azioni <onActivation> sono in esecuzione.
  3. E’ consentito solo il valore 1 della chiave di raggruppamento. Quando lo schema della regola è abbinato a questa istanza della regola, il valore 1 della chiave di raggruppamento non è più consentito.
Evento A[2], definito in <activateOnEvent> (con <stopAfter>)
  1. La regola è attivata.
  2. Le azioni <onActivation> sono in esecuzione.
  3. Solo il valore 2 della chiave di raggruppamento è consentito ed è consentito solo per la durata specificata dall'elemento <stopAfter>. Lo schema della regola per questa istanza della regola può essere abbinato più volte per tutta la durata.
  • Attivo
  • Consentiti tutti i valori della chiave di raggruppamento
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>)
  • Attivo
  • Consentiti solo valori della chiave di raggruppamento cha hanno attivato istanze della regola basate sulle definizioni <activationByGroupingKey> <activateOnEvent>
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 della chiave 1 di raggruppamento è ora consentito oltre ai valori della chiave di raggruppamento precedentemente consentiti.
  • Quando lo schema della regola è abbinato a questa istanza della regola, il valore 1 della chiave di raggruppamento non è più consentito.
Evento A[2], definito in <activateOnEvent> (con <stopAfter>)
  • Il valore della chiave 2 di raggruppamento è ora consentito oltre ai valori della chiave di raggruppamento precedentemente consentiti.
  • Questo valore è consentito solo per la durata specificata dall'elemento <stopAfter>.
  • Lo schema della regola per questa istanza della regola può essere abbinato più volte per tutta la durata.
  • Attivo
  • Consentiti tutti i valori della chiave di raggruppamento tranne quelli non consentiti in base alle definizioni <activationByGroupingKey> <deactivateOnEvent>
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.
Tabella 3. Modifiche allo stato della regola in base a differenti definizioni di disattivazione
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]
  • Attivo
  • Consentiti tutti i valori della chiave di raggruppamento
Ora definita in <activationInterval> <activationTime> <stop>
  1. Tutte le istanze della regola vengono disattivate.
  2. Le azioni <onDeactivation> sono in esecuzione.
  3. La regola è disattivata.
Metodo deactivate()
Evento D, definito in <activationInterval> <deactivateOnEvent>
Evento D[1], definito in <activationByGroupingKey> <deactivateOnEvent>
  • Il valore 1 della chiave di raggruppamento non è più consentito.
  • Se è attiva l'istanza della regola con valore di raggruppamento equivalente a 1, essa viene disattivata.
La durata definita in <activationByGroupingKey> <activateOnEvent> <stopAfter> termina per evento A[2] L'istanza della regola con valore di raggruppamento equivalente a 2 è disattivata.
  • Attivo
  • Consentiti solo valori della chiave di raggruppamento cha hanno attivato istanze della regola basate sulle definizioni <activationByGroupingKey> <activateOnEvent>
Ora definita in <activationInterval> <activationTime> <stop>
  1. Tutte le istanze della regola vengono disattivate.
  2. Le azioni <onDeactivation> sono in esecuzione.
  3. La regola è disattivata.
Metodo deactivate()
Evento D, definito in <activationInterval> <deactivateOnEvent>
Evento D[1], definito in <activationByGroupingKey> <deactivateOnEvent>
  • Il valore 1 della chiave di raggruppamento non è più consentito.
  • Se è attiva l'istanza della regola con valore di raggruppamento equivalente a 1, essa viene disattivata.
La durata definita in <activationByGroupingKey> <activateOnEvent> <stopAfter> termina per evento A[2]
  • Il valore 2 della chiave di raggruppamento non è più consentito.
  • L'istanza della regola con valore di raggruppamento 2 viene disattivata.
  • Attivo
  • Consentiti tutti i valori della chiave di raggruppamento tranne quelli non consentiti in base alle definizioni <activationByGroupingKey> <deactivateOnEvent>
Ora definita in <activationInterval> <activationTime> <stop>
  1. Tutte le istanze della regola vengono disattivate.
  2. Le azioni <onDeactivation> sono in esecuzione.
  3. La regola è disattivata.
Metodo deactivate()
Evento D, definito in <activationInterval> <deactivateOnEvent>
Evento D[1], definito in <activationByGroupingKey> <deactivateOnEvent>
  • Il valore 1 della chiave di raggruppamento non è più consentito.
  • Se è attiva l'istanza della regola con valore di raggruppamento equivalente a 1, essa viene disattivata.
La durata definita in <activationByGroupingKey> <activateOnEvent> <stopAfter> termina per evento A[2] L'istanza della regola con valore di raggruppamento equivalente a 2 è disattivata.